1. Đâu là một kỹ thuật để ước tính thời gian và chi phí của một dự án phần mềm bằng cách chia nhỏ công việc thành các phần nhỏ hơn?
A. PERT (Program Evaluation and Review Technique)
B. Phân tích SWOT
C. Phân tích PEST
D. Ma trận RACI
2. Trong kiểm thử phần mềm, kiểm thử đơn vị (unit testing) được thực hiện bởi ai?
A. Người dùng cuối.
B. Nhà kiểm thử độc lập.
C. Lập trình viên.
D. Quản lý dự án.
3. Đâu là định nghĩa chính xác nhất về `nợ kỹ thuật` (technical debt) trong phát triển phần mềm?
A. Số tiền mà dự án nợ các nhà cung cấp bên ngoài.
B. Chi phí phát sinh khi chọn một giải pháp dễ dàng trong ngắn hạn thay vì một giải pháp tốt hơn trong dài hạn.
C. Số lượng lỗi (bugs) còn tồn tại trong phần mềm sau khi triển khai.
D. Thời gian cần thiết để hoàn thành tài liệu kỹ thuật cho dự án.
4. Đâu là một công cụ để quản lý và theo dõi các thay đổi trong mã nguồn của một dự án phần mềm?
A. Microsoft Word
B. Microsoft Excel
C. Git
D. Microsoft PowerPoint
5. Đâu là một kỹ thuật để giảm thiểu rủi ro trong một dự án phần mềm bằng cách xác định, đánh giá và ưu tiên các rủi ro?
A. Quản lý rủi ro
B. Quản lý cấu hình
C. Quản lý thay đổi
D. Quản lý chất lượng
6. Trong lập trình hướng đối tượng (OOP), `tính đóng gói` (encapsulation) đề cập đến điều gì?
A. Khả năng một đối tượng kế thừa các thuộc tính và phương thức từ một đối tượng khác.
B. Khả năng che giấu các chi tiết triển khai bên trong của một đối tượng và chỉ cung cấp giao diện bên ngoài.
C. Khả năng một đối tượng có nhiều hình thức khác nhau.
D. Khả năng một đối tượng tự động giải phóng bộ nhớ khi không còn được sử dụng.
7. Trong kiểm thử phần mềm, đâu là sự khác biệt chính giữa kiểm thử alpha và kiểm thử beta?
A. Kiểm thử alpha được thực hiện bởi các nhà phát triển, trong khi kiểm thử beta được thực hiện bởi người dùng cuối
B. Kiểm thử alpha được thực hiện trong môi trường kiểm soát, trong khi kiểm thử beta được thực hiện trong môi trường thực tế
C. Kiểm thử alpha tập trung vào chức năng, trong khi kiểm thử beta tập trung vào hiệu suất
D. Kiểm thử alpha là kiểm thử hộp đen, trong khi kiểm thử beta là kiểm thử hộp trắng
8. Trong kiểm thử phần mềm, kiểm thử hộp đen (black-box testing) tập trung vào điều gì?
A. Kiểm tra cấu trúc code bên trong của phần mềm.
B. Kiểm tra các đường dẫn thực thi và luồng dữ liệu trong phần mềm.
C. Kiểm tra chức năng của phần mềm dựa trên đặc tả yêu cầu mà không cần biết cấu trúc bên trong.
D. Kiểm tra hiệu suất của phần mềm dưới tải trọng cao.
9. Trong ngữ cảnh phát triển phần mềm, `refactoring` có nghĩa là gì?
A. Viết lại toàn bộ mã nguồn từ đầu
B. Tối ưu hóa mã nguồn để cải thiện hiệu suất mà không thay đổi chức năng bên ngoài
C. Thêm các tính năng mới vào phần mềm
D. Sửa lỗi trong mã nguồn
10. Đâu là một loại giấy phép phần mềm cho phép người dùng sử dụng, sửa đổi và phân phối phần mềm một cách tự do?
A. Giấy phép độc quyền (Proprietary license)
B. Giấy phép dùng thử (Trial license)
C. Giấy phép nguồn mở (Open-source license)
D. Giấy phép thương mại (Commercial license)
11. Đâu là một phương pháp để cải thiện chất lượng phần mềm bằng cách liên tục kiểm tra và đánh giá các sản phẩm công việc?
A. Đảm bảo chất lượng phần mềm (Software Quality Assurance - SQA)
B. Quản lý dự án phần mềm (Software Project Management)
C. Phân tích yêu cầu phần mềm (Software Requirements Analysis)
D. Thiết kế phần mềm (Software Design)
12. Đâu là một kỹ thuật để xây dựng phần mềm bằng cách sử dụng các thành phần có thể tái sử dụng?
A. Phát triển hướng thành phần (Component-based development)
B. Phát triển hướng đối tượng (Object-oriented development)
C. Phát triển hướng dịch vụ (Service-oriented development)
D. Phát triển hướng dữ liệu (Data-oriented development)
13. Đâu là một phương pháp để đo lường kích thước của một dự án phần mềm?
A. Số lượng lập trình viên trong dự án
B. Số lượng dòng code (Lines of Code - LOC)
C. Số lượng máy chủ được sử dụng
D. Số lượng giờ làm việc của quản lý dự án
14. Yếu tố nào sau đây KHÔNG phải là một phần của quy trình Scrum?
A. Sprint Planning.
B. Daily Scrum.
C. Sprint Review.
D. Waterfall Phase.
15. Đâu là một loại biểu đồ thường được sử dụng để biểu diễn tiến độ của các công việc trong một dự án?
A. Biểu đồ Gantt
B. Biểu đồ Venn
C. Biểu đồ Pareto
D. Biểu đồ Scatter
16. Đâu là một phương pháp để xác thực người dùng bằng cách sử dụng nhiều yếu tố khác nhau?
A. Xác thực một yếu tố (Single-factor authentication)
B. Xác thực hai yếu tố (Two-factor authentication)
C. Xác thực đa yếu tố (Multi-factor authentication)
D. Xác thực không yếu tố
17. Đâu là lợi ích chính của việc sử dụng hệ thống quản lý phiên bản (version control system) như Git?
A. Tự động tạo tài liệu kỹ thuật cho dự án.
B. Cho phép nhiều người cùng làm việc trên một dự án một cách hiệu quả và theo dõi các thay đổi.
C. Tăng tốc độ biên dịch mã nguồn.
D. Tự động phát hiện và sửa lỗi trong mã nguồn.
18. Trong mô hình thác nước (Waterfall), giai đoạn nào sau đây diễn ra sau giai đoạn thiết kế?
A. Thu thập yêu cầu.
B. Kiểm thử.
C. Triển khai.
D. Hiện thực (Implementation).
19. Đâu là mục tiêu chính của việc sử dụng Agile trong phát triển phần mềm?
A. Tối đa hóa tài liệu và tuân thủ nghiêm ngặt kế hoạch ban đầu.
B. Nhanh chóng thích ứng với các thay đổi yêu cầu và cung cấp giá trị liên tục cho khách hàng.
C. Giảm thiểu sự tương tác của khách hàng trong suốt quá trình phát triển.
D. Hoàn thành dự án với chi phí thấp nhất có thể, bất kể chất lượng.
20. Đâu là một loại tấn công bảo mật mà kẻ tấn công cố gắng làm cho hệ thống không khả dụng đối với người dùng hợp pháp?
A. Tấn công SQL Injection
B. Tấn công CSRF (Cross-Site Request Forgery)
C. Tấn công XSS (Cross-Site Scripting)
D. Tấn công từ chối dịch vụ (Denial of Service - DoS)
21. Trong kiểm thử phần mềm, kiểm thử hồi quy (regression testing) được thực hiện khi nào?
A. Chỉ khi bắt đầu một dự án mới.
B. Sau khi sửa lỗi hoặc thêm tính năng mới để đảm bảo không gây ra lỗi mới.
C. Chỉ khi phát hiện ra lỗi nghiêm trọng.
D. Trước khi triển khai phần mềm cho người dùng cuối.
22. Đâu là lợi ích chính của việc sử dụng Continuous Integration (CI) trong phát triển phần mềm?
A. Tự động tạo tài liệu kỹ thuật.
B. Phát hiện sớm các lỗi tích hợp và giảm thiểu xung đột giữa các thành viên trong nhóm.
C. Tăng tốc độ biên dịch mã nguồn.
D. Tự động sửa lỗi trong mã nguồn.
23. Đâu là một loại mô hình phát triển phần mềm mà các giai đoạn được thực hiện tuần tự, từ yêu cầu đến triển khai?
A. Mô hình Agile
B. Mô hình Scrum
C. Mô hình Kanban
D. Mô hình Waterfall
24. Trong lập trình hướng đối tượng (OOP), `tính đa hình` (polymorphism) đề cập đến điều gì?
A. Khả năng một đối tượng che giấu các chi tiết triển khai bên trong.
B. Khả năng một đối tượng kế thừa các thuộc tính và phương thức từ một đối tượng khác.
C. Khả năng một đối tượng có nhiều hình thức khác nhau.
D. Khả năng một đối tượng tự động giải phóng bộ nhớ.
25. Đâu là vai trò chính của Product Owner trong Scrum?
A. Quản lý nhóm phát triển và đảm bảo tiến độ dự án.
B. Đảm bảo chất lượng code và thực hiện kiểm thử.
C. Xác định và ưu tiên các yêu cầu của sản phẩm, đại diện cho tiếng nói của khách hàng.
D. Quản lý cơ sở hạ tầng và môi trường phát triển.
26. Đâu là một nguyên tắc quan trọng của kiểm thử phần mềm?
A. Kiểm thử toàn bộ là khả thi
B. Kiểm thử có thể chứng minh phần mềm không có lỗi
C. Kiểm thử sớm
D. Kiểm thử chỉ cần thực hiện một lần
27. Đâu là mục đích chính của việc sử dụng các mẫu thiết kế (design patterns) trong phát triển phần mềm?
A. Tăng tốc độ biên dịch mã nguồn.
B. Cung cấp các giải pháp đã được chứng minh cho các vấn đề thiết kế thường gặp.
C. Giảm thiểu số lượng dòng code cần viết.
D. Tự động tạo tài liệu kỹ thuật cho dự án.
28. Công cụ nào sau đây thường được sử dụng để theo dõi lỗi (bug tracking) trong quá trình phát triển phần mềm?
A. Microsoft Word.
B. Microsoft Excel.
C. Jira.
D. PowerPoint.
29. Đâu là mục đích chính của việc sử dụng UML (Unified Modeling Language) trong phát triển phần mềm?
A. Tạo mã nguồn tự động.
B. Biên dịch mã nguồn nhanh hơn.
C. Mô hình hóa và trực quan hóa thiết kế của hệ thống phần mềm.
D. Quản lý cấu hình phần mềm.
30. Đâu là vai trò chính của Scrum Master trong Scrum?
A. Quản lý dự án và phân công công việc cho các thành viên trong nhóm.
B. Đảm bảo chất lượng code và thực hiện kiểm thử.
C. Loại bỏ các trở ngại và giúp nhóm phát triển tuân thủ các nguyên tắc Scrum.
D. Xác định các yêu cầu của sản phẩm và ưu tiên chúng.