1. Đâu là một lợi ích chính của việc sử dụng microservices architecture (kiến trúc microservices)?
A. Giảm độ phức tạp của việc triển khai.
B. Tăng tính phụ thuộc giữa các thành phần.
C. Tăng khả năng mở rộng, linh hoạt và khả năng phục hồi của ứng dụng.
D. Đơn giản hóa việc quản lý cơ sở dữ liệu.
2. Use case (ca sử dụng) được dùng để làm gì trong phân tích yêu cầu?
A. Mô tả cấu trúc dữ liệu của hệ thống.
B. Mô tả cách người dùng tương tác với hệ thống để đạt được mục tiêu cụ thể.
C. Đặc tả các yêu cầu phi chức năng của hệ thống.
D. Thiết kế giao diện người dùng của phần mềm.
3. Khái niệm 'regression testing' (kiểm thử hồi quy) dùng để chỉ loại kiểm thử nào?
A. Kiểm thử hiệu năng dưới tải cao.
B. Kiểm thử để đảm bảo các thay đổi mới không gây ra lỗi ở các chức năng đã hoạt động trước đó.
C. Kiểm thử bảo mật để tìm lỗ hổng.
D. Kiểm thử giao diện người dùng.
4. Kiểm thử đơn vị (Unit testing) thường được thực hiện ở giai đoạn nào của phát triển phần mềm?
A. Giai đoạn phân tích yêu cầu.
B. Giai đoạn thiết kế.
C. Giai đoạn lập trình (coding).
D. Giai đoạn triển khai.
5. Mục đích chính của việc lập kế hoạch dự án phần mềm là gì?
A. Viết mã nguồn nhanh nhất có thể.
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. Chọn công nghệ mới nhất cho dự án.
D. Đảm bảo tất cả các thành viên dự án đều có kỹ năng giống nhau.
6. Mục tiêu chính của quy trình phát triển phần mềm là gì?
A. Tối đa hóa lợi nhuận cho nhà phát triển.
B. Cung cấp phần mềm đáp ứng nhu cầu người dùng, đúng thời hạn và trong ngân sách.
C. Sử dụng công nghệ mới nhất trong mọi dự án.
D. Tạo ra phần mềm phức tạp nhất có thể.
7. Mục đích của việc 'code review' (duyệt mã) là gì?
A. Để tìm và sửa lỗi cú pháp.
B. Để đánh giá hiệu suất của lập trình viên.
C. Để cải thiện chất lượng mã nguồn, chia sẻ kiến thức và phát hiện lỗi logic trước khi kiểm thử.
D. Để tự động hóa quá trình kiểm thử.
8. 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 kế hoạch ban đầu.
B. Ưu tiên tài liệu chi tiết trước khi bắt đầu lập trình.
C. 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. Phân chia công việc rõ ràng giữa các thành viên và hạn chế giao tiếp.
9. Đâu là một ví dụ về 'anti-pattern' trong thiết kế phần mềm?
A. Singleton pattern.
B. Factory pattern.
C. God Object.
D. Observer pattern.
10. Mô hình Scrum thuộc loại phương pháp phát triển phần mềm nào?
A. Waterfall.
B. Agile.
C. Spiral.
D. Rapid Application Development (RAD).
11. Mẫu thiết kế Singleton pattern giải quyết vấn đề gì?
A. Tạo ra nhiều instance của một class.
B. Đảm bảo chỉ có một instance duy nhất của một class được tạo ra.
C. Quản lý vòng đời của đối tượng.
D. Tạo ra các đối tượng phức tạp từng bước.
12. CI/CD là viết tắt của cụm từ nào và có ý nghĩa gì trong DevOps?
A. Continuous Integration/Continuous Delivery, quy trình tích hợp và phân phối liên tục.
B. Critical Infrastructure/Cyber Defense, bảo vệ cơ sở hạ tầng quan trọng.
C. Code Inspection/Configuration Deployment, kiểm tra mã và triển khai cấu hình.
D. Centralized Interface/Client Database, giao diện tập trung và cơ sở dữ liệu khách hàng.
13. Sự khác biệt chính giữa kiểm thử Alpha và kiểm thử Beta là gì?
A. Alpha test do lập trình viên thực hiện, Beta test do người kiểm thử chuyên nghiệp.
B. Alpha test diễn ra tại môi trường phát triển, Beta test diễn ra tại môi trường người dùng thực tế.
C. Alpha test kiểm tra chức năng, Beta test kiểm tra hiệu năng.
D. Alpha test là kiểm thử hộp trắng, Beta test là kiểm thử hộp đen.
14. Nguyên tắc SOLID trong thiết kế hướng đối tượng là gì?
A. Một tập hợp các mẫu thiết kế phổ biến.
B. Một phương pháp kiểm thử phần mềm tự động.
C. Năm nguyên tắc thiết kế giúp tạo ra phần mềm dễ bảo trì và mở rộng.
D. Một loại ngôn ngữ lập trình hướng đối tượng.
15. Trong mô hình xoắn ốc (Spiral model), rủi ro được xem xét ở giai đoạn nào?
A. Chỉ ở giai đoạn đầu của dự án.
B. Chỉ ở giai đoạn cuối của dự án.
C. Được đánh giá và xử lý trong mỗi vòng lặp của mô hình.
D. Không được xem xét trong mô hình này.
16. Đâu không phải là một loại kiểm thử phần mềm chính?
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ử trang trí (Decoration testing).
17. Độ đo Cyclomatic complexity được sử dụng để đánh giá điều gì?
A. Kích thước của mã nguồn.
B. Độ phức tạp của cấu trúc điều khiển trong mã nguồn.
C. Hiệu suất thực thi của chương trình.
D. Số lượng lỗi trong mã nguồn.
18. Version control system (hệ thống quản lý phiên bản) được sử dụng để làm gì?
A. Kiểm thử phần mềm tự động.
B. Quản lý cơ sở dữ liệu.
C. Theo dõi và quản lý các thay đổi của mã nguồn theo thời gian.
D. Triển khai phần mềm lên máy chủ.
19. Công cụ nào thường được sử dụng để theo dõi lỗi (bug tracking) và quản lý các vấn đề (issue tracking) trong dự án phần mềm?
A. Microsoft Word.
B. Microsoft Excel.
C. Jira hoặc Bugzilla.
D. PowerPoint.
20. Khái niệm 'coupling' (kết nối) và 'cohesion' (liên kết) trong thiết kế module phần mềm liên quan đến điều gì?
A. Hiệu suất và khả năng mở rộng.
B. Bảo mật và độ tin cậy.
C. Mức độ phụ thuộc giữa các module và mức độ liên quan của các phần tử bên trong một module.
D. Khả năng sử dụng và giao diện người dùng.
21. Đâu là một ví dụ về yêu cầu phi chức năng?
A. Hệ thống phải cho phép người dùng đăng nhập bằng tài khoản Google.
B. Hệ thống phải hiển thị danh sách sản phẩm theo danh mục.
C. Hệ thống phải có thời gian phản hồi không quá 2 giây.
D. Hệ thống phải tính toán tổng giá trị đơn hàng.
22. Trong mô hình Waterfall, giai đoạn nào diễn ra đầu tiên?
A. Kiểm thử (Testing).
B. Triển khai (Deployment).
C. Phân tích yêu cầu (Requirements Analysis).
D. Thiết kế (Design).
23. Refactoring (tái cấu trúc mã) là gì?
A. Viết lại toàn bộ mã nguồn từ đầu.
B. Thay đổi chức năng của phần mềm.
C. Cải thiện cấu trúc mã nguồn mà không thay đổi hành vi bên ngoài.
D. Tối ưu hóa hiệu suất bằng cách thay đổi thuật toán.
24. Phân tích SWOT thường được sử dụng trong giai đoạn nào của dự án phần mềm?
A. Giai đoạn lập trình.
B. Giai đoạn kiểm thử.
C. Giai đoạn lập kế hoạch và phân tích yêu cầu.
D. Giai đoạn triển khai và bảo trì.
25. Trong ngữ cảnh phát triển phần mềm, 'technical feasibility' (tính khả thi về kỹ thuật) đề cập đến điều gì?
A. Khả năng dự án tạo ra lợi nhuận.
B. Khả năng đội ngũ phát triển có đủ kỹ năng và công nghệ để xây dựng phần mềm.
C. Khả năng phần mềm được người dùng chấp nhận.
D. Khả năng phần mềm tuân thủ các quy định pháp lý.
26. Thế nào là 'Technical debt' (nợ kỹ thuật) trong phát triển phần mềm?
A. Số tiền nợ nhà cung cấp công nghệ.
B. Hậu quả của việc đưa ra các quyết định thiết kế hoặc lập trình không tối ưu trong ngắn hạn.
C. Thời gian cần thiết để sửa lỗi phần mềm.
D. Chi phí bảo trì phần mềm sau khi triển khai.
27. Kiểm thử hộp đen (Black-box testing) tập trung vào điều gì?
A. Cấu trúc code bên trong của phần mềm.
B. Luồng dữ liệu và logic bên trong chương trình.
C. Chức năng và hành vi bên ngoài của phần mềm dựa trên đặc tả yêu cầu.
D. Hiệu suất và khả năng chịu tải của hệ thống.
28. Loại biểu đồ nào thường được sử dụng để mô hình hóa cấu trúc lớp và mối quan hệ giữa các lớp trong thiết kế hướng đối tượng?
A. Biểu đồ luồng dữ liệu (Data Flow Diagram).
B. Biểu đồ hoạt động (Activity Diagram).
C. Biểu đồ lớp (Class Diagram).
D. Biểu đồ tuần tự (Sequence Diagram).
29. Mục tiêu của việc bảo trì phần mềm là gì?
A. Thay đổi hoàn toàn chức năng của phần mềm.
B. Gỡ bỏ hoàn toàn phần mềm khỏi hệ thống.
C. Sửa lỗi, cải thiện hiệu suất, và thích ứng phần mềm với môi trường thay đổi sau khi triển khai.
D. Tái cấu trúc mã nguồn mà không thay đổi chức năng.
30. Đâu là một thách thức chính trong phát triển phần mềm phân tán?
A. Viết mã nguồn.
B. Quản lý cơ sở dữ liệu tập trung.
C. Xử lý độ trễ mạng và tính nhất quán dữ liệu giữa các thành phần phân tán.
D. Thiết kế giao diện người dùng đơn giản.