1. Kiểu tấn công bảo mật nào lợi dụng các lỗ hổng trong mã nguồn ứng dụng web để chèn mã độc và thực thi trên trình duyệt người dùng?
A. SQL Injection
B. Cross-Site Scripting (XSS)
C. Denial of Service (DoS)
D. Man-in-the-Middle (MitM)
2. Phương pháp phát triển phần mềm 'DevOps' nhấn mạnh vào điều gì?
A. Phát triển phần mềm nhanh chóng với ít tài liệu.
B. Tự động hóa và hợp tác chặt chẽ giữa bộ phận phát triển và vận hành.
C. Tập trung vào kiểm thử phần mềm kỹ lưỡng trước khi triển khai.
D. Sử dụng các công nghệ mới nhất trong phát triển phần mềm.
3. Mô hình thác nước (Waterfall) trong quy trình phát triển phần mềm thuộc loại mô hình nào?
A. Mô hình lặp (Iterative)
B. Mô hình linh hoạt (Agile)
C. Mô hình tuần tự (Sequential)
D. Mô hình xoắn ốc (Spiral)
4. Khái niệm 'Microservices' trong kiến trúc phần mềm có ưu điểm chính nào sau đây so với kiến trúc monolithic truyền thống?
A. Dễ dàng triển khai và quản lý hơn một ứng dụng lớn duy nhất.
B. Hiệu suất tổng thể của hệ thống luôn cao hơn.
C. Chi phí phát triển và bảo trì luôn thấp hơn.
D. Bảo mật hệ thống luôn được đảm bảo tốt hơn.
5. Khái niệm 'Technical Debt' (Nợ kỹ thuật) trong phát triển phần mềm đề cập đến điều gì?
A. Chi phí cho việc mua bản quyền các công cụ kỹ thuật.
B. Hậu quả của việc đưa ra các quyết định thiết kế hoặc mã hóa không tối ưu trong ngắn hạn.
C. Thời gian trễ trong việc giao sản phẩm phần mềm cho khách hàng.
D. Số lượng lỗi phát sinh trong quá trình kiểm thử phần mềm.
6. 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. Adobe Photoshop
7. Trong kiểm thử phần mềm, kiểm thử hộp đen (Black-box testing) tập trung vào yếu tố nào?
A. Cấu trúc mã nguồn bên trong của phần mềm.
B. Hành vi và chức năng của phần mềm từ góc độ người dùng.
C. Hiệu suất và khả năng chịu tải của phần mềm.
D. Tính bảo mật của phần mềm trước các tấn công mạng.
8. Nguyên tắc 'YAGNI' (You Aren't Gonna Need It) trong phát triển phần mềm khuyến khích điều gì?
A. Viết mã nguồn càng tổng quát càng tốt để tái sử dụng.
B. Chỉ phát triển các tính năng cần thiết ở thời điểm hiện tại, tránh thêm các tính năng dự đoán trước.
C. Tập trung vào tối ưu hiệu suất mã nguồn ngay từ đầu.
D. Sử dụng các công nghệ mới nhất để đảm bảo tính hiện đại của phần mềm.
9. 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 bị sập.
B. Đánh giá hiệu suất của hệ thống dưới mức tải trọng dự kiến thông thường.
C. Mô phỏng số lượng người dùng đồng thời truy cập hệ thống để đánh giá hiệu suất.
D. Kiểm tra các lỗ hổng bảo mật liên quan đến hiệu suất.
10. 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 của phần mềm khi chạy.
B. Phát hiện lỗi và vấn đề tiềm ẩn trong mã nguồn mà không cần thực thi chương trình.
C. Tự động hóa quá trình kiểm thử chức năng.
D. Quản lý cấu hình và phiên bản của mã nguồn.
11. Mục đích chính của việc 'Refactoring' (Tái cấu trúc mã) là gì?
A. Thêm chức năng mới cho phần mềm.
B. Sửa lỗi trong mã nguồn.
C. Cải thiện cấu trúc và khả năng đọc hiểu của mã mà không thay đổi chức năng bên ngoài.
D. Tối ưu hiệu suất của phần mềm.
12. Đâu là mục tiêu chính của kỹ nghệ phần mềm?
A. Tạo ra phần mềm nhanh nhất có thể.
B. Phát triển phần mềm chất lượng, đúng hạn và trong ngân sách.
C. Viết mã nguồn phức tạp và tối ưu.
D. Sử dụng công nghệ mới nhất trong phát triển phần mềm.
13. Trong quản lý cấu hình phần mềm (Software Configuration Management), 'baseline' được sử dụng để làm gì?
A. Đánh dấu một trạng thái ổn định và được phê duyệt của sản phẩm phần mềm.
B. Theo dõi tiến độ phát triển của dự án.
C. Quản lý yêu cầu thay đổi từ khách hàng.
D. Ước tính chi phí và thời gian phát triển phần mềm.
14. Nguyên tắc SOLID nào đề cập đến việc một lớp (class) chỉ nên có một lý do duy nhất để thay đổi?
A. Nguyên tắc trách nhiệm đơn lẻ (Single Responsibility Principle)
B. Nguyên tắc đóng mở (Open/Closed Principle)
C. Nguyên tắc thay thế Liskov (Liskov Substitution Principle)
D. Nguyên tắc phân tách giao diện (Interface Segregation Principle)
15. Kiểu kiến trúc phần mềm nào tập trung vào việc phân chia ứng dụng thành các thành phần độc lập, giao tiếp qua mạng?
A. Kiến trúc lớp (Layered architecture)
B. Kiến trúc hướng dịch vụ (Microservices architecture)
C. Kiến trúc hướng đối tượng (Object-oriented architecture)
D. Kiến trúc dữ liệu trung tâm (Data-centered architecture)
16. Loại lỗi nào thường khó phát hiện nhất trong quá trình kiểm thử phần mềm?
A. Lỗi cú pháp (Syntax errors)
B. Lỗi logic (Logic errors)
C. Lỗi biên dịch (Compilation errors)
D. Lỗi giao diện người dùng (UI errors)
17. Phương pháp ước tính COCOMO II được sử dụng để làm gì trong kỹ nghệ phần mềm?
A. Ước tính chi phí và nỗ lực phát triển phần mềm.
B. Quản lý rủi ro dự án phần mềm.
C. Kiểm soát chất lượng mã nguồn.
D. Thiết kế kiến trúc phần mềm.
18. Trong ngữ cảnh kiểm thử phần mềm, 'Test Coverage' (Độ bao phủ kiểm thử) đo lường điều gì?
A. Số lượng lỗi tìm thấy trong quá trình kiểm thử.
B. Phần trăm mã nguồn đã được thực thi bởi các trường hợp kiểm thử.
C. Thời gian cần thiết để hoàn thành quá trình kiểm thử.
D. Mức độ khó của các trường hợp kiểm thử.
19. Trong kiểm soát phiên bản (Version Control), nhánh (branch) được sử dụng để làm gì?
A. Sao lưu toàn bộ mã nguồn dự án.
B. Phân chia công việc cho các thành viên trong nhóm.
C. Phát triển các tính năng mới hoặc sửa lỗi mà không ảnh hưởng đến nhánh chính.
D. Triển khai phần mềm lên môi trường sản xuất.
20. Yếu tố nào sau đây KHÔNG phải là một thành phần chính của yêu cầu phần mềm tốt?
A. Rõ ràng và không mơ hồ (Clear and unambiguous)
B. Có thể kiểm tra được (Testable)
C. Chi tiết kỹ thuật về cách hiện thực (Implementation details)
D. Có thể theo dõi được (Traceable)
21. Trong mô hình xoắn ốc (Spiral model), rủi ro được xem xét và xử lý ở giai đoạn nào?
A. Giai đoạn lập kế hoạch (Planning phase)
B. Giai đoạn phân tích rủi ro (Risk analysis phase)
C. Giai đoạn phát triển (Development phase)
D. Giai đoạn đánh giá (Evaluation phase)
22. Loại kiểm thử nào xác minh rằng phần mềm hoạt động đúng với các yêu cầu phi chức năng, ví dụ như hiệu suất, bảo mật, khả năng sử dụng?
A. Kiểm thử chức năng (Functional testing)
B. Kiểm thử phi chức năng (Non-functional testing)
C. Kiểm thử đơn vị (Unit testing)
D. Kiểm thử tích hợp (Integration testing)
23. Trong triển khai phần mềm, 'Continuous Integration' (Tích hợp liên tục) mang lại lợi ích chính nào?
A. Giảm thời gian kiểm thử phần mềm.
B. Tăng tốc độ phát triển phần mềm.
C. Phát hiện lỗi sớm và thường xuyên hơn.
D. Cải thiện khả năng giao tiếp giữa các thành viên trong nhóm.
24. Trong mô hình V-model, giai đoạn 'Unit Testing' (Kiểm thử đơn vị) tương ứng với giai đoạn nào ở phía bên 'Yêu cầu' của mô hình?
A. Yêu cầu hệ thống (System requirements)
B. Yêu cầu chấp nhận (Acceptance requirements)
C. Yêu cầu thành phần (Component requirements)
D. Yêu cầu thiết kế (Design requirements)
25. 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 đến 4 tuần) để hoàn thành một phần công việc.
C. Người chịu trách nhiệm chính cho sự thành công của dự án.
D. Danh sách các công việc cần thực hiện trong dự án.
26. Phương pháp Agile Manifesto ưu tiên điều gì hơn là quy trình và công cụ?
A. Tài liệu toàn diện
B. Hợp đồng và đàm phán
C. Cá nhân và tương tác
D. Kế hoạch chi tiết
27. Phương pháp thiết kế hướng đối tượng (Object-Oriented Design) tập trung vào việc tổ chức phần mềm dựa trên khái niệm nào?
A. Hàm và thủ tục (Functions and procedures)
B. Dữ liệu và cấu trúc dữ liệu (Data and data structures)
C. Đối tượng và lớp (Objects and classes)
D. Quy trình và luồng công việc (Processes and workflows)
28. Loại biểu đồ UML nào thường được sử dụng để mô hình hóa tương tác giữa các đối tượng theo trình tự thời gian?
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)
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. Khi bắt đầu dự án phát triển phần mềm.
B. Sau khi sửa lỗi hoặc thêm tính năng mới vào phần mềm.
C. Trước khi triển khai phần mềm lên môi trường sản xuất.
D. Định kỳ hàng tuần hoặc hàng tháng.
30. Đâu là hoạt động KHÔNG thuộc giai đoạn bảo trì phần mềm?
A. Sửa lỗi phát sinh sau triển khai.
B. Thêm chức năng mới theo yêu cầu người dùng.
C. Thu thập yêu cầu từ khách hàng.
D. Cải thiện hiệu suất của phần mềm.