1. Vai trò của `Product Owner′ trong Scrum là gì?
A. Điều phối và loại bỏ các trở ngại cho nhóm phát triển.
B. Đảm bảo chất lượng kỹ thuật của mã nguồn.
C. Đại diện cho tiếng nói của khách hàng, quản lý Product Backlog và ưu tiên các mục tiêu.
D. Quản lý tiến độ dự án và phân công công việc cho các thành viên.
2. Nguyên tắc `YAGNI′ (You Aren′t Gonna Need It) trong phát triển phần mềm khuyến nghị điều gì?
A. Viết tài liệu hướng dẫn sử dụng càng chi tiết càng tốt.
B. Chỉ phát triển những tính năng thực sự cần thiết và trì hoãn việc thêm các tính năng có thể không cần đến.
C. Kiểm thử phần mềm trên nhiều môi trường khác nhau.
D. Sử dụng các công nghệ mới nhất để đảm bảo tính hiện đại của phần mềm.
3. Trong quá trình phát triển phần mềm, `user story′ thường được sử dụng để làm gì?
A. Mô tả chi tiết thiết kế kỹ thuật của một chức năng.
B. Ghi lại lỗi và vấn đề phát sinh trong quá trình kiểm thử.
C. Mô tả ngắn gọn một yêu cầu hoặc tính năng từ góc độ người dùng.
D. Lập kế hoạch tiến độ và phân công công việc cho nhóm phát triển.
4. Công cụ nào sau đây thường được sử dụng cho kiểm thử tự động giao diện người dùng (UI automation testing)?
A. JUnit
B. Selenium
C. SonarQube
D. Jenkins
5. Nguyên tắc `KISS′ (Keep It Simple, Stupid) trong phát triển phần mềm khuyến khích điều gì?
A. Sử dụng các công nghệ phức tạp nhất để giải quyết vấn đề.
B. Thiết kế và xây dựng hệ thống càng đơn giản càng tốt.
C. Viết mã nguồn càng ngắn gọn càng tốt, bỏ qua tính dễ đọc.
D. Tập trung vào hiệu suất tối ưu, ngay cả khi làm tăng độ phức tạp.
6. Kiểm thử hồi quy (Regression testing) được thực hiện khi nào?
A. Trước khi phát hành phiên bản phần mềm đầu tiên.
B. Sau khi thực hiện thay đổi mã nguồn (ví dụ: sửa lỗi, thêm tính năng).
C. Trong giai đoạn phân tích yêu cầu.
D. Chỉ khi có yêu cầu từ khách hàng.
7. Trong kiến trúc microservices, các thành phần phần mềm được tổ chức như thế nào?
A. Thành một ứng dụng nguyên khối duy nhất.
B. Thành các dịch vụ nhỏ, độc lập, giao tiếp với nhau qua mạng.
C. Thành các lớp phân tầng chặt chẽ trong cùng một tiến trình.
D. Thành các thư viện liên kết tĩnh.
8. Trong mô hình phát triển phần mềm hình xoắn ốc (Spiral), điều gì được lặp lại trong mỗi vòng xoắn?
A. Viết mã nguồn.
B. Kiểm thử.
C. Lập kế hoạch, đánh giá rủi ro, phát triển và đánh giá.
D. Thu thập yêu cầu.
9. Mô hình phát triển phần mềm nào phù hợp nhất khi yêu cầu dự án không rõ ràng và có nhiều rủi ro?
A. Mô hình thác nước (Waterfall)
B. Mô hình chữ V (V-model)
C. Mô hình xoắn ốc (Spiral)
D. Mô hình Agile∕Scrum
10. Chỉ số `cyclomatic complexity′ dùng để đo lường điều gì trong mã nguồn?
A. Số dòng mã trong chương trình.
B. Độ phức tạp về mặt logic của mã nguồn.
C. Thời gian thực thi trung bình của chương trình.
D. Số lượng biến được sử dụng trong chương trình.
11. SOLID là viết tắt của bộ nguyên tắc thiết kế hướng đối tượng nào?
A. Simple, Open, Linear, Independent, Documented.
B. Single Responsibility, Open∕Closed, Liskov Substitution, Interface Segregation, Dependency Inversion.
C. Scalable, Organized, Understandable, Logical, Iterative, Detailed.
D. Stable, Optimized, Lightweight, Integrated, Distributed.
12. DevOps là gì?
A. Một phương pháp kiểm thử phần mềm tự động.
B. Một tập hợp các thực hành kết hợp phát triển phần mềm (Development) và vận hành hệ thống (Operations).
C. Một ngôn ngữ lập trình mới.
D. Một loại cơ sở dữ liệu NoSQL.
13. Trong ngữ cảnh kiểm thử phần mềm, `test case′ là gì?
A. Một báo cáo tổng kết kết quả kiểm thử.
B. Một tập hợp các bước kiểm thử cụ thể, đầu vào, điều kiện thực hiện và kết quả mong đợi.
C. Một môi trường giả lập để chạy kiểm thử.
D. Một loại lỗi phần mềm đặc biệt.
14. Khái niệm `technical debt′ (nợ kỹ thuật) trong công nghệ phần mềm đề cập đến điều gì?
A. Tổng chi phí đầu tư vào cơ sở hạ tầng kỹ thuật.
B. Hậu quả của việc đưa ra các quyết định thiết kế hoặc mã hóa không tối ưu trong ngắn hạn để đạt được tiến độ nhanh hơn.
C. Số lượng lỗi còn tồn đọng trong phần mềm sau khi phát hành.
D. Thời gian cần thiết để bảo trì và nâng cấp phần mềm.
15. Phương pháp kiểm thử nào sau đây KHÔNG thuộc nhóm kiểm thử hộp đen?
A. Kiểm thử tương đương phân vùng (Equivalence partitioning)
B. Kiểm thử giá trị biên (Boundary value analysis)
C. Kiểm thử đường dẫn cơ sở (Basis path testing)
D. Kiểm thử bảng quyết định (Decision table testing)
16. Phương pháp phát triển phần mềm Agile nhấn mạnh điều gì?
A. Tuân thủ nghiêm ngặt theo kế hoạch đã được xác định từ đầu.
B. Ưu tiên tài liệu hóa chi tiết mọi quy trình và quyết định.
C. Sự linh hoạt, thích ứng với thay đổi và hợp tác chặt chẽ với khách hàng.
D. Tập trung vào việc giảm thiểu rủi ro bằng cách lập kế hoạch dự phòng cho mọi tình huống.
17. Trong phát triển phần mềm hướng đối tượng, tính đóng gói (Encapsulation) đề cập đến điều gì?
A. Khả năng tái sử dụng mã nguồn giữa các dự án khác nhau.
B. Việc nhóm dữ liệu và phương thức thao tác dữ liệu đó lại với nhau, đồng thời ẩn giấu thông tin chi tiết bên trong.
C. Khả năng một đối tượng có thể có nhiều hình thức khác nhau.
D. Việc tạo ra các lớp kế thừa từ các lớp cha.
18. Khái niệm nào sau đây mô tả chính xác nhất `Công nghệ phần mềm′?
A. Một tập hợp các công cụ phần mềm được sử dụng để phát triển ứng dụng.
B. Một ngành khoa học ứng dụng các nguyên tắc kỹ thuật vào thiết kế, phát triển, bảo trì và quản lý hệ thống phần mềm.
C. Quy trình kiểm thử phần mềm để đảm bảo chất lượng sản phẩm cuối cùng.
D. Việc sử dụng các ngôn ngữ lập trình hiện đại để tạo ra các chương trình máy tính.
19. Mục đích chính của việc quản lý cấu hình phần mềm là gì?
A. Tối ưu hóa hiệu suất của ứng dụng.
B. Quản lý và kiểm soát các thay đổi trong suốt vòng đời phát triển phần mềm.
C. Đảm bảo an ninh thông tin cho hệ thống.
D. Tự động hóa quy trình kiểm thử phần mềm.
20. Đâu là mục tiêu chính của kiểm thử hộp trắng (White-box testing)?
A. Kiểm tra chức năng của phần mềm từ góc độ người dùng.
B. Đảm bảo phần mềm hoạt động đúng trên các môi trường khác nhau.
C. Kiểm tra cấu trúc bên trong và luồng điều khiển của mã nguồn.
D. Đánh giá hiệu suất và khả năng chịu tải của hệ thống.
21. Phương pháp kiểm thử hộp đen (Black-box testing) dựa trên yếu tố nào?
A. Cấu trúc bên trong và mã nguồn của phần mềm.
B. Yêu cầu chức năng và đặc tả của phần mềm.
C. Hiệu suất và khả năng chịu tải của hệ thống.
D. Kinh nghiệm và trực giác của người kiểm thử.
22. Đâu là lợi ích chính của việc sử dụng hệ thống kiểm soát phiên bản (Version Control System) như Git?
A. Tăng tốc độ biên dịch mã nguồn.
B. Hỗ trợ quản lý và theo dõi lịch sử thay đổi mã nguồn, dễ dàng khôi phục lại các phiên bản trước đó.
C. Tự động phát hiện và sửa lỗi mã nguồn.
D. Cải thiện giao diện người dùng của ứng dụng.
23. Nguyên tắc `DRY′ (Don′t Repeat Yourself) trong phát triển phần mềm khuyến khích điều gì?
A. Viết mã nguồn chi tiết và rõ ràng, ngay cả khi có sự trùng lặp.
B. Tái sử dụng mã nguồn và tránh lặp lại logic ở nhiều nơi khác nhau.
C. Tập trung vào việc hoàn thành dự án nhanh chóng, bỏ qua việc tối ưu hóa mã nguồn.
D. Viết tài liệu hướng dẫn sử dụng chi tiết cho người dùng.
24. 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 mà không thay đổi chức năng bên ngoài.
C. Thêm chức năng mới vào phần mềm.
D. Sửa lỗi và vá các lỗ hổng bảo mật.
25. Công cụ nào sau đây thường được sử dụng để phân tích tĩnh mã nguồn (Static code analysis)?
A. JUnit
B. SonarQube
C. Selenium
D. Jenkins
26. Công cụ nào sau đây thường được sử dụng để quản lý dự án phần mềm theo phương pháp Agile?
A. Microsoft Project
B. Jira
C. Primavera P6
D. SAP Project System
27. Yếu tố nào sau đây KHÔNG phải là một thuộc tính chất lượng phần mềm?
A. Khả năng sử dụng (Usability)
B. Hiệu suất (Performance)
C. Chi phí phát triển (Development Cost)
D. Độ tin cậy (Reliability)
28. Mục tiêu của kiểm thử tích hợp (Integration testing) là gì?
A. Kiểm tra từng đơn vị mã nguồn riêng lẻ.
B. Kiểm tra sự tương tác giữa các module hoặc thành phần khác nhau của hệ thống.
C. Kiểm tra giao diện người dùng.
D. Kiểm tra hiệu suất của toàn bộ hệ thống.
29. Trong mô hình thác nước (Waterfall), giai đoạn nào sau đây diễn ra đầu tiên?
A. Kiểm thử (Testing)
B. Phân tích yêu cầu (Requirements Analysis)
C. Thiết kế (Design)
D. Triển khai (Implementation)
30. Kiểu kiểm thử nào sau đây tập trung vào việc đánh giá hiệu suất của hệ thống dưới một tải trọng dự kiến?
A. Kiểm thử chức năng (Functional testing)
B. Kiểm thử hiệu năng (Performance testing)
C. Kiểm thử tích hợp (Integration testing)
D. Kiểm thử chấp nhận (Acceptance testing)