1. Trong mô hình V-model, giai đoạn `Unit Testing′ tương ứng với giai đoạn nào của Requirement?
A. System Requirement.
B. Acceptance Requirement.
C. Component Requirement (hoặc Module Requirement).
D. Business Requirement.
2. Trong ngữ cảnh kiểm thử phần mềm, `Black-box testing′ (Kiểm thử hộp đen) tập trung vào điều gì?
A. Kiểm tra cấu trúc code bên trong của phần mềm.
B. Kiểm tra các đường dẫn thực thi và luồng dữ liệu trong code.
C. Kiểm tra chức năng của phần mềm dựa trên đặc tả yêu cầu, không cần biết cấu trúc bên trong.
D. Kiểm tra hiệu năng và khả năng chịu tải của hệ thống.
3. Đâ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 chương trình.
B. Quản lý và theo dõi thay đổi của mã nguồn, hỗ trợ làm việc nhóm hiệu quả.
C. Tự động phát hiện và sửa lỗi code.
D. Cải thiện giao diện người dùng của ứng dụng.
4. Trong thiết kế hướng đối tượng, `Inheritance′ (Kế thừa) cho phép điều gì?
A. Đóng gói dữ liệu và phương thức bên trong một đối tượng.
B. Một lớp con kế thừa thuộc tính và phương thức từ lớp cha.
C. Một đối tượng có thể thuộc về nhiều lớp khác nhau.
D. Các đối tượng giao tiếp với nhau thông qua thông điệp.
5. Thuật ngữ `Technical Debt′ (Nợ kỹ thuật) trong công nghệ phần mềm dùng để chỉ điều gì?
A. Chi phí đầu tư vào cơ sở hạ tầng kỹ thuật.
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.
C. Khoản nợ tài chính phát sinh trong quá trình phát triển dự án.
D. Các lỗi và bug còn tồn tại trong phần mềm sau khi triển khai.
6. Đâu không phải là một giai đoạn chính trong vòng đời phát triển phần mềm (SDLC)?
A. Thiết kế (Design).
B. Kiểm thử (Testing).
C. Marketing.
D. Bảo trì (Maintenance).
7. Đâu là một framework phổ biến cho kiểm thử tự động (Test Automation) trong phát triển web?
A. JUnit.
B. Selenium.
C. Maven.
D. Git.
8. Nguyên tắc `DRY′ (Don′t Repeat Yourself) trong lập trình hướng tới mục tiêu chính nào?
A. Tăng tốc độ thực thi của chương trình.
B. Giảm thiểu sự trùng lặp code, tăng tính tái sử dụng và dễ bảo trì.
C. Tối ưu hóa bộ nhớ sử dụng của chương trình.
D. Tăng cường tính bảo mật của ứng dụng.
9. Nguyên tắc `KISS′ (Keep It Simple, Stupid) trong lập trình khuyến khích điều gì?
A. Viết code phức tạp và tối ưu hóa.
B. Giữ cho thiết kế và code đơn giản, dễ hiểu.
C. Sử dụng các công nghệ mới nhất và phức tạp nhất.
D. Tối đa hóa số lượng tính năng trong phần mềm.
10. Phương pháp Agile Manifesto nhấn mạnh giá trị nào hơn trong phát triển phần mềm?
A. Quy trình và công cụ hơn là cá nhân và tương tác.
B. Tài liệu toàn diện hơn là phần mềm chạy tốt.
C. Hợp đồng và đàm phán hơn là cộng tác với khách hàng.
D. Cá nhân và tương tác hơn là quy trình và công cụ.
11. Chỉ số `Cyclomatic Complexity′ đo lường điều gì trong code phần mềm?
A. Số lượng dòng code.
B. Mức độ phức tạp của luồng điều khiển trong code.
C. Thời gian thực thi của chương trình.
D. Mức độ sử dụng bộ nhớ của chương trình.
12. Mô hình phát triển phần mềm Waterfall (Thác nước) phù hợp nhất với loạ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 ngắn và yêu cầu linh hoạt.
C. Dự án có yêu cầu rõ ràng, ổn định và ít thay đổi.
D. Dự án ưu tiên tương tác liên tục với khách hàng trong quá trình phát triển.
13. Khái niệm `Coupling′ (Độ liên kết) trong thiết kế phần mềm đề cập đến điều gì?
A. Mức độ liên quan giữa các module hoặc thành phần khác nhau của phần mềm.
B. Số lượng dòng code trong một module.
C. Tốc độ giao tiếp giữa các thành phần phần mềm.
D. Mức độ dễ dàng tái sử dụng một module trong các dự án khác.
14. Phương pháp kiểm thử `White-box testing′ (Kiểm thử hộp trắng) đòi hỏi điều gì?
A. Chỉ dựa vào đặc tả yêu cầu.
B. Hiểu biết về cấu trúc code bên trong của phần mềm.
C. Không cần kiến thức về lập trình.
D. Chỉ kiểm tra giao diện người dùng.
15. Mục đích chính của `Code review′ (Rà soát code) là gì?
A. Tự động sửa lỗi code.
B. Tìm kiếm lỗi, 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 tốc độ viết code.
16. Trong quản lý dự án phần mềm, `Scope creep′ (Lệch phạm vi) đề cập đến vấn đề gì?
A. Dự án bị chậm tiến độ so với kế hoạch.
B. Ngân sách dự án bị vượt quá.
C. Yêu cầu dự án liên tục thay đổi và mở rộng ngoài phạm vi ban đầu.
D. Nhóm dự án thiếu nhân lực.
17. Trong lập trình hướng đối tượng, `Polymorphism′ (Đa hình) cho phép điều gì?
A. Ẩn thông tin và dữ liệu bên trong đối tượng.
B. Một đối tượng có thể có nhiều trạng thái khác nhau.
C. Các đối tượng thuộc các lớp khác nhau có thể phản ứng khác nhau với cùng một phương thức.
D. Tạo ra các đối tượng phức tạp từ các đối tượng đơn giản hơn.
18. Trong thiết kế cơ sở dữ liệu, `Normalization′ (Chuẩn hóa) nhằm mục đích chính gì?
A. Tăng tốc độ truy vấn dữ liệu.
B. Giảm thiểu sự dư thừa dữ liệu và cải thiện tính nhất quán.
C. Tăng cường bảo mật dữ liệu.
D. Đơn giản hóa cấu trúc cơ sở dữ liệu.
19. Thuật ngữ `Continuous Integration′ (Tích hợp liên tục) trong DevOps đề cập đến quy trình nào?
A. Triển khai phần mềm lên môi trường production một cách liên tục.
B. Tích hợp code thường xuyên và tự động từ nhiều nhà phát triển vào một repository chung.
C. Kiểm thử phần mềm tự động liên tục trong quá trình phát triển.
D. Thu thập phản hồi từ người dùng liên tục sau khi phát hành phần mềm.
20. UML (Unified Modeling Language) được sử dụng chủ yếu cho mục đích gì trong phát triển phần mềm?
A. Viết mã nguồn chương trình.
B. Quản lý cơ sở dữ liệu.
C. Mô hình hóa và trực quan hóa thiết kế hệ thống phần mềm.
D. Kiểm thử hiệu năng phần mềm.
21. Trong mô hình Scrum, `Product Backlog′ là gì?
A. Danh sách các lỗi cần sửa trong sprint hiện tại.
B. Danh sách ưu tiên các tính năng, yêu cầu và cải tiến cần thực hiện cho sản phẩm.
C. Báo cáo tiến độ công việc hàng ngày của nhóm phát triển.
D. Kế hoạch kiểm thử cho sprint tiếp theo.
22. Khái niệm `Refactoring′ (Tái cấu trúc mã nguồn) trong lập trình là gì?
A. Viết lại toàn bộ mã nguồn từ đầu.
B. Thay đổi mã nguồn để cải thiện cấu trúc, tính dễ đọc và bảo trì, mà không thay đổi chức năng bên ngoài.
C. Sửa lỗi và bug trong mã nguồn.
D. Tối ưu hóa hiệu suất của chương trình.
23. Trong mô hình Scrum, `Sprint′ là gì?
A. Một cuộc họp hàng ngày của nhóm phát triển.
B. Một giai đoạn phát triển ngắn, lặp đi lặp lại, thường kéo dài từ 1 đến 4 tuần.
C. Vai trò của người quản lý dự án trong Scrum.
D. Bảng theo dõi tiến độ công việc của nhóm Scrum.
24. Mục tiêu chính của quy trình Requirement Elicitation (Thu thập yêu cầu) trong kỹ nghệ phần mềm là gì?
A. Thiết kế kiến trúc hệ thống.
B. Xác định và ghi lại đầy đủ nhu cầu của người dùng và các bên liên quan.
C. Viết mã nguồn cho ứng dụng.
D. Thực hiện kiểm thử phần mềm.
25. Đâu là một loại kiểm thử hiệu năng (Performance testing)?
A. Unit testing.
B. Functional testing.
C. Load testing.
D. Usability testing.
26. Mục tiêu của `Design Patterns′ (Mẫu thiết kế) trong công nghệ phần mềm là gì?
A. Tạo ra các thuật toán mới để giải quyết các vấn đề cụ thể.
B. Cung cấp cá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.
C. Tăng tốc độ phát triển phần mềm bằng cách tự động sinh code.
D. Giảm thiểu số lượng dòng code cần viết.
27. Phương pháp kiểm thử `Unit testing′ (Kiểm thử đơn vị) tập trung vào việc kiểm tra thành phần nào của phần mềm?
A. Toàn bộ hệ thống phần mềm sau khi tích hợp.
B. Từng module hoặc thành phần nhỏ nhất, độc lập của phần mềm.
C. Giao diện người dùng của phần mềm.
D. Hiệu năng của phần mềm dưới tải lớn.
28. Trong quy trình phát triển phần mềm, `Acceptance testing′ (Kiểm thử chấp nhận) được thực hiện bởi ai?
A. Nhóm phát triển phần mềm.
B. Nhóm kiểm thử độc lập.
C. Người dùng cuối hoặc khách hàng.
D. Quản lý dự án.
29. Trong kiểm thử phần mềm, `Regression testing′ (Kiểm thử hồi quy) được thực hiện khi nào?
A. Trước khi phát hành phiên bản phần mềm mới.
B. Sau khi sửa lỗi hoặc thêm tính năng mới, để đảm bảo các thay đổi không gây ra lỗi ở những phần khác.
C. Trong giai đoạn lập kế hoạch dự án.
D. Khi phát hiện lỗi nghiêm trọng trong quá trình sử dụng thực tế.
30. Công cụ `Docker′ thường được sử dụng để làm gì trong quy trình DevOps?
A. Quản lý cơ sở dữ liệu.
B. Đóng gói và triển khai ứng dụng trong container.
C. Kiểm thử tự động giao diện người dùng.
D. Phân tích code tĩnh.