1. Điều gì KHÔNG phải là một đặc điểm của 'mã tốt' trong lập trình?
A. Dễ đọc và dễ hiểu.
B. Hiệu suất cao và tốc độ thực thi nhanh.
C. Phức tạp và khó hiểu để tăng tính bảo mật.
D. Dễ bảo trì và mở rộng.
2. Phương pháp kiểm thử 'TDD' (Test-Driven Development) là gì?
A. Kiểm thử phần mềm sau khi đã hoàn thành phát triển.
B. Viết kiểm thử trước khi viết mã nguồn.
C. Kiểm thử hiệu suất của phần mềm.
D. Kiểm thử bảo mật của phần mềm.
3. Phương pháp phát triển phần mềm Agile nhấn mạnh yếu tố nào nhất?
A. Tuân thủ nghiêm ngặt kế hoạch đã định trước.
B. Tài liệu hóa chi tiết mọi giai đoạn phát triển.
C. Sự tương tác và hợp tác chặt chẽ giữa các thành viên và khách hàng.
D. Phân chia công việc một cách độc lập và ít giao tiếp.
4. Đâu là một rủi ro tiềm ẩn khi sử dụng mã nguồn mở (open-source software)?
A. Chi phí bản quyền cao.
B. Thiếu sự hỗ trợ kỹ thuật chuyên nghiệp và kịp thời.
C. Khó khăn trong việc tùy chỉnh và sửa đổi mã nguồn.
D. Tính bảo mật kém do mã nguồn công khai.
5. Đâu là một 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, phức tạp?
A. Thiếu tài liệu hướng dẫn chi tiết.
B. Khó khăn trong việc duy trì sự nhất quán và tích hợp giữa các nhóm phát triển lớn.
C. Thời gian phát triển kéo dài hơn so với mô hình thác nước.
D. Yêu cầu đội ngũ phát triển có kỹ năng giao tiếp kém.
6. Đâ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ằng tài khoản và mật khẩu.
B. Hệ thống phải 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.
7. 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 khoảng thời gian cố định để hoàn thành một phần công việc cụ thể.
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 trong Scrum.
8. 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 ưu tiên các tính năng, cải tiến và sửa lỗi cần thực hiện trong dự án.
C. Kế hoạch chi tiết cho mỗi Sprint.
D. Báo cáo tiến độ dự án.
9. Điều gì KHÔNG phải là một giai đoạn trong vòng đời phát triển phần mềm (SDLC) điển hình?
A. Phân tích yêu cầu.
B. Thiết kế hệ thống.
C. Marketing sản phẩm.
D. Kiểm thử phần mềm.
10. Đâu là mục tiêu chính của kiểm thử hồi quy (Regression testing)?
A. Tìm lỗi mới trong các tính năng mới.
B. Đảm bảo rằng các thay đổi mã nguồn không gây ra lỗi cho các chức năng đã hoạt động tốt trước đó.
C. Kiểm tra hiệu suất của phần mềm sau khi cập nhật.
D. Đánh giá mức độ hài lòng của người dùng.
11. Phương pháp 'code review' (đánh giá mã nguồn) được thực hiện để làm gì?
A. Tự động sửa lỗi chính tả trong mã.
B. Phát hiện lỗi, cải thiện chất lượng mã và chia sẻ kiến thức giữa các lập trình viên.
C. Tăng tốc độ biên dịch mã nguồn.
D. Đánh giá hiệu suất làm việc của lập trình viên.
12. Phương pháp 'pair programming' (lập trình cặp đôi) mang lại lợi ích nào?
A. Giảm thời gian phát triển dự án.
B. Tăng số lượng dòng code được viết ra.
C. Cải thiện chất lượng mã code và giảm lỗi thông qua việc đánh giá và trao đổi liên tục.
D. Giảm chi phí nhân công cho dự án.
13. Trong bảo trì phần mềm, bảo trì 'hoàn thiện' (perfective maintenance) là gì?
A. Sửa lỗi phần mềm.
B. Thích ứng phần mềm với môi trường mới.
C. Thêm chức năng mới hoặc cải thiện hiệu suất.
D. Ngăn chặn lỗi xảy ra trong tương lai.
14. Loại kiểm thử nào tập trung vào việc đảm bảo các thành phần phần mềm tích hợp với nhau hoạt động đúng đắn?
A. Kiểm thử đơn vị (Unit testing).
B. Kiểm thử tích hợp (Integration testing).
C. Kiểm thử hệ thống (System testing).
D. Kiểm thử chấp nhận (Acceptance testing).
15. Công nghệ 'cloud computing' (điện toán đám mây) mang lại lợi ích chính nào cho phát triển và triển khai phần mềm?
A. Giảm sự phụ thuộc vào Internet.
B. Khả năng mở rộng linh hoạt và giảm chi phí đầu tư ban đầu vào cơ sở hạ tầng.
C. Tăng cường bảo mật dữ liệu tuyệt đối.
D. Đơn giản hóa quá trình phát triển phần mềm.
16. Trong kiểm thử hiệu suất (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.
B. Đánh giá hiệu suất của hệ thống dưới tải trọng người dùng dự kiến.
C. Tìm kiếm lỗi bảo mật khi hệ thống chịu tải lớn.
D. Kiểm tra khả năng phục hồi của hệ thống sau sự cố.
17. Mô hình thác nước (Waterfall) trong phát triển phần mềm 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 và khó xác định từ đầu.
B. Dự án có quy mô nhỏ, thời gian ngắn và yêu cầu không rõ ràng.
C. Dự án có yêu cầu ổn định, rõ ràng và ít thay đổi trong suốt quá trình phát triển.
D. Dự án cần sự linh hoạt và thích ứng cao với phản hồi từ người dùng.
18. Trong quy trình phát triển phần mềm, giai đoạn nào quan trọng nhất để xác định yêu cầu của người dùng?
A. Giai đoạn thiết kế.
B. Giai đoạn lập trình.
C. Giai đoạn kiểm thử.
D. Giai đoạn phân tích yêu cầu.
19. 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. Số tiền nợ 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ế hoặc mã hóa vội vàng, thiếu chất lượng.
C. Chi phí bảo trì phần mềm trong tương lai.
D. Thời gian chậm trễ so với lịch trình dự án.
20. Trong ngữ cảnh DevOps, 'CI/CD' là viết tắt của cụm từ nào?
A. Continuous Integration / Creative Design.
B. Complex Implementation / Central Deployment.
C. Continuous Integration / Continuous Deployment (or Continuous Delivery).
D. Critical Infrastructure / Cloud Database.
21. Kiểm thử hộp đen (Black-box testing) tập trung vào khía cạnh nào của phần mềm?
A. Cấu trúc bên trong và logic của mã nguồn.
B. Giao diện và chức năng bên ngoài của phần mềm.
C. Hiệu suất và khả năng mở rộng của hệ thống.
D. Tính bảo mật của dữ liệu và hệ thống.
22. Khái niệm 'refactoring' (tái cấu trúc mã) 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 bên trong mà không thay đổi chức năng bên ngoài.
C. Thêm chức năng mới vào phần mềm.
D. Sửa lỗi bảo mật trong mã nguồn.
23. Công nghệ containerization (ví dụ Docker) giúp giải quyết vấn đề chính nào trong triển khai phần mềm?
A. Tăng tốc độ phát triển phần mềm.
B. Đảm bảo tính nhất quán của môi trường chạy phần mềm giữa các giai đoạn phát triển, kiểm thử và triển khai.
C. Giảm thiểu chi phí lưu trữ dữ liệu.
D. Tăng cường bảo mật cho ứng dụng web.
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) trong phát triển phần mềm?
A. Tăng tốc độ biên dịch mã nguồn.
B. Giảm thiểu lỗi cú pháp trong quá trình lập trình.
C. Cho phép nhiều người cùng làm việc trên một dự án mà không gây xung đột, theo dõi lịch sử thay đổi.
D. Tự động tối ưu hóa hiệu suất của phần mềm.
25. Đâu là một ví dụ về 'design pattern' (mẫu thiết kế) trong lập trình hướng đối tượng?
A. Bubble Sort.
B. Binary Search.
C. Singleton.
D. Linear Regression.
26. Công cụ nào sau đây KHÔNG phải là IDE (Integrated Development Environment) phổ biến cho lập trình viên?
A. Visual Studio Code.
B. Eclipse.
C. Microsoft Word.
D. IntelliJ IDEA.
27. Nguyên tắc SOLID trong thiết kế hướng đối tượng giúp đạt được mục tiêu chính nào?
A. Tăng tốc độ phát triển phần mềm.
B. Nâng cao hiệu suất thực thi của phần mềm.
C. Thiết kế phần mềm dễ bảo trì, mở rộng và tái sử dụng.
D. Giảm thiểu chi phí kiểm thử phần mềm.
28. Chức năng chính của một trình biên dịch (Compiler) là gì?
A. Chạy trực tiếp mã nguồn.
B. Chuyển đổi mã nguồn sang ngôn ngữ máy để máy tính có thể hiểu và thực thi.
C. Gỡ lỗi và sửa lỗi trong mã nguồn.
D. Quản lý bộ nhớ cho chương trình.
29. Ưu điểm chính của kiến trúc microservices so với kiến trúc monolithic là gì?
A. Dễ dàng triển khai và mở rộng quy mô độc lập cho từng dịch vụ.
B. Giảm độ phức tạp của việc phát triển và bảo trì.
C. Tăng tính bảo mật tổng thể của hệ thống.
D. Giảm chi phí phát triển ban đầu.
30. UML (Unified Modeling Language) được sử dụng để làm gì trong công nghệ phần mềm?
A. Viết mã nguồn chương trình.
B. Kiểm thử và gỡ lỗi phần mềm.
C. Mô hình hóa và thiết kế hệ thống phần mềm.
D. Quản lý dự án phần mềm.