1. Trong các giai đoạn của vòng đời phát triển phần mềm (SDLC), giai đoạn nào tiếp theo sau giai đoạn Thiết kế?
A. Phân tích yêu cầu
B. Lập trình (Viết mã)
C. Kiểm thử
D. Triển khai và bảo trì
2. Ngôn ngữ lập trình nào thường được sử dụng cho việc phát triển ứng dụng back-end (phía máy chủ) và có hệ sinh thái thư viện phong phú?
A. HTML
B. CSS
C. Python
D. SQL
3. 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 rõ ràng các yêu cầu chức năng và phi chức năng của hệ thống?
A. Giai đoạn lập kế hoạch
B. Giai đoạn phân tích yêu cầu
C. Giai đoạn thiết kế
D. Giai đoạn kiểm thử
4. Công cụ nào thường được sử dụng để quản lý phiên bản mã nguồn, cho phép nhiều nhà phát triển làm việc cùng nhau trên một dự án?
A. JIRA
B. Visual Studio Code
C. Git
D. Docker
5. Vai trò của Kỹ sư QA (Quality Assurance) trong một đội phát triển phần mềm là gì?
A. Thiết kế giao diện người dùng.
B. Viết mã nguồn.
C. Đảm bảo chất lượng sản phẩm thông qua kiểm thử và quy trình.
D. Quản lý mối quan hệ với khách hàng.
6. Đâu là một trong những trách nhiệm chính của Lập trình viên (Developer) trong một dự án phần mềm?
A. Thiết kế kiến trúc tổng thể của hệ thống.
B. Quản lý ngân sách và lịch trình dự án.
C. Viết, kiểm thử và gỡ lỗi mã nguồn.
D. Làm việc trực tiếp với khách hàng để thu thập yêu cầu ban đầu.
7. Nhà phát triển phần mềm thường sử dụng môi trường phát triển tích hợp (IDE) để làm gì?
A. Chỉ để chạy thử ứng dụng.
B. Để soạn thảo, biên dịch, gỡ lỗi và quản lý mã nguồn một cách hiệu quả.
C. Để thiết kế giao diện người dùng trực quan.
D. Để quản lý tài khoản ngân hàng.
8. Trong phát triển phần mềm, refactoring (tái cấu trúc mã) có nghĩa là gì?
A. Viết lại toàn bộ mã nguồn từ đầu bằng một ngôn ngữ khác.
B. Thêm các tính năng mới vào phần mềm.
C. Thay đổi cấu trúc nội tại của mã nguồn mà không làm thay đổi chức năng bên ngoài.
D. Kiểm tra lỗi trong mã nguồn.
9. Trong mô hình phát triển phần mềm Agile, phương pháp Scrum nhấn mạnh điều gì?
A. Hoàn thành toàn bộ dự án theo một kế hoạch cố định trước khi phát hành.
B. Phân chia công việc thành các vòng lặp ngắn (Sprint) với sản phẩm có thể sử dụng được.
C. Tập trung vào tài liệu hóa chi tiết mọi yêu cầu trước khi bắt đầu lập trình.
D. Chỉ có một người chịu trách nhiệm chính cho toàn bộ dự án.
10. Yêu cầu Phần mềm phải có khả năng xử lý 1000 giao dịch mỗi giây thuộc loại yêu cầu nào?
A. Yêu cầu chức năng
B. Yêu cầu phi chức năng (hiệu năng)
C. Yêu cầu về giao diện người dùng
D. Yêu cầu về bảo mật
11. Khi một nhà phát triển cần tạo ra một ứng dụng có thể chạy trên nhiều hệ điều hành khác nhau (Windows, macOS, Linux) với cùng một mã nguồn, họ có thể xem xét sử dụng các công nghệ nào?
A. Chỉ C# với .NET Framework.
B. Chỉ Java với JVM.
C. Các framework phát triển đa nền tảng như React Native hoặc Electron.
D. Chỉ Python với thư viện Tkinter.
12. Việc kiểm tra phần mềm để đảm bảo nó hoạt động đúng theo yêu cầu và không có lỗi được gọi là gì?
A. Phát triển
B. Kiểm thử (Testing)
C. Thiết kế
D. Triển khai
13. Đâu là một trong những mục tiêu chính của việc viết tài liệu kỹ thuật (technical documentation) trong phát triển phần mềm?
A. Tăng cường quảng bá sản phẩm.
B. Hỗ trợ nhà phát triển khác hiểu và sử dụng/bảo trì phần mềm.
C. Thay thế hoàn toàn việc huấn luyện người dùng cuối.
D. Tạo ra các bài viết báo chí về phần mềm.
14. Một nhà phát triển đang làm việc trên một dự án lớn với nhiều thành phần phức tạp. Để quản lý sự phức tạp này, họ nên áp dụng nguyên tắc thiết kế nào?
A. Viết mã càng dài càng tốt.
B. Chia nhỏ hệ thống thành các module hoặc thành phần độc lập, có khả năng tái sử dụng.
C. Sử dụng một lớp duy nhất cho toàn bộ ứng dụng.
D. Trộn lẫn logic nghiệp vụ với giao diện người dùng.
15. Trong phát triển phần mềm, bug (lỗi) là gì?
A. Một tính năng mới được thêm vào phần mềm.
B. Một sai sót trong mã nguồn hoặc thiết kế khiến phần mềm hoạt động không như mong đợi.
C. Tài liệu hướng dẫn sử dụng phần mềm.
D. Một bản cập nhật để cải thiện hiệu suất.
16. Ai là người chịu trách nhiệm chính trong việc định hướng kỹ thuật và kiến trúc tổng thể của một dự án phần mềm lớn?
A. Kỹ sư kiểm thử (QA Engineer)
B. Quản lý dự án (Project Manager)
C. Kiến trúc sư phần mềm (Software Architect)
D. Lập trình viên front-end
17. Việc đảm bảo rằng phần mềm chỉ cho phép người dùng có quyền truy cập mới có thể xem hoặc sửa đổi dữ liệu nhạy cảm được gọi là yêu cầu về gì?
A. Hiệu năng
B. Tính khả dụng
C. Bảo mật
D. Khả năng sử dụng
18. Trong kiểm thử phần mềm, test case là gì?
A. Một đoạn mã nguồn được viết sẵn.
B. Một bộ các điều kiện và bước thực hiện để kiểm tra một chức năng hoặc thuộc tính cụ thể của phần mềm.
C. Tài liệu mô tả cách người dùng tương tác với phần mềm.
D. Một báo cáo về các lỗi đã tìm thấy.
19. Một phần mềm được phát hành và người dùng báo cáo rằng nó hoạt động chậm trên các thiết bị cấu hình thấp. Đây là vấn đề liên quan đến khía cạnh nào của phần mềm?
A. Độ tin cậy
B. Tính khả dụng
C. Hiệu năng
D. Khả năng bảo trì
20. Nguyên tắc DRY (Dont Repeat Yourself) trong lập trình có ý nghĩa gì?
A. Không sử dụng các biến toàn cục.
B. Tránh lặp lại cùng một đoạn mã nguồn ở nhiều nơi.
C. Luôn sử dụng các hàm ẩn danh.
D. Chỉ sử dụng một ngôn ngữ lập trình duy nhất.
21. Ngôn ngữ lập trình nào thường được sử dụng phổ biến để phát triển ứng dụng web front-end (phía người dùng)?
A. Python
B. Java
C. JavaScript
D. C#
22. Một nhà phát triển phần mềm nhận được phản hồi từ người dùng về một lỗi hiển thị trên giao diện. Bước tiếp theo hợp lý nhất trong quy trình xử lý là gì?
A. Phát hành phiên bản mới ngay lập tức để sửa lỗi.
B. Phân tích và tái hiện lỗi để hiểu rõ nguyên nhân.
C. Yêu cầu người dùng cung cấp thêm thông tin chi tiết về cách họ gặp lỗi.
D. Bỏ qua phản hồi vì lỗi có thể không nghiêm trọng.
23. Một lập trình viên đang viết mã nguồn cho một ứng dụng web. Anh ta cần đảm bảo mã nguồn dễ đọc, dễ bảo trì và tuân thủ các tiêu chuẩn chung. Điều này thuộc về khía cạnh nào của nghề phát triển phần mềm?
A. Kiểm thử phần mềm
B. Quản lý dự án phần mềm
C. Chất lượng mã nguồn và kỹ thuật viết mã
D. Thiết kế giao diện người dùng
24. Trong mô hình phát triển phần mềm Waterfall, sự thay đổi yêu cầu ở giai đoạn cuối của dự án thường gặp khó khăn gì?
A. Dễ dàng thực hiện vì mã nguồn chưa được viết.
B. Rất tốn kém và phức tạp vì ảnh hưởng đến nhiều giai đoạn trước đó.
C. Không ảnh hưởng đến chi phí hoặc thời gian phát hành.
D. Chỉ yêu cầu cập nhật tài liệu.
25. Khái niệm API (Application Programming Interface) trong phát triển phần mềm dùng để làm gì?
A. Để thiết kế giao diện người dùng.
B. Để quản lý cơ sở dữ liệu.
C. Để các phần mềm khác nhau có thể giao tiếp và trao đổi dữ liệu với nhau.
D. Để kiểm tra lỗi trong mã nguồn.