1. Trong kiểm thử phần mềm, 'Độ bao phủ mã' (Code coverage) được dùng để đo lường điều gì?
A. Số lượng lỗi được 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 độ phức tạp của mã nguồn.
2. Phương pháp 'Phân tích yêu cầu' (Requirements Analysis) đóng vai trò gì trong quy trình phát triển phần mềm?
A. Viết mã chương trình dựa trên thiết kế đã có.
B. Xác định và làm rõ các nhu cầu và mong muốn của người dùng đối với phần mềm.
C. Kiểm tra chất lượng mã nguồn sau khi phát triển.
D. Triển khai phần mềm lên môi trường sử dụng.
3. Công cụ quản lý phiên bản Git thường được sử dụng để làm gì trong phát triển phần mềm?
A. Tự động hóa quá trình kiểm thử phần mềm.
B. Theo dõi và quản lý các thay đổi của mã nguồn theo thời gian.
C. Triển khai ứng dụng lên môi trường sản xuất.
D. Thiết kế giao diện người dùng cho ứng dụng.
4. Trong mô hình Kanban, 'WIP limit' (Work In Progress limit) có ý nghĩa gì?
A. Giới hạn thời gian cho mỗi công việc trong quy trình.
B. Giới hạn số lượng công việc đang thực hiện ở mỗi giai đoạn của quy trình.
C. Giới hạn số lượng thành viên trong nhóm phát triển.
D. Giới hạn kích thước của Product Backlog.
5. Kiến trúc 'Microservices' mang lại lợi ích chính nào sau đây?
A. Giảm độ phức tạp trong việc triển khai và bảo trì toàn bộ hệ thống.
B. Tăng tính gắn kết giữa các thành phần của hệ thống.
C. Cho phép phát triển và triển khai độc lập các thành phần nhỏ của ứng dụng.
D. Đảm bảo tính toàn vẹn dữ liệu trên toàn hệ thống một cách tập trung.
6. Phương pháp 'TDD' (Test-Driven Development) là gì?
A. Phát triển phần mềm dựa trên tài liệu đặc tả.
B. Phát triển phần mềm dựa trên kiểm thử, viết kiểm thử trước khi viết mã.
C. Phát triển phần mềm theo mô hình thác nước.
D. Phát triển phần mềm dựa trên phản hồi của người dùng.
7. Nguyên tắc 'DRY' (Don't Repeat Yourself) trong lập trình khuyến khích điều gì?
A. Viết mã nguồn chi tiết và dễ hiểu cho người mới bắt đầu.
B. Tránh lặp lại mã nguồn bằng cách tái sử dụng và trừu tượng hóa.
C. Kiểm thử mã nguồn thường xuyên và liên tục.
D. Tối ưu hóa hiệu suất mã nguồn bằng cách giảm số dòng code.
8. Đâ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) truyền thống?
A. Thu thập yêu cầu.
B. Thiết kế.
C. Triển khai.
D. Marketing sản phẩm.
9. Công cụ 'SonarQube' thường được sử dụng để làm gì trong phát triển phần mềm?
A. Quản lý dự án và theo dõi tiến độ.
B. Phân tích tĩnh mã nguồn để phát hiện lỗi, lỗ hổng bảo mật và các vấn đề về chất lượng mã.
C. Tự động hóa quá trình triển khai phần mềm.
D. Kiểm thử hiệu năng của ứng dụng web.
10. Phương pháp 'Kiểm thử đơn vị' (Unit testing) 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.
B. Từng module hoặc lớp riêng lẻ.
C. Giao diện người dùng.
D. Cơ sở dữ liệu.
11. Đâu là lợi ích chính của việc sử dụng 'Dependency Injection' (DI) trong phát triển phần mềm?
A. Tăng hiệu suất thực thi của chương trình.
B. Giảm sự phụ thuộc giữa các thành phần, tăng tính module hóa và khả năng kiểm thử.
C. Đơn giản hóa quá trình triển khai phần mềm.
D. Cải thiện giao diện người dùng của ứng dụng.
12. Đâu là mục tiêu chính của giai đoạn 'Kiểm thử tích hợp' (Integration testing)?
A. Kiểm tra từng đơn vị mã nguồn riêng lẻ.
B. Kiểm tra sự tương tác và làm việc cùng nhau của các module hoặc thành phần khác nhau của phần mềm.
C. Kiểm tra phần mềm trên môi trường sản xuất thực tế.
D. Kiểm tra hiệu suất của toàn bộ hệ thống.
13. Trong thiết kế API, RESTful API thường sử dụng giao thức nào để truyền dữ liệu?
A. TCP.
B. UDP.
C. HTTP.
D. SMTP.
14. Mục tiêu chính của 'Kiểm soát cấu hình' (Configuration management) là gì?
A. Đảm bảo phần mềm chạy nhanh và hiệu quả.
B. Quản lý và kiểm soát các thay đổi đối với phần mềm và môi trường của nó trong suốt vòng đời.
C. Bảo vệ phần mềm khỏi các tấn công mạng.
D. Đo lường hiệu suất làm việc của nhóm phát triển.
15. Khái niệm 'Technical debt' (Nợ kỹ thuật) trong công nghệ 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 mã hóa không tối ưu trong ngắn hạn để đạt được mục tiêu 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 quá dự kiến cho dự án phần mềm.
16. Trong mô hình Agile, khái niệm 'Sprint' dùng để chỉ điều gì?
A. Một cuộc họp hàng ngày để cập nhật tiến độ công việc.
B. Một khoảng thời gian cố định (thường từ 1-4 tuần) để hoàn thành một tập hợp các công việc cụ thể.
C. Một phương pháp đo lường hiệu suất của nhóm phát triển.
D. Một tài liệu mô tả yêu cầu của khách hàng.
17. Trong quy trình kiểm thử phần mềm, 'Kiểm thử hộp đen' (Black-box testing) tập trung vào điều gì?
A. Cấu trúc mã nguồn và logic bên trong của phần mềm.
B. Giao diện người dùng 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.
18. Khái niệm 'Containerization' (Ví dụ: Docker) giúp giải quyết vấn đề gì trong triển khai phần mềm?
A. Tăng tốc độ phát triển mã nguồn.
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 chi phí lưu trữ dữ liệu.
D. Cải thiện khả năng bảo mật của ứng dụng web.
19. Đâu là mục tiêu chính của 'Kiểm thử hiệu năng' (Performance testing)?
A. Đảm bảo phần mềm hoạt động đúng chức năng theo yêu cầu.
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 trước các tấn công.
D. Xác nhận phần mềm tương thích với các hệ điều hành và trình duyệt khác nhau.
20. Mô hình phát triển phần mềm 'Thác nước' (Waterfall) 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ông rõ ràng.
B. Dự án có thời gian hoàn thành ngắn và ưu tiên tốc độ.
C. Dự án có yêu cầu được xác định rõ ràng, ổn định và ít thay đổi.
D. Dự án cần sự tương tác liên tục với khách hàng trong quá trình phát triển.
21. Trong mô hình xoắn ốc (Spiral model), điều gì xảy ra ở mỗi vòng xoắn?
A. Chỉ thực hiện giai đoạn phát triển mã.
B. Chỉ thực hiện giai đoạn kiểm thử.
C. Thực hiện một vòng lặp của các giai đoạn: xác định mục tiêu, đánh giá và giảm thiểu rủi ro, phát triển và kiểm thử, lên kế hoạch cho vòng xoắn tiếp theo.
D. Chỉ thực hiện giai đoạn thu thập yêu cầu.
22. Khái niệm 'Tái cấu trúc mã nguồn' (Refactoring) nhằm mục đích gì?
A. Thêm chức năng mới vào phần mềm.
B. Sửa lỗi và cải thiện hiệu suất của phần mềm.
C. Cải thiện cấu trúc bên trong của mã nguồn mà không thay đổi chức năng bên ngoài.
D. Thay đổi giao diện người dùng của phần mềm.
23. Lỗi 'SQL Injection' thuộc loại lỗ hổng bảo mật nào?
A. Lỗi liên quan đến xác thực người dùng.
B. Lỗi cho phép kẻ tấn công thực thi mã SQL độc hại trên cơ sở dữ liệu.
C. Lỗi liên quan đến việc tràn bộ đệm.
D. Lỗi liên quan đến cấu hình máy chủ web.
24. Phương pháp kiểm thử 'Hồi quy' (Regression testing) được thực hiện khi nào?
A. Ngay sau khi viết mã nguồn mới.
B. Khi phát hiện ra lỗi trong quá trình kiểm thử.
C. Sau khi thực hiện các thay đổi hoặc sửa lỗi trong phần mềm.
D. Trước khi triển khai phần mềm lên môi trường sản xuất.
25. Nguyên tắc 'SOLID' trong thiết kế hướng đối tượng, 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 tri thức nhất).
D. Loose Coupling Principle (Nguyên tắc ghép lỏng lẻo).
26. Khái niệm 'Code smell' (Mùi mã) trong lập trình đề cập đến điều gì?
A. Các lỗi cú pháp trong mã nguồn.
B. Các dấu hiệu trong mã nguồn cho thấy có thể có vấn đề thiết kế hoặc mã hóa sâu hơn, cần được xem xét và cải thiện.
C. Các đoạn mã nguồn không được định dạng đúng theo coding standards.
D. Các đoạn mã nguồn có hiệu suất kém.
27. 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ảng theo dõi tiến độ công việc của nhóm phát triển trong Sprint.
D. Báo cáo đánh giá hiệu suất của Sprint sau khi kết thúc.
28. Khái niệm 'Continuous Integration' (CI) trong DevOps có nghĩa là gì?
A. Liên tục thu thập phản hồi từ người dùng cuối.
B. Liên tục tích hợp mã nguồn từ các nhà phát triển vào một kho chung thường xuyên.
C. Liên tục triển khai phần mềm lên môi trường sản xuất.
D. Liên tục giám sát hiệu suất của phần mềm trong quá trình vận hành.
29. Khái niệm nào sau đây mô tả chính xác nhất về 'Công nghệ phần mềm'?
A. Một tập hợp các công cụ và kỹ thuật để viết mã máy tính.
B. Một ngành khoa học máy tính tập trung vào thiết kế, phát triển, bảo trì và vận hành hệ thống phần mềm.
C. Quá trình tạo ra các ứng dụng web.
D. Việc sử dụng máy tính để giải quyết các bài toán kỹ thuật.
30. Trong lập trình hướng đối tượng, 'Tính đa hình' (Polymorphism) cho phép điều gì?
A. Ẩn thông tin chi tiết và chỉ hiển thị giao diện cần thiết.
B. Tạo ra các lớp mới dựa trên các lớp đã tồn tại.
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 thông điệp.
D. Nhóm các đối tượng có chung thuộc tính và hành vi vào một lớp.