1. Đâu là một ưu điểm của việc sử dụng ngôn ngữ lập trình hướng đối tượng (OOP)?
A. Giảm thiểu sử dụng bộ nhớ.
B. Tăng tốc độ thực thi chương trình.
C. Tăng tính tái sử dụng và dễ bảo trì của mã.
D. Đơn giản hóa việc quản lý bộ nhớ.
2. Trong kiểm thử phần mềm, `equivalence partitioning` là gì?
A. Phân chia dữ liệu đầu vào thành các nhóm tương đương để giảm số lượng test case.
B. Phân chia mã nguồn thành các module nhỏ để dễ kiểm thử.
C. Phân chia nhóm kiểm thử thành các nhóm nhỏ hơn.
D. Phân chia thời gian kiểm thử thành các giai đoạn khác nhau.
3. Đâu là mục tiêu của việc sử dụng kỹ thuật `code review`?
A. Tự động sửa lỗi cú pháp trong mã.
B. Tìm và sửa các lỗi logic và cải thiện chất lượng mã.
C. Tăng tốc độ thực thi của mã.
D. Giảm kích thước của file thực thi.
4. Đâu là một lợi ích của việc sử dụng `infrastructure as code` (IaC)?
A. Tăng tốc độ biên dịch mã.
B. Tự động hóa việc quản lý và cung cấp hạ tầng.
C. Giảm thiểu sử dụng bộ nhớ của ứng dụng.
D. Đơn giản hóa việc quản lý cơ sở dữ liệu.
5. Đâu là một đặc điểm của kiến trúc RESTful?
A. Sử dụng giao thức SOAP để trao đổi dữ liệu.
B. Các tài nguyên được xác định bằng các URL.
C. Yêu cầu trạng thái (stateful) giữa client và server.
D. Sử dụng XML làm định dạng dữ liệu duy nhất.
6. Đâu là một lợi ích của việc sử dụng kiến trúc hướng sự kiện (event-driven architecture)?
A. Giảm thiểu độ trễ giữa các dịch vụ.
B. Cho phép các dịch vụ giao tiếp với nhau một cách lỏng lẻo (loosely coupled).
C. Đơn giản hóa việc quản lý giao dịch.
D. Tăng cường tính bảo mật của ứng dụng.
7. Đâu là mục đích của việc sử dụng `design patterns` trong phát triển phần mềm?
A. Tăng tính bảo mật cho ứng dụng.
B. Cung cấp các giải pháp đã được chứng minh cho các vấn đề thiết kế phổ biến.
C. Giảm thiểu thời gian biên dịch mã.
D. Tự động tạo mã nguồn từ sơ đồ UML.
8. Đâ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 các tính năng mới vào phần mềm.
B. Sửa các lỗi (bugs) trong phần mềm.
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.
D. Tăng tốc độ thực thi của phần mềm.
9. Đâu là một lợi ích của việc sử dụng `test-driven development` (TDD)?
A. Giảm thiểu số lượng dòng code cần viết.
B. Cải thiện thiết kế của mã và giảm thiểu lỗi.
C. Tăng tốc độ biên dịch mã.
D. Đơn giản hóa quá trình triển khai.
10. Đâu là mục tiêu chính của việc sử dụng Continuous Integration (CI) trong phát triển phần mềm?
A. Tự động hóa việc triển khai phần mềm lên môi trường production.
B. Tích hợp mã nguồn thường xuyên và phát hiện lỗi sớm.
C. Quản lý yêu cầu của khách hàng một cách hiệu quả.
D. Tối ưu hóa hiệu suất của cơ sở dữ liệu.
11. Trong mô hình xoắn ốc (spiral model), rủi ro được đánh giá ở giai đoạn nào?
A. Giai đoạn lập kế hoạch.
B. Giai đoạn phân tích rủi ro.
C. Giai đoạn thiết kế.
D. Giai đoạn đánh giá.
12. Trong mô hình CMMI, mức độ nào thể hiện rằng quy trình phát triển phần mềm được định lượng và kiểm soát?
A. Mức 1: Initial.
B. Mức 2: Managed.
C. Mức 3: Defined.
D. Mức 4: Quantitatively Managed.
13. Đâu là một mục tiêu của việc sử dụng `behavior-driven development` (BDD)?
A. Tăng tốc độ thực thi của các test case.
B. Cải thiện sự giao tiếp và hợp tác giữa các thành viên trong nhóm phát triển.
C. Giảm thiểu số lượng dòng code cần viết.
D. Đơn giản hóa việc quản lý cơ sở dữ liệu.
14. Trong kiểm thử phần mềm, `regression testing` được sử dụng để làm gì?
A. Kiểm tra các tính năng mới được thêm vào.
B. Đảm bảo rằng các thay đổi mới không gây ra lỗi cho các chức năng hiện có.
C. Tìm kiếm các lỗ hổng bảo mật.
D. Đánh giá hiệu suất của phần mềm dưới tải cao.
15. Trong ngữ cảnh của bảo mật phần mềm, `least privilege` là nguyên tắc nào?
A. Cấp cho người dùng quyền truy cập tối thiểu cần thiết để thực hiện công việc của họ.
B. Yêu cầu người dùng thay đổi mật khẩu thường xuyên.
C. Sử dụng mã hóa mạnh để bảo vệ dữ liệu.
D. Giám sát hoạt động của người dùng để phát hiện các hành vi đáng ngờ.
16. Đâu là một mục tiêu của việc sử dụng `microfrontends` trong phát triển web?
A. Tăng tốc độ tải trang web.
B. Cho phép các nhóm phát triển khác nhau làm việc trên các phần khác nhau của giao diện người dùng một cách độc lập.
C. Giảm thiểu sử dụng JavaScript trên trang web.
D. Đơn giản hóa việc quản lý cơ sở dữ liệu cho trang web.
17. Mục đí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 là gì?
A. Tự động hóa quá trình triển khai phần mềm.
B. Quản lý và theo dõi các thay đổi của mã nguồn.
C. Tăng tốc độ biên dịch mã nguồn.
D. Cải thiện hiệu suất của ứng dụng khi chạy.
18. Đâu là một đặc điểm quan trọng của kiến trúc microservices?
A. Tất cả các thành phần ứng dụng đều được triển khai như một khối duy nhất.
B. Các dịch vụ được liên kết chặt chẽ và chia sẻ cơ sở dữ liệu.
C. Các dịch vụ độc lập, có thể triển khai và mở rộng quy mô riêng lẻ.
D. Ứng dụng được xây dựng dựa trên một ngôn ngữ lập trình duy nhất.
19. Phương pháp kiểm thử hộp đen (black-box testing) tập trung vào điều gì?
A. Kiểm tra cấu trúc mã nguồn bên trong của phần mềm.
B. Kiểm tra chức năng của phần mềm mà không cần biết cấu trúc bên trong.
C. Kiểm tra hiệu suất của phần mềm dưới tải cao.
D. Kiểm tra tính bảo mật của phần mềm trước các cuộc tấn công.
20. Phương pháp luận Scrum thuộc loại mô hình phát triển phần mềm nào?
A. Mô hình thác nước (Waterfall).
B. Mô hình xoắn ốc (Spiral).
C. Mô hình Agile.
D. Mô hình chữ V (V-Model).
21. Đâ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. Giảm thiểu sử dụng bộ nhớ của ứng dụng.
B. Đảm bảo tính nhất quán của môi trường triển khai.
C. Tăng tốc độ biên dịch mã.
D. Đơn giản hóa việc quản lý cơ sở dữ liệu.
22. Trong kiến trúc phần mềm, `separation of concerns` (SoC) đề cập đến điều gì?
A. Phân chia công việc giữa các thành viên trong nhóm phát triển.
B. Tách biệt các chức năng khác nhau của ứng dụng thành các module độc lập.
C. Sử dụng các ngôn ngữ lập trình khác nhau cho các phần khác nhau của ứng dụng.
D. Triển khai ứng dụng trên nhiều máy chủ khác nhau.
23. Trong phát triển phần mềm, `technical debt` đề cập đến điều gì?
A. Chi phí cho việc mua các công cụ phát triển phần mềm.
B. Hậu quả của việc đưa ra các quyết định thiết kế không tối ưu trong ngắn hạn.
C. Số lượng lỗi còn tồn tại trong phần mềm.
D. Thời gian cần thiết để sửa các lỗi bảo mật.
24. Mục đích của việc sử dụng kỹ thuật `mocking` trong kiểm thử đơn vị (unit testing) là gì?
A. Tăng tốc độ thực thi của các test case.
B. Thay thế các thành phần phụ thuộc bằng các đối tượng giả lập.
C. Kiểm tra hiệu suất của ứng dụng dưới tải cao.
D. Tìm kiếm các lỗ hổng bảo mật trong mã.
25. Trong mô hình OSI, tầng nào chịu trách nhiệm cho việc đảm bảo truyền dữ liệu tin cậy giữa hai hệ thống?
A. Tầng vật lý (Physical layer).
B. Tầng liên kết dữ liệu (Data link layer).
C. Tầng giao vận (Transport layer).
D. Tầng mạng (Network layer).
26. Trong bảo trì phần mềm, `perfective maintenance` đề cập đến loại hoạt động nào?
A. Sửa các lỗi còn tồn tại trong phần mềm.
B. Điều chỉnh phần mềm để phù hợp với môi trường mới.
C. Cải thiện hiệu suất của phần mềm.
D. Thêm các tính năng mới hoặc cải tiến các tính năng hiện có.
27. Trong quy trình phát triển phần mềm, giai đoạn nào tập trung vào việc xác định yêu cầu của người dùng?
A. Giai đoạn thiết kế.
B. Giai đoạn kiểm thử.
C. Giai đoạn triển khai.
D. Giai đoạn phân tích yêu cầu.
28. Đâu là lợi ích chính của việc sử dụng mô hình Agile trong phát triển phần mềm?
A. Giảm thiểu chi phí phát triển bằng cách loại bỏ tài liệu.
B. Cung cấp khả năng thích ứng nhanh chóng với các thay đổi yêu cầu.
C. Đảm bảo rằng tất cả các yêu cầu được xác định rõ ràng trước khi bắt đầu phát triển.
D. Tăng cường kiểm soát dự án bằng cách sử dụng quy trình tuần tự, có kế hoạch.
29. Trong kiểm thử phần mềm, `mutation testing` là gì?
A. Kiểm tra các đột biến gen trong mã nguồn.
B. Đánh giá chất lượng của bộ test bằng cách tạo ra các phiên bản lỗi của mã.
C. Kiểm tra hiệu suất của phần mềm dưới tải cao.
D. Tìm kiếm các lỗ hổng bảo mật.
30. Trong ngữ cảnh của cơ sở dữ liệu, ACID là viết tắt của các thuộc tính nào?
A. Accuracy, Consistency, Isolation, Durability.
B. Atomicity, Consistency, Isolation, Durability.
C. Atomicity, Concurrency, Integrity, Distribution.
D. Availability, Consistency, Integrity, Durability.