1. Phương pháp Agile Manifesto nhấn mạnh giá trị nào hơn?
A. Quy trình và công cụ toàn diện.
B. Tài liệu đầy đủ.
C. Hợp đồng và đàm phán.
D. Cá nhân và tương tác.
2. Trong quản lý cấu hình phần mềm (Software Configuration Management), 'Baseline' (Đường cơ sở) là gì?
A. Phiên bản mới nhất của phần mềm.
B. Một cấu hình đã được phê duyệt và làm chuẩn để phát triển tiếp.
C. Danh sách các lỗi đã biết trong phần mềm.
D. Kế hoạch kiểm thử phần mềm.
3. Trong quy trình Scrum, 'Sprint' là gì?
A. Một cuộc họp hàng ngày để cập nhật tiến độ.
B. Một khoảng thời gian cố định để hoàn thành một phần công việc.
C. Danh sách các công việc cần thực hiện trong dự án.
D. Vai trò của người quản lý dự án trong Scrum.
4. Đâu là một ví dụ về 'Non-functional requirement' (Yêu cầu phi chức năng) của phần mềm?
A. Người dùng có thể đăng nhập vào hệ thống bằng tên người dùng và mật khẩu.
B. Hệ thống phải phản hồi yêu cầu của người dùng trong vòng 2 giây.
C. Hệ thống phải tính toán và hiển thị tổng giá trị đơn hàng.
D. Hệ thống phải gửi email xác nhận đơn hàng sau khi thanh toán.
5. Đâu là mục đích của việc phân tích yêu cầu trong quy trình phát triển phần mềm?
A. Viết mã nguồn cho phần mềm.
B. Xác định và làm rõ các nhu cầu và mong muốn của người dùng.
C. Kiểm thử phần mềm sau khi phát triển.
D. Triển khai phần mềm cho người dùng cuối.
6. Trong UML, loại biểu đồ nào được sử dụng để mô hình hóa hành vi tương tác giữa các đối tượng theo thời gian?
A. Biểu đồ lớp (Class Diagram).
B. Biểu đồ ca sử dụng (Use Case Diagram).
C. Biểu đồ tuần tự (Sequence Diagram).
D. Biểu đồ trạng thái (State Diagram).
7. Mục tiêu của việc lập kế hoạch dự án phần mềm là gì?
A. Viết mã nguồn cho dự án.
B. Xác định phạm vi, thời gian, chi phí và nguồn lực cần thiết để hoàn thành dự án.
C. Kiểm thử chất lượng phần mềm.
D. Triển khai phần mềm cho người dùng.
8. Mô hình thác nước (Waterfall) trong quy trình phát triển phần mềm phù hợp nhất với dự án nào?
A. Dự án có yêu cầu thay đổi liên tục và không rõ ràng.
B. Dự án có thời gian phát triển rất ngắn và cần linh hoạt.
C. Dự án có yêu cầu rõ ràng, ổn định và ít thay đổi.
D. Dự án mà khách hàng muốn tham gia vào mọi giai đoạn phát triển.
9. Trong kiểm thử phần mềm, độ bao phủ mã (Code Coverage) đo lường điều gì?
A. Số lượng lỗi được phát hiện trong quá trình kiểm thử.
B. Phần trăm mã nguồn đã được thực thi bởi các trường hợp kiểm thử.
C. Thời gian cần thiết để thực hiện tất cả các trường hợp kiểm thử.
D. Mức độ phức tạp của mã nguồn.
10. Đâu không phải là một loại kiểm thử phần mềm?
A. Kiểm thử hiệu năng (Performance testing).
B. Kiểm thử bảo mật (Security testing).
C. Kiểm thử tích hợp (Integration testing).
D. Kiểm thử tài chính (Financial testing).
11. Đâu là một thách thức chính của việc phát triển phần mềm nhúng (Embedded software)?
A. Sự đa dạng của ngôn ngữ lập trình.
B. Giới hạn về tài nguyên phần cứng (bộ nhớ, CPU, năng lượng).
C. Thiếu công cụ phát triển phần mềm chuyên dụng.
D. Khó khăn trong việc kiểm thử trên môi trường thực tế.
12. Nguyên tắc SOLID nào tập trung vào việc một lớp (class) chỉ nên có một lý do duy nhất để thay đổi?
A. Nguyên tắc thế chỗ Liskov (Liskov Substitution Principle).
B. Nguyên tắc mở đóng (Open/Closed Principle).
C. Nguyên tắc đơn trách nhiệm (Single Responsibility Principle).
D. Nguyên tắc đảo ngược phụ thuộc (Dependency Inversion Principle).
13. Công cụ Continuous Integration (CI) và Continuous Delivery (CD) giúp tự động hóa quy trình nào?
A. Phân tích yêu cầu và thiết kế hệ thống.
B. Kiểm thử và triển khai phần mềm.
C. Quản lý dự án và giao tiếp với khách hàng.
D. Bảo trì và nâng cấp phần mềm sau triển khai.
14. Phương pháp kiểm thử hồi quy (Regression testing) được thực hiện khi nào?
A. Trước khi phát triển bất kỳ tính năng mới nào.
B. Sau khi sửa lỗi hoặc thêm tính năng mới vào phần mềm.
C. Trong giai đoạn phân tích yêu cầu của dự án.
D. Khi phần mềm được triển khai cho người dùng cuối.
15. Đâ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. Kiểm tra cấu trúc bên trong và logic của mã nguồn.
C. Kiểm tra hiệu suất và khả năng chịu tải của hệ thống.
D. Kiểm tra giao diện người dùng và trải nghiệm người dùng.
16. Trong Scrum, 'Product Backlog' là gì?
A. Bảng theo dõi công việc hàng ngày của nhóm phát triển.
B. Danh sách ưu tiên các tính năng, cải tiến và sửa lỗi cần thực hiện trong dự án.
C. Bản kế hoạch chi tiết cho từng Sprint.
D. Báo cáo tiến độ dự án gửi cho khách hàng.
17. Nguyên tắc 'DRY' (Don't Repeat Yourself) trong lập trình phần mềm khuyến khích điều gì?
A. Viết mã chi tiết và rõ ràng.
B. Tái sử dụng mã nguồn và tránh trùng lặp.
C. Kiểm thử mã nguồn kỹ lưỡng.
D. Viết tài liệu đầy đủ cho mã nguồn.
18. Trong mô hình xoắn ốc (Spiral model), rủi ro được đánh giá và xử lý ở giai đoạn nào?
A. Giai đoạn lập kế hoạch (Planning).
B. Giai đoạn phân tích rủi ro (Risk Analysis).
C. Giai đoạn phát triển (Engineering).
D. Giai đoạn đánh giá (Evaluation).
19. Phương pháp kiểm thử hộp đen (Black-box testing) tập trung vào khía cạnh nào của phần mềm?
A. Cấu trúc dữ liệu bên trong.
B. Logic xử lý của thuật toán.
C. Chức năng và hành vi đầu ra dựa trên đầu vào.
D. Hiệu suất sử dụng bộ nhớ và CPU.
20. Thuật ngữ 'Technical Debt' (Nợ kỹ thuật) trong công nghệ phần mềm đề cập đến điều gì?
A. Số tiền nợ ngân hàng để đầu tư vào công nghệ mới.
B. Chi phí sửa lỗi phát sinh do sử dụng công nghệ lạc hậu.
C. 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.
D. Tổng chi phí bảo trì phần mềm trong suốt vòng đời sản phẩm.
21. Công cụ quản lý phiên bản Git chủ yếu được sử dụng để làm gì?
A. Quản lý yêu cầu và theo dõi lỗi.
B. Tự động hóa quy trình kiểm thử phần mềm.
C. Theo dõi và quản lý thay đổi của mã nguồn.
D. Triển khai và quản lý ứng dụng trên máy chủ.
22. Đâu là một lợi ích chính của việc sử dụng Design Patterns (Mẫu thiết kế) trong phát triển phần mềm?
A. Giảm thời gian phát triển phần mềm.
B. Tăng tính bảo mật của phần mềm.
C. Cung cấp các giải pháp đã được kiểm chứng cho các vấn đề thiết kế phổ biến.
D. Đảm bảo phần mềm luôn tương thích với mọi hệ điều hành.
23. Đâu là vai trò của 'Code Review' (Đánh giá mã nguồn) trong quy trình phát triển phần mềm?
A. Tự động kiểm tra lỗi cú pháp trong mã.
B. Phát hiện lỗi logic, cải thiện chất lượng mã và chia sẻ kiến thức trong nhóm.
C. Tăng tốc độ viết mã của lập trình viên.
D. Đảm bảo mã nguồn tuân thủ các tiêu chuẩn bảo mật.
24. Kiến trúc Microservices mang lại lợi ích chính nào sau đây?
A. Giảm độ phức tạp trong triển khai và bảo trì.
B. Tăng tính toàn vẹn dữ liệu trên toàn hệ thống.
C. Tăng khả năng mở rộng và linh hoạt cho từng dịch vụ.
D. Đơn giản hóa việc quản lý giao dịch phức tạp.
25. Kiểm thử 'Smoke testing' (Kiểm thử khói) thường được thực hiện để làm gì?
A. Kiểm tra hiệu suất chi tiết của từng module.
B. Đảm bảo các chức năng cốt lõi của phần mềm hoạt động ổn định sau khi build.
C. Phát hiện lỗi bảo mật tiềm ẩn.
D. Kiểm tra khả năng tương thích của phần mềm trên nhiều nền tảng.
26. Phương pháp kiểm thử A/B testing thường được sử dụng để làm gì trong phát triển web và ứng dụng?
A. Kiểm tra hiệu suất của máy chủ web.
B. So sánh hiệu quả của hai phiên bản khác nhau của một tính năng hoặc giao diện.
C. Đánh giá mức độ bảo mật của ứng dụng web.
D. Tối ưu hóa cơ sở dữ liệu cho ứng dụng web.
27. Khái niệm 'Coupling' (Tính liên kết) và 'Cohesion' (Tính gắn kết) trong thiết kế phần mềm mô tả điều gì?
A. Hiệu suất và khả năng mở rộng của hệ thống.
B. Mức độ độc lập giữa các module và mức độ tập trung chức năng trong module.
C. Mức độ bảo mật và độ tin cậy của phần mềm.
D. Quy trình phát triển và quản lý dự án phần mềm.
28. Khái niệm 'Refactoring' trong lập trình phần mềm có nghĩa là gì?
A. Viết lại toàn bộ mã nguồn từ đầu.
B. Tối ưu hóa hiệu suất của phần mềm.
C. Cấu trúc lại mã nguồn mà không thay đổi chức năng bên ngoài.
D. Thêm các tính năng mới vào phần mềm.
29. Khi nào thì mô hình phát triển phần mềm lặp và tăng trưởng (Iterative and Incremental) được ưu tiên sử dụng?
A. Khi yêu cầu dự án đã được xác định rõ ràng và ổn định từ đầu.
B. Khi cần phát triển nhanh chóng và linh hoạt, thích ứng với thay đổi yêu cầu.
C. Khi dự án có thời gian và nguồn lực hạn chế.
D. Khi muốn giảm thiểu rủi ro về chi phí và thời gian.
30. Yếu tố nào sau đây quan trọng nhất để đảm bảo chất lượng mã nguồn?
A. Sử dụng công nghệ mới nhất.
B. Tuân thủ coding convention và code review.
C. Viết mã nhanh chóng để kịp tiến độ.
D. Sử dụng nhiều thư viện bên ngoài.