Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Công Nghệ Phần Mềm - Đề 10 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 pha kiểm thử phần mềm, loại kiểm thử nào tập trung vào việc xác minh các chức năng riêng lẻ của các module hoặc thành phần phần mềm, thường được thực hiện bởi chính lập trình viên?
- A. Kiểm thử đơn vị (Unit Testing)
- B. Kiểm thử tích hợp (Integration Testing)
- C. Kiểm thử hệ thống (System Testing)
- D. Kiểm thử chấp nhận (Acceptance Testing)
Câu 2: Mô hình phát triển phần mềm Agile Manifesto ưu tiên điều gì hơn so với tài liệu toàn diện và quy trình cứng nhắc?
- A. Quy trình và công cụ
- B. Cá nhân và tương tác
- C. Tài liệu toàn diện
- D. Hợp đồng và đàm phán
Câu 3: Trong quản lý dự án phần mềm, biểu đồ Gantt thường được sử dụng để làm gì?
- A. Quản lý rủi ro dự án
- B. Theo dõi chi phí dự án
- C. Lập kế hoạch và theo dõi tiến độ công việc theo thời gian
- D. Quản lý chất lượng phần mềm
Câu 4: Nguyên tắc SOLID nào trong thiết kế hướng đối tượng khuyến khích việc các lớp (class) nên được mở rộng để thay đổi hành vi, nhưng phải đóng để sửa đổi mã nguồn hiện tại?
- A. Single Responsibility Principle (SRP)
- B. Liskov Substitution Principle (LSP)
- C. Interface Segregation Principle (ISP)
- D. Open/Closed Principle (OCP)
Câu 5: Trong kiến trúc phần mềm microservices, lợi ích chính của việc phân tách ứng dụng thành các dịch vụ nhỏ, độc lập là gì?
- A. Giảm độ phức tạp của việc triển khai
- B. Tăng cường khả năng mở rộng và khả năng phục hồi
- C. Đơn giản hóa việc quản lý cơ sở dữ liệu
- D. Tối ưu hóa hiệu suất trên một máy chủ duy nhất
Câu 6: Kỹ thuật đặc tả yêu cầu "Use Case" mô tả điều gì về hệ thống phần mềm?
- A. Cấu trúc dữ liệu của hệ thống
- B. Giao diện người dùng của hệ thống
- C. Cách người dùng tương tác với hệ thống để đạt được mục tiêu
- D. Kiến trúc phần mềm của hệ thống
Câu 7: Trong quá trình phân tích yêu cầu, mô hình nào thường được sử dụng để biểu diễn luồng dữ liệu và các xử lý biến đổi dữ liệu trong hệ thống?
- A. Mô hình quan hệ thực thể (Entity-Relationship Diagram)
- B. Biểu đồ lớp (Class Diagram)
- C. Biểu đồ trạng thái (State Diagram)
- D. Biểu đồ luồng dữ liệu (Data Flow Diagram)
Câu 8: Trong kiểm soát phiên bản phần mềm (Version Control), nhánh (branch) được sử dụng để làm gì?
- A. Sao lưu toàn bộ mã nguồn
- B. Phát triển các tính năng mới hoặc sửa lỗi song song mà không ảnh hưởng đến nhánh chính
- C. Triển khai phần mềm lên môi trường sản xuất
- D. Theo dõi lỗi và vấn đề của phần mềm
Câu 9: Phương pháp kiểm thử hộp đen (Black-box testing) dựa trên tiêu chí nào để thiết kế các trường hợp kiểm thử?
- A. Yêu cầu và đặc tả chức năng của phần mềm
- B. Cấu trúc mã nguồn và giải thuật bên trong
- C. Hiệu suất và khả năng mở rộng của hệ thống
- D. Kinh nghiệm và trực giác của người kiểm thử
Câu 10: Trong mô hình thác nước (Waterfall), giai đoạn nào diễn ra sau giai đoạn thiết kế?
- A. Phân tích yêu cầu
- B. Kiểm thử
- C. Hiện thực (Coding/Implementation)
- D. Bảo trì
Câu 11: Độ đo Cyclomatic Complexity được sử dụng để đánh giá khía cạnh nào của mã nguồn?
- A. Kích thước của mã nguồn
- B. Mức độ sử dụng bộ nhớ
- C. Hiệu suất thực thi
- D. Độ phức tạp về logic và luồng điều khiển
Câu 12: Trong phát triển phần mềm hướng dịch vụ (Service-Oriented Architecture - SOA), dịch vụ Web (Web Service) thường sử dụng giao thức nào để trao đổi dữ liệu?
- A. FTP (File Transfer Protocol)
- B. HTTP (Hypertext Transfer Protocol)
- C. SMTP (Simple Mail Transfer Protocol)
- D. TCP (Transmission Control Protocol)
Câu 13: Kỹ thuật "Refactoring" trong lập trình là gì?
- A. Sửa lỗi mã nguồn
- B. Thêm chức năng mới vào phần mềm
- C. Tái cấu trúc mã nguồn để cải thiện cấu trúc và khả năng đọc hiểu mà không thay đổi chức năng bên ngoài
- D. Tối ưu hóa hiệu suất của phần mềm
Câu 14: Trong quản lý cấu hình phần mềm, "baseline" được dùng để chỉ điều gì?
- A. Phiên bản thử nghiệm của phần mềm
- B. Tài liệu hướng dẫn sử dụng phần mềm
- C. Danh sách các yêu cầu thay đổi
- D. Một phiên bản ổn định và đã được phê duyệt của cấu hình phần mềm, dùng làm cơ sở để phát triển tiếp
Câu 15: Công cụ UML (Unified Modeling Language) đượ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. Kiểm thử
- B. Thiết kế và Phân tích
- C. Triển khai
- D. Bảo trì
Câu 16: Scrum Master đóng vai trò gì trong Scrum framework?
- A. Người hỗ trợ nhóm Scrum tuân thủ các nguyên tắc và thực hành của Scrum, loại bỏ rào cản
- B. Người quản lý trực tiếp các thành viên nhóm phát triển
- C. Người đưa ra quyết định kỹ thuật cuối cùng cho dự án
- D. Người đại diện cho khách hàng và xác định yêu cầu sản phẩm
Câu 17: "Technical Debt" (Nợ kỹ thuật) trong phát triển phần mềm đề cập đến điều gì?
- A. Chi phí bảo trì phần mềm sau khi triển khai
- B. Thời gian phát triển phần mềm vượt quá kế hoạch
- C. 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, dẫn đến khó khăn trong bảo trì và phát triển sau này
- D. Rủi ro về bảo mật của phần mềm
Câu 18: Kiểm thử hồi quy (Regression Testing) được thực hiện khi nào?
- A. Khi phát triển một tính năng mới hoàn toàn
- B. Sau khi sửa lỗi hoặc thay đổi mã nguồn, để đảm bảo các thay đổi không gây ra lỗi mới hoặc làm hỏng chức năng hiện có
- C. Trước khi triển khai phần mềm lên môi trường sản xuất
- D. Trong giai đoạn phân tích yêu cầu
Câu 19: Mô hình xoắn ốc (Spiral Model) trong phát triển phần mềm đặc biệt phù hợp với loại dự án nào?
- A. Dự án có yêu cầu rõ ràng và ổn định từ đầu
- B. Dự án nhỏ với thời gian phát triển ngắn
- C. Dự án phát triển các ứng dụng web đơn giản
- D. Dự án phức tạp, có nhiều rủi ro và yêu cầu thay đổi thường xuyên
Câu 20: Trong lập trình hướng đối tượng, tính đa hình (Polymorphism) cho phép điều gì?
- A. Ẩn giấu thông tin và trạng thái bên trong đối tượng
- B. Tái sử dụng mã nguồn thông qua kế thừa
- C. Các đối tượng thuộc các lớp khác nhau có thể phản ứng với cùng một thông điệp theo những cách khác nhau
- D. Nhóm các đối tượng có chung thuộc tính và hành vi vào một lớp
Câu 21: "Code review" (Đánh giá mã nguồn) mang lại lợi ích nào sau đây?
- A. Phát hiện lỗi sớm, cải thiện chất lượng mã nguồn, chia sẻ kiến thức giữa các thành viên
- B. Tăng tốc độ phát triển phần mềm
- C. Giảm chi phí kiểm thử
- D. Tự động hóa quá trình triển khai
Câu 22: Trong mô hình Agile, "Sprint" là gì?
- A. Một cuộc họp hàng ngày của nhóm phát triển
- B. Một khoảng thời gian ngắn, cố định (thường từ 1-4 tuần) trong đó nhóm phát triển làm việc để hoàn thành một phần công việc cụ thể
- C. Một công cụ quản lý dự án Agile
- D. Một loại biểu đồ tiến độ trong Agile
Câu 23: Kiểm thử hiệu năng (Performance Testing) nhằm mục đích gì?
- A. Kiểm tra tính đúng đắn của chức năng phần mềm
- B. Đảm bảo phần mềm dễ sử dụng
- C. Đánh giá tốc độ, độ ổn định, khả năng đáp ứng và khả năng chịu tải của phần mềm trong các điều kiện khác nhau
- D. Tìm kiếm lỗ hổng bảo mật trong phần mềm
Câu 24: Yếu tố nào sau đây KHÔNG phải là một phần của tam giác dự án (Project Management Triangle/Iron Triangle)?
- A. Phạm vi (Scope)
- B. Thời gian (Time)
- C. Chi phí (Cost)
- D. Chất lượng (Quality)
Câu 25: Trong kiến trúc 3 lớp (3-tier architecture), lớp nào chịu trách nhiệm xử lý tương tác trực tiếp với người dùng?
- A. Lớp trình bày (Presentation Tier)
- B. Lớp nghiệp vụ (Business Tier)
- C. Lớp dữ liệu (Data Tier)
- D. Lớp dịch vụ (Service Tier)
Câu 26: "Coupling" (Tính liên kết) và "Cohesion" (Tính gắn kết) là hai khái niệm quan trọng trong thiết kế phần mềm. Thiết kế tốt thường hướng tới điều gì?
- A. Coupling cao và Cohesion cao
- B. Coupling thấp và Cohesion cao
- C. Coupling cao và Cohesion thấp
- D. Coupling thấp và Cohesion thấp
Câu 27: Phương pháp phát triển phần mềm "DevOps" tập trung vào việc cải thiện điều gì?
- A. Chất lượng mã nguồn
- B. Thời gian phát triển
- C. Sự hợp tác và tích hợp liên tục giữa phát triển (Development) và vận hành (Operations) để tăng tốc độ và hiệu quả phân phối phần mềm
- D. Bảo mật hệ thống
Câu 28: Trong kiểm thử chấp nhận (Acceptance Testing), ai là người thực hiện kiểm thử chính?
- A. Lập trình viên
- B. Nhóm kiểm thử độc lập
- C. Quản lý dự án
- D. Khách hàng hoặc người dùng cuối
Câu 29: "Design Pattern" (Mẫu thiết kế) trong phần mềm cung cấp điều gì?
- A. Công cụ để tự động sinh mã nguồn
- B. Giải pháp đã được kiểm chứng cho các vấn đề thiết kế thường gặp trong phát triển phần mềm
- C. Quy trình kiểm thử phần mềm
- D. Ngôn ngữ mô hình hóa hệ thống
Câu 30: Trong quản lý rủi ro dự án phần mềm, "Ma trận rủi ro" (Risk Matrix) được sử dụng để làm gì?
- A. Theo dõi tiến độ xử lý rủi ro
- B. Xác định nguyên nhân gốc rễ của rủi ro
- C. Đánh giá và phân loại rủi ro dựa trên mức độ nghiêm trọng và khả năng xảy ra
- D. Lập kế hoạch ứng phó rủi ro