1. Trong mô hình Scrum, ai chịu trách nhiệm đảm bảo nhóm Scrum tuân thủ đúng quy trình Scrum?
A. Product Owner
B. Scrum Master
C. Development Team
D. Project Manager
2. Trong mô hình Scrum, `Sprint′ là gì?
A. Cuộc họp hàng ngày của nhóm phát triển
B. Một khoảng thời gian cố định (thường từ 1-4 tuần) để nhóm phát triển hoàn thành một phần công việc
C. Người quản lý dự án trong Scrum
D. Danh sách các công việc cần thực hiện trong dự án
3. Nguyên tắc SOLID trong thiết kế hướng đối tượng (Object-Oriented Design) là gì?
A. Tập hợp các mẫu thiết kế phổ biến
B. Năm nguyên tắc thiết kế giúp tạo ra phần mềm dễ bảo trì, mở rộng và linh hoạt
C. Quy trình kiểm thử phần mềm
D. Phương pháp quản lý dự án phần mềm
4. Mục đích của việc lập kế hoạch dự phòng (Contingency planning) trong quản lý dự án phần mềm là gì?
A. Để đảm bảo dự án luôn đúng tiến độ ban đầu
B. Để xác định và chuẩn bị các phương án đối phó với rủi ro có thể xảy ra
C. Để giảm chi phí dự án
D. Để tăng phạm vi dự án
5. Đâu là một công cụ quản lý dự án phần mềm phổ biến?
A. Microsoft Word
B. Microsoft Excel
C. Jira
D. PowerPoint
6. Đâ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ốc độ biên dịch code
B. Cải thiện hiệu suất phần mềm khi chạy
C. Quản lý thay đổi code, theo dõi lịch sử và hợp tác làm việc nhóm hiệu quả
D. Tự động phát hiện và sửa lỗi code
7. Đâ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. Hệ thống phải có khả năng xử lý 1000 giao dịch mỗi giây
C. Hệ thống phải hiển thị danh sách sản phẩm
D. Người dùng có thể thêm sản phẩm vào giỏ hàng
8. CI∕CD là viết tắt của cụm từ nào trong phát triển phần mềm?
A. Continuous Integration ∕ Continuous Deployment
B. Centralized Infrastructure ∕ Coordinated Delivery
C. Critical Iteration ∕ Cyclical Design
D. Collaborative Input ∕ Client Delivery
9. Agile Manifesto ưu tiên điều gì hơn là quy trình và công cụ?
A. Tài liệu đầy đủ
B. Hợp đồng và đàm phán
C. Cá nhân và tương tác
D. Tuân thủ kế hoạch
10. Design pattern (mẫu thiết kế) là gì?
A. Một thuật toán cụ thể để giải quyết một vấn đề
B. Một bản thiết kế giao diện người dùng chuẩn
C. Giải pháp đã được kiểm chứng cho các vấn đề thiết kế phần mềm thường gặp
D. Một ngôn ngữ lập trình mới
11. Tính `module hóa′ (modularity) trong thiết kế phần mềm mang lại lợi ích gì?
A. Làm cho code khó hiểu hơn
B. Tăng sự phụ thuộc lẫn nhau giữa các thành phần
C. Giảm độ phức tạp, dễ bảo trì, tái sử dụng và phát triển song song
D. Giảm hiệu suất phần mềm
12. Mục tiêu chính của kiểm thử hồi quy (Regression testing) là gì?
A. Tìm ra lỗi mới trong phần mềm
B. Đảm bảo rằng các thay đổi code mới không gây ra lỗi ở các chức năng đã hoạt động trước đó
C. Kiểm tra hiệu suất của phần mềm
D. Kiểm tra giao diện người dùng
13. Technical debt (nợ kỹ thuật) trong phát triển phần mềm là gì?
A. Khoản nợ tài chính để mua công nghệ
B. Hậu quả của việc đưa ra các quyết định thiết kế hoặc code không tối ưu trong ngắn hạn để đạt tiến độ, nhưng gây khó khăn cho bảo trì và phát triển sau này
C. Lỗi code chưa được sửa
D. Sự chậm trễ trong việc triển khai phần mềm
14. Kiến trúc Microservices có ưu điểm gì so với kiến trúc Monolithic?
A. Dễ triển khai và bảo trì hơn
B. Khả năng mở rộng và độ tin cậy cao hơn, độc lập trong phát triển và triển khai
C. Hiệu suất tốt hơn trong mọi trường hợp
D. Chi phí phát triển thấp hơn
15. Trong kiểm thử hiệu năng (Performance testing), `Load testing′ (kiểm thử tải) là gì?
A. Kiểm tra chức năng phần mềm dưới tải trọng cao
B. Kiểm tra thời gian phản hồi của phần mềm
C. Mô phỏng số lượng lớn người dùng truy cập đồng thời để đánh giá hiệu suất
D. Kiểm tra khả năng chịu lỗi của phần mềm
16. Đâu là mục tiêu chính của quy trình phát triển phần mềm?
A. Tối đa hóa lợi nhuận cho nhà phát triển
B. Tạo ra phần mềm đáp ứng nhu cầu người dùng và đạt chất lượng đề ra
C. Sử dụng công nghệ mới nhất
D. Hoàn thành dự án đúng thời hạn, bất chấp chất lượng
17. 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 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. Hiệu suất và khả năng mở rộng của phần mềm
18. Phân tích yêu cầu (Requirements analysis) là giai đoạn nào trong quy trình phát triển phần mềm?
A. Giai đoạn cuối cùng, trước khi triển khai
B. Giai đoạn đầu tiên, xác định và làm rõ những gì phần mềm cần phải làm
C. Giai đoạn kiểm thử phần mềm
D. Giai đoạn bảo trì phần mềm
19. Mô hình thác nước (Waterfall) 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
B. Dự án có rủi ro cao về công nghệ
C. Dự án có yêu cầu rõ ràng, ít thay đổi và ổn định
D. Dự án cần thời gian phát triển nhanh chóng
20. Đâu là một loại tấn công bảo mật phổ biến nhắm vào ứng dụng web?
A. Tấn công vật lý vào máy chủ
B. Tấn công từ chối dịch vụ phân tán (DDoS)
C. Tấn công SQL Injection
D. Lỗi phần cứng
21. Use case (ca sử dụng) mô tả điều gì?
A. Cấu trúc dữ liệu của hệ thống
B. Giao diện người dùng của phần mềm
C. Tương tác giữa người dùng và hệ thống để đạt được mục tiêu cụ thể
D. Kiến trúc phần cứng của hệ thống
22. Unit test (kiểm thử đơn vị) nhằm mục đích kiểm tra điều gì?
A. Toàn bộ hệ thống phần mềm
B. Các module hoặc thành phần tích hợp với nhau
C. Các đơn vị code nhỏ nhất, độc lập (ví dụ: hàm, phương thức)
D. Giao diện người dùng
23. SOLID, chữ `O′ trong SOLID đại diện cho nguyên tắc nào?
A. Open-source
B. Object-oriented
C. Open∕Closed Principle
D. Optimization
24. SQL là ngôn ngữ truy vấn dữ liệu được sử dụng chủ yếu với loại cơ sở dữ liệu nào?
A. NoSQL databases
B. Graph databases
C. Relational databases (Cơ sở dữ liệu quan hệ)
D. Document databases
25. Đâu KHÔNG phải là một loại kiểm thử phần mềm?
A. Kiểm thử tích hợp (Integration testing)
B. Kiểm thử hiệu năng (Performance testing)
C. Kiểm thử bảo mật (Security testing)
D. Kiểm thử phần cứng (Hardware testing)
26. Kiến trúc hướng dịch vụ (Service-Oriented Architecture - SOA) tập trung vào điều gì?
A. Phát triển ứng dụng trên thiết bị di động
B. Xây dựng hệ thống bằng cách kết hợp các dịch vụ độc lập, có thể tái sử dụng
C. Quản lý cơ sở dữ liệu phân tán
D. Phát triển giao diện người dùng trực quan
27. Chức năng chính của lớp `Presentation Layer′ (tầng trình diễn) trong kiến trúc ba lớp là gì?
A. Quản lý dữ liệu
B. Xử lý logic nghiệp vụ
C. Hiển thị giao diện người dùng và tương tác với người dùng
D. Kết nối với cơ sở dữ liệu
28. Refactoring (tái cấu trúc code) là gì?
A. Viết lại toàn bộ code từ đầu
B. Thay đổi chức năng của phần mềm
C. Cải thiện cấu trúc code bên trong mà không thay đổi chức năng bên ngoài
D. Sửa lỗi code
29. Đâu là nhược điểm chính của mô hình phát triển phần mềm `Big Bang′?
A. Yêu cầu nhiều tài liệu
B. Khó kiểm soát tiến độ và chất lượng, rủi ro dự án cao
C. Tốn nhiều thời gian để lập kế hoạch
D. Không linh hoạt với thay đổi yêu cầu
30. Mục tiêu của `Code review′ (rà soát code) là gì?
A. Tăng tốc độ viết code
B. Tìm lỗi code, cải thiện chất lượng code và chia sẻ kiến thức trong nhóm
C. Đánh giá hiệu suất làm việc của lập trình viên
D. Tự động sửa lỗi code