1. Phương pháp Agile nào tập trung vào việc chia nhỏ công việc thành các Sprint ngắn, thường kéo dài từ 2 đến 4 tuần?
A. Kanban
B. Scrum
C. Extreme Programming (XP)
D. Lean Development
2. Đâu là mô hình phát triển phần mềm tuân theo phương pháp tiếp cận tuần tự, trong đó mỗi giai đoạn phải hoàn thành trước khi giai đoạn tiếp theo bắt đầu?
A. Agile
B. Waterfall
C. Spiral
D. DevOps
3. Trong quản lý dự án phần mềm, biểu đồ Gantt thường được sử dụng để làm gì?
A. Mô tả kiến trúc hệ thống
B. Theo dõi tiến độ và thời gian biểu của dự án
C. Quản lý yêu cầu của khách hàng
D. Phân tích rủi ro dự án
4. Trong ngữ cảnh bảo mật phần mềm, 'nguyên tắc đặc quyền tối thiểu' (Principle of Least Privilege) có nghĩa là gì?
A. Cung cấp đặc quyền truy cập tối đa cho tất cả người dùng
B. Cấp cho người dùng và tiến trình chỉ những đặc quyền tối thiểu cần thiết để thực hiện nhiệm vụ của họ
C. Hạn chế sử dụng các thư viện và framework của bên thứ ba
D. Mã hóa tất cả dữ liệu nhạy cảm
5. Phương pháp 'phát triển hướng kiểm thử' (Test-Driven Development - TDD) hoạt động theo quy trình nào?
A. Viết mã nguồn trước, sau đó viết kiểm thử
B. Viết kiểm thử trước, sau đó viết mã nguồn để vượt qua kiểm thử
C. Viết mã nguồn và kiểm thử đồng thời
D. Không cần viết kiểm thử, tập trung vào phát triển nhanh chóng
6. Trong mô hình xoắn ốc (Spiral model), mỗi vòng lặp của xoắn ốc đại diện cho điều gì?
A. Một giai đoạn phát triển cố định (như trong Waterfall)
B. Một phiên bản phần mềm hoàn chỉnh
C. Một giai đoạn rủi ro và đánh giá
D. Một Sprint phát triển (như trong Scrum)
7. Trong kiểm thử phần mềm, loại kiểm thử nào tập trung vào việc xác minh các chức năng riêng lẻ của một đơn vị mã?
A. Kiểm thử tích hợp
B. Kiểm thử hệ thống
C. Kiểm thử đơn vị (Unit test)
D. Kiểm thử chấp nhận
8. Loại biểu đồ UML nào được sử dụng để mô hình hóa luồng điều khiển tuần tự giữa các đối tượng trong một kịch bản sử dụng?
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)
9. Nguyên tắc SOLID nào trong thiết kế hướng đối tượng khuyến khích việc các lớp nên mở để mở rộng nhưng đóng để sửa đổi?
A. Nguyên tắc thay thế Liskov (Liskov Substitution Principle)
B. Nguyên tắc đóng-mở (Open/Closed Principle)
C. Nguyên tắc phân tách giao diện (Interface Segregation Principle)
D. Nguyên tắc đảo ngược phụ thuộc (Dependency Inversion Principle)
10. Trong quy trình phát triển phần mềm, 'code review' (đánh giá mã) mang lại lợi ích nào?
A. Tăng tốc độ viết mã
B. Giảm số lượng lỗi và cải thiện chất lượng mã
C. Thay thế kiểm thử tự động
D. Đơn giản hóa quy trình triển khai
11. Trong quản lý cấu hình phần mềm, 'nhánh (branch)' được sử dụng để làm gì?
A. Theo dõi lỗi
B. Quản lý yêu cầu
C. Phát triển song song các tính năng hoặc phiên bản
D. Triển khai ứng dụng
12. Công cụ nào sau đây KHÔNG phải là công cụ quản lý dự án phần mềm phổ biến?
A. Jira
B. Trello
C. Microsoft Project
D. Microsoft Word
13. Trong kiến trúc phần mềm, 'mẫu thiết kế' (design pattern) cung cấp điều gì?
A. Một đoạn mã nguồn có thể sao chép và dán trực tiếp
B. Một giải pháp đã được chứng minh cho một vấn đề thiết kế thường gặp
C. Một công cụ tự động tạo mã nguồn
D. Một phương pháp kiểm thử phần mềm
14. Trong kiến trúc hướng dịch vụ (Service-Oriented Architecture - SOA), ESB (Enterprise Service Bus) đóng vai trò gì?
A. Lưu trữ dữ liệu tập trung
B. Quản lý giao diện người dùng
C. Trung gian giao tiếp giữa các dịch vụ khác nhau
D. Cân bằng tải cho ứng dụng
15. Trong quy trình phát triển phần mềm, 'Tái cấu trúc mã' (refactoring) nhằm mục đích gì?
A. Thêm chức năng mới vào phần mềm
B. Sửa lỗi trong phần mềm
C. Cải thiện cấu trúc bên trong của mã mà không thay đổi hành vi bên ngoài
D. Tối ưu hóa hiệu suất của phần mềm
16. Điểm khác biệt chính giữa kiểm thử Alpha và kiểm thử Beta là gì?
A. Loại lỗi được phát hiện
B. Mức độ tự động hóa
C. Địa điểm và đối tượng kiểm thử
D. Thời gian thực hiện kiểm thử
17. 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 mã nguồn bên trong
B. Luồng điều khiển của chương trình
C. Chức năng và hành vi bên ngoài
D. Hiệu suất và khả năng mở rộng
18. Loại tấn công bảo mật nào lợi dụng các lỗ hổng trong ứng dụng web để chèn mã độc vào đầu vào và thực thi trên trình duyệt của người dùng khác?
A. SQL Injection
B. Cross-Site Scripting (XSS)
C. Denial of Service (DoS)
D. Man-in-the-Middle (MitM)
19. Khái niệm 'coupling' (kết nối) và 'cohesion' (liên kết) trong thiết kế phần mềm lý tưởng nên như thế nào?
A. Coupling cao và Cohesion cao
B. Coupling cao và Cohesion thấp
C. Coupling thấp và Cohesion cao
D. Coupling thấp và Cohesion thấp
20. Trong phát triển ứng dụng web, RESTful API là gì?
A. Một loại cơ sở dữ liệu quan hệ
B. Một phong cách kiến trúc để thiết kế các dịch vụ web
C. Một ngôn ngữ lập trình web
D. Một framework kiểm thử tự động
21. Công cụ 'hệ thống quản lý phiên bản phân tán' (Distributed Version Control System - DVCS) như Git khác biệt với 'hệ thống quản lý phiên bản tập trung' (Centralized Version Control System - CVCS) như SVN ở điểm nào?
A. DVCS nhanh hơn CVCS
B. DVCS có nhiều tính năng hơn CVCS
C. Mỗi nhà phát triển trong DVCS có bản sao đầy đủ của kho mã nguồn
D. CVCS dễ sử dụng hơn DVCS
22. Công cụ phân tích mã tĩnh (static code analysis) được sử dụng để làm gì?
A. Kiểm tra hiệu suất thời gian chạy của ứng dụng
B. Phát hiện lỗi và vi phạm quy tắc mã hóa mà không cần thực thi chương trình
C. Tự động tạo mã nguồn từ thiết kế
D. Quản lý phiên bản mã nguồn
23. Trong thiết kế giao diện người dùng (UI/UX), 'khả năng sử dụng' (usability) đề cập đến điều gì?
A. Tính thẩm mỹ và hấp dẫn của giao diện
B. Mức độ dễ dàng và hiệu quả người dùng có thể sử dụng giao diện để đạt được mục tiêu
C. Tính bảo mật của giao diện
D. Hiệu suất của giao diện trên các thiết bị khác nhau
24. Trong quản lý yêu cầu phần mềm, yêu cầu 'phi chức năng' (non-functional requirement) mô tả khía cạnh nào của hệ thống?
A. Các chức năng và tính năng hệ thống phải cung cấp
B. Cách hệ thống thực hiện các chức năng (ví dụ: hiệu suất, bảo mật, khả năng sử dụng)
C. Giao diện người dùng của hệ thống
D. Cấu trúc dữ liệu của hệ thống
25. Chỉ số 'độ phức tạp Cyclomatic' (Cyclomatic complexity) đo lường điều gì trong mã nguồn?
A. Số dòng mã
B. Số lượng biến cục bộ
C. Số lượng đường dẫn độc lập tuyến tính qua mã
D. Thời gian thực thi trung bình
26. Khái niệm 'nợ kỹ thuật' (technical debt) trong công nghệ phần mềm đề cập đến điều gì?
A. Chi phí bảo trì phần mềm theo thời gian
B. Hậu quả của việc đưa ra các quyết định thiết kế hoặc mã hóa vội vàng, không tối ưu
C. Số lượng lỗi còn tồn đọng trong phần mềm
D. Thời gian cần thiết để sửa lỗi phần mềm
27. Kỹ thuật 'kiểm thử hồi quy' (regression testing) được thực hiện khi nào?
A. Trước khi phát triển tính năng mới
B. Sau khi sửa lỗi hoặc thay đổi mã nguồn
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
28. Trong kiểm thử hiệu năng (performance testing), 'load testing' (kiểm thử tải) nhằm mục đích gì?
A. Kiểm tra khả năng chịu tải tối đa của hệ thống trước khi sập
B. Đánh giá hiệu suất của hệ thống dưới tải trọng dự kiến thông thường
C. Tìm kiếm các lỗi bảo mật
D. Kiểm tra khả năng phục hồi sau sự cố
29. Khái niệm 'CI/CD' trong DevOps là viết tắt của cụm từ nào?
A. Continuous Integration / Continuous Delivery (hoặc Continuous Deployment)
B. Code Inspection / Code Deployment
C. Configuration Integration / Configuration Delivery
D. Critical Infrastructure / Cloud Deployment
30. Trong kiến trúc microservices, lợi ích chính của việc phân tách ứng dụng thành các dịch vụ nhỏ, độc lập là gì?
A. Giảm chi phí phần cứng
B. Tăng tính bảo mật
C. Tăng khả năng mở rộng và khả năng phục hồi
D. Đơn giản hóa việc triển khai