1. Nguyên tắc `SOLID′ trong thiết kế hướng đối tượng bao gồm chữ `L′ đại diện cho nguyên tắc nào?
A. Liskov Substitution Principle (Nguyên tắc thay thế Liskov).
B. Law of Demeter (Luật Demeter).
C. Least Knowledge Principle (Nguyên tắc ít kiến thức nhất).
D. Loose Coupling Principle (Nguyên tắc ghép nối lỏng lẻo).
2. Chỉ số `Cyclomatic Complexity′ được dùng để đo lường điều gì trong mã nguồn?
A. Số dòng code trong chương trình.
B. Độ phức tạp về thời gian thực thi của thuật toán.
C. Độ phức tạp về logic và cấu trúc điều khiển của chương trình.
D. Mức độ sử dụng bộ nhớ của chương trình.
3. Đâu là một ví dụ về `mã độc′ (malware) thuộc loại `Trojan Horse′?
A. Virus lây lan qua file thực thi.
B. Worm tự lan truyền qua mạng.
C. Phần mềm giả mạo là hữu ích nhưng thực chất chứa mã độc hại.
D. Phần mềm tống tiền (Ransomware).
4. 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 dịch vụ đám mây.
B. Hậu quả của việc đưa ra các quyết định thiết kế hoặc lập trình không tối ưu trong ngắn hạn để đạt được tiến độ nhanh hơn.
C. Chi phí bảo trì phần mềm sau khi triển khai.
D. Ngân sách vượt mức dự kiến cho dự án phần mềm.
5. Trong quản lý dự án phần mềm, `biểu đồ Gantt′ được sử dụng để làm gì?
A. Phân tích rủi ro dự án.
B. Theo dõi tiến độ và lịch trình dự án.
C. Quản lý ngân sách dự án.
D. Phân công công việc cho các thành viên trong nhóm.
6. Phương pháp phát triển phần mềm `Scrum′ thuộc loại mô hình Agile nào?
A. Mô hình Waterfall.
B. Mô hình lặp và gia tăng.
C. Mô hình xoắn ốc.
D. Mô hình nguyên mẫu.
7. Đâu là một nguyên tắc quan trọng trong `Tuyên ngôn Agile′ (Agile Manifesto)?
A. Ưu tiên quy trình và công cụ hơn cá nhân và tương tác.
B. Ưu tiên tài liệu toàn diện hơn phần mềm chạy tốt.
C. Ưu tiên phản hồi với thay đổi hơn tuân theo kế hoạch.
D. Ưu tiên đàm phán hợp đồng hơn hợp tác với khách hàng.
8. Trong mô hình Scrum, `Product Owner′ chịu trách nhiệm chính về điều gì?
A. Quản lý và điều phối công việc hàng ngày của nhóm phát triển.
B. Đảm bảo chất lượng kỹ thuật của phần mềm.
C. Xác định và ưu tiên các tính năng sản phẩm, quản lý Product Backlog.
D. Viết mã nguồn và kiểm thử phần mềm.
9. Đâu là nhược điểm chính của mô hình phát triển phần mềm lặp (Iterative Development)?
A. Khó quản lý các thay đổi yêu cầu trong quá trình phát triển.
B. Đòi hỏi phải có đội ngũ phát triển có kinh nghiệm và kỹ năng cao.
C. Có thể dẫn đến việc lãng phí thời gian và nguồn lực nếu không được quản lý chặt chẽ.
D. Không phù hợp với các dự án lớn và phức tạp.
10. Đâ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 mã nguồn.
B. Cải thiện hiệu suất của phần mềm khi chạy.
C. Quản lý thay đổi mã nguồn, cho phép làm việc nhóm hiệu quả và phục hồi các phiên bản trước.
D. Tự động phát hiện và sửa lỗi trong mã nguồn.
11. Trong thiết kế hướng đối tượng, khái niệm `tính đóng gói′ (Encapsulation) nhằm mục đích gì?
A. Tăng cường tính linh hoạt của phần mềm.
B. Giảm sự phụ thuộc giữa các thành phần của phần mềm bằng cách ẩn thông tin và hành vi bên trong đối tượng.
C. Tái sử dụng mã nguồn hiệu quả hơn.
D. Cải thiện hiệu suất thực thi của chương trình.
12. Đâu là một ví dụ về `mẫu thiết kế` (Design Pattern) thuộc loại `Creational′?
A. Singleton.
B. Observer.
C. Strategy.
D. Template Method.
13. Đâu là một thách thức chính trong việc bảo trì phần mềm?
A. Sự phát triển nhanh chóng của công nghệ phần cứng.
B. Sự thay đổi yêu cầu của người dùng theo thời gian.
C. Việc lựa chọn ngôn ngữ lập trình phù hợp.
D. Việc đào tạo nhân viên phát triển phần mềm.
14. Đâu là một loại lỗi thường gặp trong giai đoạn `phân tích yêu cầu′ của dự án phần mềm?
A. Lỗi cú pháp trong mã nguồn.
B. Yêu cầu không rõ ràng, mâu thuẫn hoặc thiếu sót.
C. Lỗi logic trong thuật toán.
D. Lỗi cấu hình môi trường triển khai.
15. Trong kiểm thử bảo mật phần mềm, `SQL Injection′ là loại tấn công nào?
A. Tấn công từ chối dịch vụ (Denial of Service).
B. Tấn công leo thang đặc quyền (Privilege Escalation).
C. Tấn công bằng cách chèn mã SQL độc hại vào truy vấn cơ sở dữ liệu.
D. Tấn công giả mạo danh tính (Identity Spoofing).
16. Phương pháp `Refactoring′ trong lập trình là gì?
A. Viết lại toàn bộ mã nguồn từ đầu.
B. Tối ưu hóa hiệu suất của chương trình bằng cách thay đổi thuật toán.
C. Cải thiện cấu trúc và tính dễ đọc của mã nguồn mà không thay đổi chức năng bên ngoài.
D. Thêm các tính năng mới vào phần mềm.
17. Mục tiêu của `kiểm thử hiệu năng′ (Performance testing) là gì?
A. Tìm kiếm lỗi chức năng trong phần mềm.
B. Đánh giá khả năng đáp ứng, độ ổn định và khả năng mở rộng của phần mềm dưới các điều kiện tải khác nhau.
C. Kiểm tra tính bảo mật của phần mềm.
D. Đảm bảo giao diện người dùng thân thiện và dễ sử dụng.
18. Mô hình thác nước (Waterfall) trong quy trình phát triển phần mềm 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 quy mô nhỏ, yêu cầu được xác định rõ ràng và ít thay đổi.
C. Dự án cần triển khai nhanh chóng và linh hoạt.
D. Dự án nghiên cứu và phát triển công nghệ mới.
19. Phương pháp kiểm thử `Unit Testing′ thường được thực hiện ở giai đoạn nào của quy trình phát triển phần mềm?
A. Giai đoạn phân tích yêu cầu.
B. Giai đoạn thiết kế hệ thống.
C. Giai đoạn lập trình và phát triển.
D. Giai đoạn triển khai và bảo trì.
20. Khái niệm `Tích hợp liên tục′ (Continuous Integration - CI) trong DevOps nhằm mục đích gì?
A. Tự động hóa quá trình triển khai phần mềm lên môi trường production.
B. Tích hợp mã nguồn từ nhiều nhà phát triển vào kho chung một cách thường xuyên và tự động.
C. Giám sát hiệu suất ứng dụng trong môi trường production.
D. Quản lý cấu hình hạ tầng và môi trường.
21. Trong mô hình Agile, thuật ngữ `Sprint′ dùng để chỉ điều gì?
A. Một cuộc họp hàng ngày để cập nhật tiến độ dự á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. Quy trình kiểm thử phần mềm tự động.
D. Một phương pháp đánh giá rủi ro dự án.
22. Mục tiêu chính của Kỹ nghệ Phần mềm (Software Engineering) là gì?
A. Tạo ra phần mềm phức tạp nhất có thể.
B. Phát triển và duy trì các hệ thống phần mềm chất lượng, đúng thời hạn và trong phạm vi ngân sách.
C. Tối ưu hóa lợi nhuận từ việc bán phần mềm.
D. Nghiên cứu các thuật toán mới trong khoa học máy tính.
23. Đâu là một thách thức khi áp dụng kiến trúc Microservices?
A. Khó khăn trong việc triển khai và quản lý nhiều dịch vụ nhỏ.
B. Giảm hiệu suất của ứng dụng so với kiến trúc monolithic.
C. Khó khăn trong việc phát triển các dịch vụ độc lập.
D. Tăng chi phí phần cứng do yêu cầu tài nguyên lớn.
24. Đâu là mục tiêu chính của kiểm thử hồi quy (Regression testing)?
A. Kiểm tra các chức năng mới được thêm vào phần mềm.
B. Đảm bảo rằng các thay đổi mã nguồn mới không gây ra lỗi cho các chức năng hiện có.
C. Tìm kiếm lỗi bảo mật trong phần mềm.
D. Đánh giá hiệu suất của phần mềm dưới tải cao.
25. 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 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 hệ thống.
D. Tính bảo mật của phần mềm trước các tấn công mạng.
26. Yêu cầu phi chức năng (Non-functional requirements) mô tả khía cạnh nào của phần mềm?
A. Các chức năng và tính năng mà phần mềm phải cung cấp.
B. Cách phần mềm hoạt động, hiệu suất, độ tin cậy, bảo mật và khả năng sử dụng.
C. Giao diện người dùng và trải nghiệm người dùng.
D. Các ràng buộc về phần cứng và phần mềm mà phần mềm phải tuân thủ.
27. Đâu là một ví dụ về công cụ quản lý dự án phần mềm Agile phổ biến?
A. Microsoft Project.
B. Jira.
C. Primavera P6.
D. SAP Project System.
28. Đâu là một lợi ích của việc sử dụng `containerization′ (ví dụ: Docker) trong triển khai phần mềm?
A. Tăng tốc độ xử lý của ứng dụng.
B. Đảm bảo tính nhất quán của môi trường chạy ứng dụng trên các nền tảng khác nhau.
C. Giảm dung lượng lưu trữ của ứng dụng.
D. Tự động sửa lỗi trong mã nguồn.
29. Trong kiểm thử phần mềm, độ bao phủ mã (Code coverage) dùng để đo lường điều gì?
A. Số lượng lỗi được phát hiện 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 để thực hiện kiểm thử.
D. Số lượng trường hợp kiểm thử đã được thực hiện.
30. Trong thiết kế cơ sở dữ liệu, `chuẩn hóa′ (Normalization) nhằm mục đích 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 dữ liệu.
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.