Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Công Nghệ Phần Mềm bao gồm nhiều câu hỏi hay, bám sát chương trình. Cùng làm bài tập trắc nghiệm ngay.
Câu 1: 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 và ghi lại một cách chi tiết những gì phần mềm cần phải làm, bao gồm chức năng, hiệu năng và ràng buộc?
- A. Thiết kế hệ thống
- B. Phân tích yêu cầu
- C. Kiểm thử phần mềm
- D. Bảo trì phần mềm
Câu 2: Mô hình phát triển phần mềm nào thích hợp nhất khi yêu cầu của khách hàng không rõ ràng ngay từ đầu và có thể thay đổi trong quá trình phát triển, đồng thời ưu tiên việc cung cấp sản phẩm nhanh chóng và linh hoạt?
- A. Mô hình thác đổ (Waterfall)
- B. Mô hình chữ V (V-Model)
- C. Mô hình Agile (ví dụ: Scrum)
- D. Mô hình xoắn ốc (Spiral)
Câu 3: Khi thiết kế kiến trúc phần mềm, quyết định nào sau đây thuộc về kiến trúc mức cao (high-level architecture) hơn là kiến trúc mức thấp (low-level architecture)?
- A. Chọn kiểu kiến trúc tổng thể (ví dụ: microservices, monolithic, client-server)
- B. Chọn thư viện và framework cụ thể cho từng module
- C. Thiết kế cấu trúc dữ liệu chi tiết cho cơ sở dữ liệu
- D. Viết mã lệnh chi tiết cho các hàm và phương thức
Câu 4: Trong kiểm thử phần mềm, loại kiểm thử nào tập trung vào việc đảm bảo rằng tất cả các đường dẫn thực thi (execution paths) trong mã nguồn đã được kiểm tra ít nhất một lần?
- A. Kiểm thử hộp đen (Black-box testing)
- B. Kiểm thử hộp trắng (White-box testing) dựa trên độ bao phủ
- C. Kiểm thử tích hợp (Integration testing)
- D. Kiểm thử hệ thống (System testing)
Câu 5: Một nhóm phát triển phần mềm đang sử dụng phương pháp Scrum. Trong sự kiện Sprint Retrospective, mục tiêu chính của nhóm là gì?
- A. Lập kế hoạch cho Sprint tiếp theo
- B. Đánh giá hiệu suất của từng thành viên trong nhóm
- C. Trình bày kết quả Sprint cho khách hàng
- D. Thảo luận và cải tiến quy trình làm việc của nhóm
Câu 6: Khi phân tích yêu cầu phi chức năng, yêu cầu nào sau đây thuộc loại yêu cầu về "hiệu năng" (performance)?
- A. Hệ thống phải tuân thủ tiêu chuẩn bảo mật ISO 27001
- B. Giao diện người dùng phải thân thiện và dễ sử dụng
- C. Thời gian phản hồi của hệ thống cho một truy vấn không được quá 2 giây
- D. Phần mềm phải tương thích với hệ điều hành Windows, macOS và Linux
Câu 7: Trong quản lý cấu hình phần mềm, công cụ kiểm soát phiên bản (version control) được sử dụng chủ yếu để làm gì?
- A. Quản lý tiến độ dự án và phân công công việc
- B. Theo dõi và quản lý các thay đổi của mã nguồn và tài liệu
- C. Tự động hóa quy trình kiểm thử phần mềm
- D. Đo lường chất lượng mã nguồn và phát hiện lỗi
Câu 8: Nguyên tắc SOLID trong lập trình hướng đối tượng "Nguyên tắc thay thế Liskov" (Liskov Substitution Principle) phát biểu điều gì?
- A. Một lớp chỉ nên có một lý do duy nhất để thay đổi.
- B. Các lớp kế thừa không nên kế thừa những gì không cần thiết.
- C. Các lớp con có thể thay thế lớp cha của chúng mà không gây ra lỗi.
- D. Nên ưu tiên sử dụng hợp thành (composition) hơn là kế thừa (inheritance).
Câu 9: Trong mô hình Client-Server, thành phần "Server" thường chịu trách nhiệm chính trong việc gì?
- A. Xử lý dữ liệu, lưu trữ thông tin và cung cấp dịch vụ cho Client
- B. Hiển thị giao diện người dùng và tương tác trực tiếp với người dùng
- C. Quản lý kết nối mạng và giao tiếp giữa các Client
- D. Thực hiện kiểm thử và triển khai phần mềm
Câu 10: Đâu là lợi ích chính của việc sử dụng kiến trúc Microservices so với kiến trúc Monolithic?
- A. Đơn giản hóa việc triển khai và quản lý hệ thống
- B. Tăng cường khả năng mở rộng, linh hoạt và phục hồi của ứng dụng
- C. Giảm độ phức tạp trong phát triển và bảo trì
- D. Tối ưu hóa hiệu suất và tốc độ xử lý tổng thể của hệ thống
Câu 11: Trong quá trình kiểm thử tích hợp (Integration Testing), phương pháp "top-down" thường bắt đầu kiểm thử từ module nào?
- A. Các module cơ sở dữ liệu
- B. Các module giao diện người dùng
- C. Module điều khiển chính (main control module)
- D. Các module tiện ích (utility modules)
Câu 12: Chỉ số "Cyclomatic Complexity" được sử dụng để đo lường điều gì trong mã nguồn?
- A. Số dòng code trong chương trình
- B. Mức độ dễ đọc và dễ hiểu của mã nguồn
- C. Số lượng biến và hàm trong module
- D. Độ phức tạp của luồng điều khiển (control flow) trong chương trình
Câu 13: Trong mô hình phát triển phần mềm xoắn ốc (Spiral Model), yếu tố rủi ro (risk) được xem xét và đánh giá ở giai đoạn nào?
- A. Giai đoạn lập kế hoạch
- B. Trong mỗi vòng lặp của mô hình
- C. Giai đoạn triển khai và kiểm thử
- D. Chỉ ở giai đoạn đầu của dự án
Câu 14: Khi nào thì việc sử dụng mô hình nguyên mẫu (Prototyping Model) là phù hợp nhất?
- A. Khi yêu cầu của khách hàng chưa được xác định rõ ràng
- B. Khi dự án có thời gian và ngân sách eo hẹp
- C. Khi đội ngũ phát triển đã có kinh nghiệm với công nghệ
- D. Khi yêu cầu về hiệu năng và độ tin cậy rất cao
Câu 15: Trong kiểm thử chấp nhận (Acceptance Testing), ai là người chịu trách nhiệm chính trong việc thực hiện kiểm thử?
- A. Lập trình viên
- B. Kiểm thử viên chuyên nghiệp (Tester)
- C. Nhà phân tích nghiệp vụ (Business Analyst)
- D. Khách hàng hoặc người dùng cuối
Câu 16: Kỹ thuật phân tích "Use Case" được sử dụng chủ yếu trong giai đoạn nào của quy trình phát triển phần mềm?
- A. Thiết kế hệ thống
- B. Phân tích yêu cầu
- C. Kiểm thử phần mềm
- D. Triển khai phần mềm
Câu 17: Đâ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 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 phần mềm
- C. Cải thiện cấu trúc và khả năng bảo trì của mã nguồn
- D. Tối ưu hóa mã nguồn để chạy nhanh hơn
Câu 18: Trong quản lý dự án phần mềm, biểu đồ Gantt thường được sử dụng để làm gì?
- A. Lập kế hoạch và theo dõi tiến độ thực hiện các công việc của dự án
- B. Quản lý rủi ro và vấn đề phát sinh trong dự án
- C. Phân công công việc và quản lý nguồn lực dự án
- D. Đo lường hiệu suất và chất lượng dự án
Câu 19: Trong ngữ cảnh kiểm thử hiệu năng (Performance Testing), "load testing" (kiểm thử tải) có nghĩa là gì?
- A. Kiểm thử hệ thống với dữ liệu đầu vào lớn
- B. Mô phỏng tải người dùng đồng thời để kiểm tra khả năng chịu tải của hệ thống
- C. Kiểm tra thời gian phản hồi của hệ thống cho các tác vụ khác nhau
- D. Đo lường mức tiêu thụ tài nguyên hệ thống (CPU, bộ nhớ)
Câu 20: Khi đánh giá chất lượng phần mềm, thuộc tính "khả năng sử dụng" (usability) đề cập đến khía cạnh nào?
- A. Mức độ phần mềm hoạt động đúng chức năng theo yêu cầu
- B. Khả năng phần mềm hoạt động liên tục và ổn định trong thời gian dài
- C. Mức độ dễ dàng và hiệu quả người dùng có thể học và sử dụng phần mềm
- D. Khả năng phần mềm bảo vệ dữ liệu và thông tin người dùng
Câu 21: Trong mô hình MVC (Model-View-Controller), thành phần "View" chịu trách nhiệm chính trong việc gì?
- A. Xử lý logic nghiệp vụ và thao tác dữ liệu
- B. Hiển thị giao diện người dùng và trình bày dữ liệu
- C. Quản lý dữ liệu và trạng thái của ứng dụng
- D. Điều phối tương tác giữa Model và View
Câu 22: Phương pháp kiểm thử hộp đen (Black-box testing) còn được gọi là gì?
- A. Kiểm thử cấu trúc (Structural testing)
- B. Kiểm thử dựa trên mã nguồn (Code-based testing)
- C. Kiểm thử chức năng (Functional testing)
- D. Kiểm thử đường dẫn (Path testing)
Câu 23: Trong quy trình phát triển phần mềm, "code review" (đánh giá mã) mang lại lợi ích gì chính?
- A. Tăng tốc độ viết mã của lập trình viên
- B. Tự động hóa quy trình kiểm thử phần mềm
- C. Thay thế cho kiểm thử đơn vị (unit testing)
- D. Phát hiện lỗi sớm và cải thiện chất lượng mã nguồn
Câu 24: Đâu là một ví dụ về công cụ quản lý dự án phần mềm Agile phổ biến?
- A. Jira
- B. Microsoft Project
- C. Primavera P6
- D. Waterfall Planner
Câu 25: Trong kiểm thử hồi quy (Regression Testing), mục đích chính là gì?
- A. Kiểm tra hiệu năng của phần mềm sau khi triển khai
- B. Đảm bảo các thay đổi mã không gây ra lỗi mới hoặc ảnh hưởng đến chức năng cũ
- C. Tìm kiếm lỗi bảo mật trong phần mềm
- D. Kiểm tra khả năng tương thích của phần mềm với các hệ điều hành khác nhau
Câu 26: Khi ước tính nỗ lực phát triển phần mềm, phương pháp "COCOMO" (Constructive Cost Model) thuộc loại phương pháp nào?
- A. Phương pháp dựa trên chuyên gia (Expert judgment)
- B. Phương pháp tương tự (Analogy-based)
- C. Phương pháp tham số (Parametric model)
- D. Phương pháp phân tích điểm chức năng (Function Point Analysis)
Câu 27: Trong mô hình Scrum, "Product Backlog" là gì?
- A. Danh sách các công việc cần hoàn thành trong Sprint hiện tại
- B. Báo cáo tiến độ công việc của nhóm Scrum
- C. Kế hoạch kiểm thử cho sản phẩm
- D. Danh sách ưu tiên các yêu cầu và tính năng của sản phẩm
Câu 28: Đâ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 và phức tạp?
- A. Khó khăn trong việc thích ứng với yêu cầu thay đổi
- B. Phối hợp và tích hợp công việc của nhiều nhóm phát triển
- C. Thiếu sự tham gia của khách hàng trong quá trình phát triển
- D. Thời gian phát triển kéo dài hơn so với mô hình truyền thống
Câu 29: Trong kiểm thử bảo mật (Security Testing), kỹ thuật "SQL injection" thuộc loại tấn công nào?
- A. Tấn công từ chối dịch vụ (Denial of Service - DoS)
- B. Tấn công giả mạo (Phishing)
- C. Tấn công chèn mã SQL (SQL Injection)
- D. Tấn công leo thang đặc quyền (Privilege Escalation)
Câu 30: Mục tiêu chính của việc bảo trì phần mềm "chỉnh sửa" (corrective maintenance) là gì?
- A. Sửa chữa các lỗi và khiếm khuyết trong phần mềm
- B. Cải thiện hiệu năng và tốc độ của phần mềm
- C. Thêm chức năng mới vào phần mềm
- D. Thích ứng phần mềm với môi trường hoạt động mới