1. Chỉ số `code coverage` (độ bao phủ code) dùng để đo lường điều gì?
A. Số lượng dòng code trong dự án
B. Phần trăm code được thực thi bởi các test case
C. Số lượng lỗi trong code
D. Độ phức tạp của code
2. Đâu là một lợi ích của việc sử dụng cloud computing trong phát triển và triển khai phần mềm?
A. Giảm chi phí đầu tư vào phần cứng
B. Tăng độ phức tạp của hệ thống
C. Giảm tính linh hoạt
D. Yêu cầu kiến thức chuyên môn sâu về phần cứng
3. Trong phát triển phần mềm, code smell (mùi code) là gì?
A. Một loại lỗi code nghiêm trọng
B. Một dấu hiệu cho thấy code có thể có vấn đề thiết kế
C. Một phương pháp tối ưu hóa code
D. Một công cụ để kiểm tra bảo mật
4. Trong phát triển phần mềm hướng đối tượng, tính đóng gói (encapsulation) có nghĩa là gì?
A. Che giấu dữ liệu và phương thức bên trong đối tượng
B. Cho phép đối tượng kế thừa thuộc tính từ đối tượng khác
C. Tạo ra nhiều đối tượng từ một lớp
D. Định nghĩa các giao diện cho các đối tượng
5. Trong quá trình phát triển phần mềm, `spike solution` được sử dụng để làm gì?
A. Sửa lỗi code nhanh chóng
B. Nghiên cứu và thử nghiệm một giải pháp mới
C. Tối ưu hóa hiệu năng
D. Tạo tài liệu hướng dẫn sử dụng
6. Đâu là một nguyên tắc quan trọng trong thiết kế hướng đối tượng (Object-Oriented Design)?
A. Viết code càng ngắn càng tốt
B. Tái sử dụng code
C. Sử dụng nhiều biến toàn cục
D. Tránh sử dụng kế thừa
7. Trong ngữ cảnh của API (Application Programming Interface), REST là gì?
A. Một loại ngôn ngữ lập trình
B. Một kiến trúc phần mềm
C. Một giao thức mạng
D. Một công cụ kiểm thử
8. Đâu là một yếu tố quan trọng để xây dựng một đội ngũ phát triển phần mềm hiệu quả?
A. Sự cạnh tranh giữa các thành viên
B. Giao tiếp hiệu quả
C. Phân công công việc độc lập
D. Giấu thông tin
9. Đâu là một công cụ phổ biến để thực hiện continuous integration?
A. Jenkins
B. Notepad
C. Calculator
D. Paint
10. Đâu là mục tiêu chính của việc tái cấu trúc (refactoring) code?
A. Thêm chức năng mới cho phần mềm
B. Cải thiện khả năng đọc và bảo trì code
C. Sửa lỗi code
D. Tăng tốc độ thực thi code
11. Trong kiểm thử phần mềm, `smoke testing` (kiểm thử khói) được thực hiện khi nào?
A. Trước khi release phần mềm cho người dùng
B. Sau mỗi lần build mới
C. Khi phát hiện lỗi nghiêm trọng
D. Khi cần kiểm tra hiệu năng
12. Đâu là mục tiêu 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. Tăng tốc độ viết code
B. Cung cấp các giải pháp đã được chứng minh cho các vấn đề thiết kế phổ biến
C. Giảm thiểu số lượng dòng code
D. Tối ưu hóa hiệu năng của phần mềm
13. Đâu là một lợi ích của việc sử dụng kiến trúc hướng sự kiện (event-driven architecture)?
A. Tăng độ phức tạp của hệ thống
B. Giảm tính linh hoạt
C. Cho phép các thành phần tương tác một cách lỏng lẻo
D. Yêu cầu kiến thức chuyên môn sâu về phần cứng
14. Đâu là một đặc điểm của kiến trúc microservices?
A. Ứng dụng được xây dựng như một khối duy nhất
B. Các dịch vụ được triển khai độc lập
C. Sử dụng chung một cơ sở dữ liệu duy nhất
D. Khó mở rộng và bảo trì
15. Đâu là một cách để giảm thiểu rủi ro trong quá trình phát triển phần mềm?
A. Bỏ qua tất cả các rủi ro
B. Xây dựng kế hoạch dự phòng
C. Chỉ tập trung vào code
D. Không kiểm thử
16. 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. Số tiền nợ các 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ế 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 để hoàn thành dự án
17. Yếu tố nào sau đây là quan trọng nhất để đảm bảo thành công của một dự án phần mềm?
A. Sử dụng công nghệ mới nhất
B. Quản lý rủi ro hiệu quả
C. Có đội ngũ lập trình viên giỏi nhất
D. Tuân thủ quy trình phát triển nghiêm ngặt
18. Trong lĩnh vực kiểm thử phần mềm, mutation testing (kiểm thử đột biến) là gì?
A. Một loại kiểm thử hiệu năng
B. Một kỹ thuật kiểm thử bằng cách tạo ra các phiên bản đột biến của code
C. Một phương pháp kiểm tra bảo mật
D. Một công cụ để phân tích code
19. Phương pháp luận Agile nhấn mạnh điều gì trong quá trình phát triển phần mềm?
A. Tuân thủ nghiêm ngặt kế hoạch ban đầu
B. Tài liệu đầy đủ và chi tiết
C. Linh hoạt và thích ứng với thay đổi
D. Phân công công việc rõ ràng từ đầu dự án
20. Trong kiểm thử phần mềm, 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. Hiệu năng của phần mềm
C. Chức năng và hành vi của phần mềm
D. Mức độ sử dụng tài nguyên của phần mềm
21. Đâu là một kỹ thuật để quản lý yêu cầu thay đổi trong một dự án phần mềm?
A. Bỏ qua tất cả các yêu cầu thay đổi
B. Sử dụng ma trận theo dõi yêu cầu (requirements traceability matrix)
C. Chấp nhận tất cả các yêu cầu thay đổi
D. Áp dụng thay đổi ngay lập tức mà không cần đánh giá
22. Đâu là mục tiêu của kiểm thử hồi quy (Regression Testing)?
A. Tìm lỗi trong code mới được thêm vào
B. Đảm bảo các thay đổi không gây ra lỗi mới
C. Kiểm tra hiệu năng của phần mềm
D. Đánh giá mức độ hài lòng của người dùng
23. Trong quy trình CI/CD, CI là viết tắt của cụm từ nào?
A. Continuous Integration
B. Continuous Improvement
C. Critical Infrastructure
D. Code Inspection
24. Đâ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. Quản lý và theo dõi thay đổi của code
C. Tự động sửa lỗi code
D. Tối ưu hóa hiệu năng của phần mềm
25. Trong bảo mật phần mềm, SQL injection là gì?
A. Một loại virus máy tính
B. Một kỹ thuật tấn công bằng cách chèn mã SQL độc hại vào truy vấn
C. Một lỗi trong trình biên dịch SQL
D. Một phương pháp tối ưu hóa cơ sở dữ liệu
26. Đâu là một phương pháp để ước tính thời gian và chi phí cho một dự án phần mềm?
A. Tung đồng xu
B. Sử dụng phương pháp PERT (Program Evaluation and Review Technique)
C. Hỏi ý kiến người thân
D. Đoán mò
27. Đâu là một công cụ phổ biến để quản lý dự án phần mềm theo phương pháp Agile?
A. Microsoft Project
B. Jira
C. Excel
D. Word
28. Đâu là một lợi ích của việc sử dụng containerization (ví dụ: Docker) trong phát triển phần mềm?
A. Tăng tốc độ viết code
B. Đảm bảo tính nhất quán của môi trường triển khai
C. Giảm thiểu rủi ro bảo mật
D. Tự động sửa lỗi code
29. Trong mô hình thác nước (Waterfall), giai đoạn nào tập trung vào việc xác định yêu cầu của người dùng và hệ thống?
A. Thiết kế hệ thống
B. Kiểm thử
C. Bảo trì
D. Phân tích yêu cầu
30. Trong lĩnh vực phát triển phần mềm, thuật ngữ `YAGNI` là viết tắt của cụm từ nào và nó có ý nghĩa gì?
A. Yet Another GUI Navigation Interface, chỉ một giao diện điều hướng đồ họa khác
B. You Aren`t Gonna Need It, không nên thêm chức năng cho đến khi thực sự cần thiết
C. Your Application Generates New Instances, ứng dụng của bạn tạo ra các thể hiện mới
D. Yielding Advanced Graphics and Networking Innovation, tạo ra đồ họa tiên tiến và đổi mới mạng