1. Công cụ quản lý phiên bản Git chủ yếu được sử dụng để làm gì trong phát triển phần mềm?
A. Tối ưu hóa hiệu suất cơ sở dữ liệu
B. Quản lý và theo dõi thay đổi mã nguồn
C. Kiểm thử tự động giao diện người dùng
D. Triển khai ứng dụng lên máy chủ đám mây
2. Trong kiểm thử hiệu năng (Performance Testing), 'Stress Testing' nhằm mục đích gì?
A. Kiểm tra chức năng cơ bản của phần mềm
B. Đánh giá hiệu năng của phần mềm dưới tải trọng bình thường
C. Xác định điểm giới hạn chịu tải và độ ổn định của phần mềm dưới tải trọng cực lớn
D. Kiểm tra khả năng bảo mật của phần mềm
3. Nguyên tắc SOLID trong lập trình hướng đối tượng bao gồm chữ 'L' đại diện cho nguyên tắc nào?
A. Liskov Substitution Principle
B. Law of Demeter
C. Least Knowledge Principle
D. Loose Coupling Principle
4. Tiêu chí 'Cohesion' và 'Coupling' được sử dụng để đánh giá khía cạnh nào của thiết kế phần mềm?
A. Hiệu suất và khả năng mở rộng
B. Tính bảo mật và độ tin cậy
C. Tính module hóa và cấu trúc
D. Giao diện người dùng và trải nghiệm người dùng
5. Phương pháp luận Agile nhấn mạnh điều gì trong phát triển phần mềm?
A. Tài liệu toàn diện
B. Tuân thủ nghiêm ngặt kế hoạch
C. Phản hồi từ khách hàng và sự linh hoạt
D. Quy trình phát triển tuyến tính
6. Quy trình CI/CD (Continuous Integration/Continuous Delivery) nhằm mục đích chính là gì?
A. Tăng cường bảo mật phần mềm
B. Tự động hóa quy trình phát triển và triển khai phần mềm
C. Giảm chi phí phần cứng
D. Cải thiện giao diện người dùng
7. Trong kiểm thử phần mềm, kiểm thử hộp đen (black-box testing) tập trung vào khía cạnh nào?
A. Cấu trúc code bên trong
B. Luồng dữ liệu trong chương trình
C. Chức năng và yêu cầu của phần mềm
D. Độ phức tạp của thuật toán
8. Phương pháp 'Test-Driven Development' (TDD) có quy trình làm việc như thế nào?
A. Viết code trước, sau đó viết test
B. Viết test trước, sau đó viết code để pass test
C. Viết code và test song song
D. Không sử dụng test trong quá trình phát triển
9. Phương pháp 'Pair Programming' trong Agile mang lại lợi ích gì?
A. Giảm thời gian phát triển
B. Tăng số lượng code được viết
C. Cải thiện chất lượng code và chia sẻ kiến thức
D. Giảm chi phí nhân công
10. Trong bảo trì phần mềm, loại bảo trì nào liên quan đến việc sửa lỗi sau khi phần mềm đã được triển khai?
A. Bảo trì phòng ngừa (Preventive Maintenance)
B. Bảo trì thích ứng (Adaptive Maintenance)
C. Bảo trì hoàn thiện (Perfective Maintenance)
D. Bảo trì khắc phục (Corrective Maintenance)
11. Công nghệ 'Virtualization' mang lại lợi ích gì trong triển khai phần mềm?
A. Tăng tốc độ phát triển phần mềm
B. Giảm chi phí phần cứng và tăng tính linh hoạt
C. Cải thiện bảo mật cơ sở dữ liệu
D. Đơn giản hóa giao diện người dùng
12. Khái niệm 'Code Smell' trong lập trình đề cập đến điều gì?
A. Lỗi cú pháp trong mã nguồn
B. Các mẫu code có thể chỉ ra vấn đề sâu xa hơn về thiết kế hoặc chất lượng mã
C. Các đoạn code không được kiểm thử
D. Các dòng code dài và khó đọc
13. Loại kiểm thử nào sau đây được thực hiện bởi người dùng cuối để đảm bảo phần mềm đáp ứng nhu cầu của họ?
A. Kiểm thử đơn vị (Unit Testing)
B. Kiểm thử tích hợp (Integration Testing)
C. Kiểm thử chấp nhận (Acceptance Testing)
D. Kiểm thử hệ thống (System Testing)
14. Khái niệm 'Technical Specification' trong công nghệ phần mềm dùng để chỉ điều gì?
A. Kế hoạch kiểm thử chi tiết
B. Tài liệu mô tả chi tiết về cách phần mềm sẽ được xây dựng và hoạt động
C. Bản mô tả yêu cầu người dùng
D. Hướng dẫn cài đặt phần mềm
15. 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 cứng
B. Lựa chọn thiết kế ngắn hạn, không tối ưu, gây ra vấn đề trong tương lai
C. Sự chậm trễ trong tiến độ dự án do lỗi kỹ thuật
D. Chi phí đào tạo nhân viên kỹ thuật
16. Đâu là thách thức chính khi phát triển phần mềm theo mô hình Agile cho các dự án lớn và phức tạp?
A. Thiếu sự tham gia của khách hàng
B. Khó khăn trong việc lập kế hoạch chi tiết từ đầu
C. Khả năng mở rộng kém
D. Chi phí phát triển cao hơn
17. Trong mô hình MVC (Model-View-Controller), thành phần 'Controller' có vai trò chính là gì?
A. Hiển thị dữ liệu cho người dùng
B. Xử lý logic nghiệp vụ và tương tác với Model
C. Lưu trữ và quản lý dữ liệu
D. Định nghĩa giao diện người dùng
18. Phương pháp kiểm thử 'Integration Testing' tập trung vào việc kiểm tra điều gì?
A. Chức năng của từng module riêng lẻ
B. Sự tương tác giữa các module khác nhau
C. Hiệu suất của toàn bộ hệ thống
D. Tính bảo mật của ứng dụng
19. Trong mô hình Scrum, 'Product Backlog' là gì?
A. Danh sách các lỗi cần sửa
B. Danh sách các công việc cần thực hiện trong Sprint
C. Danh sách tất cả các tính năng, yêu cầu, cải tiến mong muốn cho sản phẩm
D. Báo cáo tiến độ dự án
20. Phương pháp kiểm thử 'Unit Testing' thường được thực hiện ở cấp độ nào trong quá trình phát triển phần mềm?
A. Toàn bộ hệ thống
B. Tích hợp các module
C. Từng đơn vị mã nguồn (hàm, lớp)
D. Giao diện người dùng
21. Trong quản lý dự án phần mềm, 'Scope Creep' là hiện tượng gì?
A. Sự chậm trễ trong tiến độ dự án
B. Việc thay đổi yêu cầu liên tục và không kiểm soát, dẫn đến dự án vượt quá phạm vi ban đầu
C. Sự cố về hiệu suất phần mềm
D. Việc thiếu hụt nguồn lực dự án
22. Khái niệm 'Refactoring' khác với 'Debugging' ở điểm nào?
A. Refactoring sửa lỗi chức năng, Debugging cải thiện hiệu suất
B. Refactoring thay đổi chức năng, Debugging giữ nguyên chức năng
C. Refactoring cải thiện cấu trúc mã, Debugging sửa lỗi chức năng
D. Refactoring dùng cho kiểm thử, Debugging dùng cho phát triển
23. Trong quy trình Scrum, 'Sprint' là gì?
A. Cuộc họp hàng ngày của đội phát triển
B. Một khoảng thời gian cố định (thường từ 1-4 tuần) để đội phát triển hoàn thành một lượng công việc nhất định
C. Danh sách các công việc cần thực hiện trong dự án
D. Vai trò của người quản lý dự án
24. Đâu là mục tiêu chính của việc tái cấu trúc mã nguồn (code refactoring)?
A. Thêm chức năng mới cho phần mềm
B. Sửa lỗi và cải thiện hiệu suất
C. Cải thiện cấu trúc và khả năng đọc hiểu của mã nguồn mà không thay đổi chức năng bên ngoài
D. Tăng tốc độ biên dịch chương trình
25. Đâu là nhược điểm chính của mô hình Waterfall trong phát triển phần mềm?
A. Khó thích ứng với thay đổi yêu cầu
B. Yêu cầu tài liệu quá nhiều
C. Thời gian phát triển nhanh
D. Dễ dàng quản lý dự án lớn
26. Trong UML (Unified Modeling Language), loại biểu đồ nào được sử dụng để mô tả tương tác giữa các đối tượng theo thời gian?
A. Biểu đồ lớp (Class Diagram)
B. Biểu đồ trình tự (Sequence Diagram)
C. Biểu đồ hoạt động (Activity Diagram)
D. Biểu đồ thành phần (Component Diagram)
27. Công cụ Docker được sử dụng chủ yếu trong công nghệ phần mềm để làm gì?
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ử hiệu năng ứng dụng
D. Phân tích mã nguồn tĩnh
28. Đặc điểm nào sau đây KHÔNG phải là của kiến trúc Microservices?
A. Tính độc lập triển khai
B. Tính liên kết chặt chẽ giữa các dịch vụ
C. Khả năng mở rộng linh hoạt
D. Công nghệ đa dạng
29. Đâu là lợi ích chính của việc sử dụng Design Patterns trong thiết kế phần mềm?
A. Tăng tốc độ biên dịch chương trình
B. Cải thiện hiệu suất cơ sở dữ liệu
C. Cung cấp giải pháp đã được kiểm chứng cho các vấn đề thiết kế phổ biến
D. Tự động tạo mã nguồn
30. Đâu là mô hình phát triển phần mềm mà các giai đoạn được thực hiện tuần tự và kết quả của giai đoạn trước là đầu vào cho giai đoạn sau?
A. Mô hình Agile
B. Mô hình Waterfall
C. Mô hình xoắn ốc
D. Mô hình RAD