Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Công Nghệ Phần Mềm - Đề 05 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à làm rõ yêu cầu của người dùng, bao gồm cả chức năng và phi chức năng?
- A. Giai đoạn Phân tích yêu cầu
- B. Giai đoạn Thiết kế
- C. Giai đoạn Kiểm thử
- D. Giai đoạn Bảo trì
Câu 2: Mô hình phát triển phần mềm nào phù hợp nhất cho dự án có yêu cầu không rõ ràng ngay từ đầu và có khả năng thay đổi trong quá trình phát triển?
- A. Mô hình Thác nước (Waterfall)
- B. Mô hình Agile (ví dụ: Scrum, Kanban)
- C. Mô hình Xoắn ốc (Spiral)
- D. Mô hình V
Câu 3: Điều gì KHÔNG phải là một lợi ích chính của việc sử dụng kiểm thử tự động trong phát triển phần mềm?
- A. Tăng tốc độ kiểm thử và giảm thời gian phản hồi
- B. Cải thiện độ tin cậy và tính nhất quán của kiểm thử
- C. Loại bỏ hoàn toàn nhu cầu kiểm thử thủ công
- D. Giảm chi phí kiểm thử trong dài hạn
Câu 4: Trong thiết kế hướng đối tượng, nguyên tắc "Đơn trách nhiệm" (Single Responsibility Principle - SRP) phát biểu rằng:
- A. Một lớp nên có nhiều trách nhiệm để tối đa hóa tính tái sử dụng
- B. Các lớp con nên có thể thay thế hoàn toàn cho lớp cha của chúng
- C. Một lớp chỉ nên phụ thuộc vào các lớp trừu tượng, không phụ thuộc vào lớp cụ thể
- D. Một lớp chỉ nên có một và chỉ một lý do để thay đổi
Câu 5: Phương pháp đo lường kích thước phần mềm nào dựa trên việc đếm số lượng chức năng mà phần mềm cung cấp cho người dùng cuối?
- A. Số dòng lệnh (Lines of Code - LOC)
- B. Điểm chức năng (Function Points)
- C. Độ phức tạp Cyclomatic
- D. Số lượng lớp và đối tượng
Câu 6: Trong mô hình MVC (Model-View-Controller), thành phần "View" có trách nhiệm chính là gì?
- A. Xử lý logic nghiệp vụ và thao tác dữ liệu
- B. Quản lý dữ liệu và trạng thái của ứng dụng
- C. Hiển thị dữ liệu cho người dùng và nhận tương tác từ người dùng
- D. Điều phối tương tác giữa Model và Controller
Câu 7: Loại biểu đồ UML nào được sử dụng để mô hình hóa các tương tác giữa các đối tượng theo thời gian, đặc biệt hữu ích để biểu diễn các kịch bản sử dụng?
- A. Biểu đồ lớp (Class Diagram)
- B. Biểu đồ ca sử dụng (Use Case Diagram)
- C. Biểu đồ trạng thái (State Diagram)
- D. Biểu đồ tuần tự (Sequence Diagram)
Câu 8: Đâu là mục tiêu chính của kiểm thử hộp trắng (White-box testing)?
- A. Kiểm tra chức năng của phần mềm từ góc độ người dùng
- B. Đảm bảo tất cả các đường dẫn thực thi trong mã nguồn đều được kiểm tra
- C. Tìm lỗi giao diện người dùng và khả năng sử dụng
- D. Xác định hiệu suất và khả năng chịu tải của hệ thống
Câu 9: Khái niệm "nợ kỹ thuật" (Technical Debt) trong phát triển phần mềm dùng để chỉ điều gì?
- A. 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 tiến độ nhanh hơn
- B. Tổng chi phí cho việc bảo trì và sửa lỗi phần mềm sau khi triển khai
- C. Số lượng lỗi còn tồn tại trong phần mềm sau khi kiểm thử
- D. Thời gian cần thiết để hoàn thành tất cả các tính năng của phần mềm
Câu 10: Công cụ quản lý phiên bản (Version Control System) nào phổ biến nhất hiện nay trong phát triển phần mềm?
- A. Subversion (SVN)
- B. CVS
- C. Git
- D. Mercurial
Câu 11: Trong kiểm thử phần mềm, "kiểm thử hồi quy" (Regression testing) được thực hiện khi nào?
- A. Trước khi phát hành phiên bản phần mềm mới
- B. Sau khi thực hiện các thay đổi mã nguồn (ví dụ: sửa lỗi, thêm tính năng)
- C. Trong giai đoạn phân tích yêu cầu
- D. Chỉ khi có báo cáo lỗi từ người dùng cuối
Câu 12: Phương pháp phát triển phần mềm "DevOps" nhấn mạnh vào điều gì?
- A. Chỉ tập trung vào tốc độ phát triển phần mềm
- B. Chỉ tập trung vào sự ổn định của hệ thống sau triển khai
- C. Phân tách hoàn toàn giữa đội phát triển và đội vận hành
- D. Sự hợp tác chặt chẽ và tự động hóa giữa phát triển và vận hành để triển khai phần mềm nhanh chóng và tin cậy
Câu 13: Trong quản lý dự án phần mềm, biểu đồ Gantt thường được sử dụng để:
- A. Lập kế hoạch và theo dõi tiến độ các công việc của dự án theo thời gian
- B. Quản lý rủi ro dự án và lập kế hoạch ứng phó
- C. Phân tích yêu cầu và thiết kế hệ thống
- D. Quản lý chi phí và ngân sách dự án
Câu 14: "Tính dễ bảo trì" (Maintainability) là một thuộc tính chất lượng quan trọng của phần mềm. Điều gì KHÔNG góp phần vào tính dễ bảo trì của phần mềm?
- A. Mã nguồn rõ ràng, dễ đọc và có cấu trúc tốt
- B. Tài liệu đầy đủ và cập nhật
- C. Độ phức tạp Cyclomatic cao
- D. Kiểm thử đơn vị đầy đủ
Câu 15: Trong kiểm thử hiệu năng (Performance testing), loại kiểm thử nào đo lường khả năng của hệ thống khi chịu tải cao hơn mức tải dự kiến?
- A. Kiểm thử tải (Load testing)
- B. Kiểm thử độ bền (Endurance testing)
- C. Kiểm thử dung lượng (Volume testing)
- D. Kiểm thử stress (Stress testing)
Câu 16: Nguyên tắc "KISS" (Keep It Simple, Stupid) trong phát triển phần mềm khuyến khích điều gì?
- A. Sử dụng các công nghệ phức tạp nhất để giải quyết vấn đề
- B. Thiết kế hệ thống và viết mã nguồn càng đơn giản càng tốt
- C. Tối ưu hóa hiệu năng bằng mọi giá, kể cả khi làm phức tạp mã nguồn
- D. Tập trung vào việc đáp ứng tất cả các yêu cầu, bất kể độ phức tạp
Câu 17: Trong ngữ cảnh của kiến trúc microservices, "API Gateway" có vai trò gì?
- A. Lưu trữ dữ liệu cho tất cả các microservices
- B. Thực hiện logic nghiệp vụ chính của ứng dụng
- C. Đóng vai trò là điểm truy cập duy nhất cho client đến các microservices và thực hiện các chức năng như định tuyến, bảo mật, và chuyển đổi giao thức
- D. Quản lý việc triển khai và mở rộng quy mô của các microservices
Câu 18: Phương pháp kiểm thử "Acceptance Testing" (Kiểm thử chấp nhận) được thực hiện bởi ai?
- A. Lập trình viên
- B. Người dùng cuối hoặc đại diện khách hàng
- C. Nhóm kiểm thử độc lập
- D. Quản lý dự án
Câu 19: "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 có đặc điểm gì về Coupling và Cohesion?
- A. Coupling cao và Cohesion cao
- B. Coupling cao và Cohesion thấp
- C. Coupling thấp và Cohesion cao
- D. Coupling thấp và Cohesion thấp
Câu 20: Trong quá trình phân tích yêu cầu, kỹ thuật "Use Case" (Ca sử dụng) được dùng để làm gì?
- A. Mô tả các tương tác giữa người dùng (actor) và hệ thống để thực hiện một chức năng cụ thể
- B. Mô hình hóa cấu trúc dữ liệu của hệ thống
- C. Biểu diễn luồng điều khiển trong hệ thống
- D. Đặc tả giao diện người dùng
Câu 21: "Refactoring" (Tái cấu trúc mã) là quá trình làm gì?
- A. Sửa lỗi trong mã nguồn
- B. Thêm chức năng mới vào phần mềm
- C. Kiểm thử hiệu năng của phần mềm
- D. Cải thiện cấu trúc bên trong của mã nguồn mà không thay đổi hành vi bên ngoài của nó
Câu 22: Trong mô hình Scrum, "Sprint" là gì?
- A. Một cuộc họp hàng ngày của đội phát triển Scrum
- B. Một khoảng thời gian ngắn (thường từ 1 đến 4 tuần) trong đó đội phát triển làm việc để hoàn thành một tập hợp các công việc cụ thể
- C. Danh sách tất cả các yêu cầu của dự án
- D. Vai trò của người quản lý dự án trong Scrum
Câu 23: Đâu là một ví dụ về yêu cầu phi chức năng?
- A. Hệ thống phải cho phép người dùng đăng nhập bằng tên người dùng và mật khẩu
- B. Hệ thống phải hiển thị danh sách sản phẩm theo danh mục
- C. Hệ thống phải phản hồi yêu cầu của người dùng trong vòng 2 giây
- D. Hệ thống phải cung cấp chức năng tìm kiếm sản phẩm
Câu 24: "Technical Debt Quadrant" (Ma trận nợ kỹ thuật) giúp ích gì trong quản lý nợ kỹ thuật?
- A. Phân loại và ưu tiên các loại nợ kỹ thuật khác nhau dựa trên mức độ cố ý và bối cảnh phát sinh
- B. Đo lường chính xác số tiền nợ kỹ thuật của dự án
- C. Tự động loại bỏ nợ kỹ thuật khỏi mã nguồn
- D. Ngăn chặn hoàn toàn việc phát sinh nợ kỹ thuật
Câu 25: Trong kiểm thử API (Application Programming Interface), loại kiểm thử nào tập trung vào việc xác minh rằng API trả về dữ liệu chính xác và ở định dạng mong muốn?
- A. Kiểm thử hiệu năng API
- B. Kiểm thử chức năng API
- C. Kiểm thử bảo mật API
- D. Kiểm thử tích hợp API
Câu 26: "Continuous Integration" (Tích hợp liên tục) trong DevOps có nghĩa là gì?
- A. Liên tục triển khai phần mềm lên môi trường production
- B. Liên tục thu thập phản hồi từ người dùng
- C. Thực hành tích hợp mã nguồn từ các thành viên khác nhau trong nhóm phát triển một cách thường xuyên và tự động
- D. Liên tục giám sát hiệu năng của hệ thống
Câu 27: "Code review" (Đánh giá mã) mang lại lợi ích gì chính cho chất lượng phần mềm?
- A. Phát hiện lỗi và vấn đề tiềm ẩn trong mã nguồn sớm, trước khi chuyển sang giai đoạn kiểm thử
- B. Tăng tốc độ viết mã của lập trình viên
- C. Giảm chi phí lưu trữ mã nguồn
- D. Tự động sinh mã nguồn từ yêu cầu
Câu 28: "Design Pattern" (Mẫu thiết kế) trong thiết kế phần mềm là gì?
- A. Một loại ngôn ngữ lập trình mới
- B. Một giải pháp thiết kế đã được kiểm chứng và tái sử dụng cho các vấn đề thiết kế phần mềm thường gặp
- C. Một công cụ để tự động sinh mã nguồn
- D. Một phương pháp kiểm thử phần mềm
Câu 29: "Containerization" (Công nghệ container) như Docker giúp ích gì trong triển khai ứng dụng?
- A. Tăng tốc độ phát triển phần mềm
- B. Cải thiện hiệu năng của ứng dụng
- C. Giảm dung lượng lưu trữ dữ liệu
- D. Đóng gói ứng dụng và các phụ thuộc của nó thành một đơn vị duy nhất, đảm bảo tính nhất quán khi triển khai trên các môi trường khác nhau
Câu 30: Phương pháp kiểm thử "Smoke Testing" (Kiểm thử khói) thường được thực hiện khi nào?
- A. Trước khi phát hành phiên bản chính thức cho người dùng cuối
- B. Sau khi hoàn thành kiểm thử hồi quy
- C. Sau mỗi lần build phần mềm mới để đảm bảo các chức năng cốt lõi hoạt động ổn định
- D. Chỉ khi có yêu cầu đặc biệt từ khách hàng