Trắc nghiệm Cánh diều Tin học 11 KHMT bài 11 Thực hành thiết kế và lập trình theo modun
1. Khi phân tích yêu cầu cho một module mới, điều gì quan trọng nhất cần được làm rõ?
A. Kích thước của tệp tin mã nguồn.
B. Mục tiêu chính và các chức năng cụ thể mà module cần thực hiện.
C. Tên của lập trình viên sẽ viết module.
D. Màu sắc của giao diện người dùng.
2. Mục tiêu chính của việc viết Documentation (Tài liệu) cho một module là gì?
A. Tăng kích thước tệp chương trình.
B. Giúp người khác hiểu cách sử dụng và hoạt động của module.
C. Che giấu mã nguồn khỏi người dùng.
D. Chỉ dành cho nhà phát triển ban đầu.
3. Trong quy trình phát triển phần mềm theo module, bước Testing (Kiểm thử) có vai trò gì?
A. Chỉ kiểm tra giao diện người dùng.
B. Xác minh rằng module hoạt động đúng như mong đợi và không có lỗi.
C. Viết mã nguồn mới.
D. Thiết kế lại toàn bộ cấu trúc.
4. Trong việc chia nhỏ chương trình thành các module, Single Responsibility Principle (Nguyên tắc Trách nhiệm Đơn lẻ) đề xuất điều gì?
A. Mỗi module nên có nhiều trách nhiệm khác nhau.
B. Mỗi module chỉ nên có một lý do để thay đổi, tức là một trách nhiệm duy nhất.
C. Mã nguồn nên được lặp lại nhiều lần.
D. Giao diện module nên rất phức tạp.
5. Khi lập trình theo module, nếu hai module phụ thuộc lẫn nhau một cách phức tạp, điều này thể hiện điểm yếu nào trong thiết kế?
A. Độ gắn kết thấp.
B. Độ phụ thuộc cao (High Coupling).
C. Tính đóng gói tốt.
D. Tính trừu tượng hóa cao.
6. Khi một module cần xử lý dữ liệu từ nguồn bên ngoài, cách thức an toàn và hiệu quả nhất để truyền dữ liệu là gì?
A. Truy cập trực tiếp vào biến toàn cục của hệ thống.
B. Sử dụng các tham số truyền vào (parameters) và giá trị trả về (return values).
C. Đọc dữ liệu từ tệp tin tạm thời không rõ nguồn gốc.
D. Gửi dữ liệu qua mạng không mã hóa.
7. Khi thiết kế một module, việc chia nhỏ các chức năng phức tạp thành các module con, độc lập với nhau, nhằm mục đích gì?
A. Tăng cường sự phụ thuộc giữa các module.
B. Giảm thiểu khả năng tái sử dụng mã.
C. Tăng tính module hóa, dễ quản lý và bảo trì.
D. Làm cho chương trình phức tạp hơn.
8. Trong lập trình theo module, Interface (Giao diện) của một module đóng vai trò gì?
A. Chỉ định cách thức các module khác tương tác với module đó.
B. Chứa toàn bộ mã nguồn chi tiết của module.
C. Quyết định tên biến nội bộ của module.
D. Xác định hiệu năng của module.
9. Nếu một module cần xử lý lỗi một cách hiệu quả, cách tiếp cận phổ biến là gì?
A. Bỏ qua mọi lỗi xảy ra.
B. Sử dụng cơ chế exception handling (xử lý ngoại lệ) để bắt và xử lý lỗi.
C. In thông báo lỗi ra màn hình và dừng chương trình ngay lập tức.
D. Ghi đè các lỗi bằng các giá trị mặc định.
10. Trong quá trình lập trình theo module, việc refactoring (tái cấu trúc mã) thường được thực hiện để làm gì?
A. Thêm các chức năng mới không liên quan.
B. Cải thiện cấu trúc và khả năng đọc của mã mà không thay đổi chức năng bên ngoài.
C. Xóa bỏ toàn bộ mã cũ.
D. Tăng cường sự phức tạp của mã.
11. Khi phát triển một ứng dụng lớn, việc phân chia thành nhiều module giúp ích gì cho quá trình làm việc nhóm?
A. Mỗi thành viên làm việc độc lập trên toàn bộ dự án.
B. Các thành viên có thể làm việc trên các module khác nhau một cách đồng thời, giảm xung đột.
C. Tăng cường sự phụ thuộc giữa các thành viên.
D. Chỉ một người có thể làm việc trên dự án.
12. Một module được thiết kế tốt cần có tính chất nào sau đây để đảm bảo sự độc lập và dễ dàng thay thế?
A. Độ gắn kết cao (High Cohesion).
B. Độ phụ thuộc cao (High Coupling).
C. Tính trừu tượng hóa thấp (Low Abstraction).
D. Độ phụ thuộc chéo (Cross-dependency).
13. Trong thiết kế module, nếu một module được thiết kế để hoạt động tốt với nhiều loại dữ liệu đầu vào khác nhau mà không cần sửa đổi mã nguồn, module đó có tính chất gì?
A. Độ gắn kết thấp.
B. Tính cụ thể cao.
C. Tính tổng quát và linh hoạt.
D. Độ phụ thuộc cao.
14. Trong quá trình phát triển phần mềm theo module, bước Deployment (Triển khai) liên quan đến việc gì?
A. Viết tài liệu chi tiết.
B. Đưa sản phẩm phần mềm (bao gồm các module đã hoàn thiện) đến tay người dùng.
C. Thiết kế giao diện đồ họa.
D. Kiểm tra lại mã nguồn.
15. Nguyên tắc Dont Repeat Yourself (DRY) trong lập trình theo module có ý nghĩa gì?
A. Viết lại mã nguồn nhiều lần để kiểm tra.
B. Tránh lặp lại cùng một đoạn mã hoặc logic.
C. Chỉ viết mã cho những chức năng cần thiết nhất.
D. Sử dụng ít biến nhất có thể.
16. Việc sử dụng các design patterns (mẫu thiết kế) trong lập trình theo module giúp ích gì?
A. Làm cho mã nguồn khó đọc hơn.
B. Tăng cường khả năng tái sử dụng và giải quyết các vấn đề thiết kế phổ biến một cách hiệu quả.
C. Giảm thiểu tầm quan trọng của module.
D. Chỉ áp dụng cho các dự án lớn.
17. Trong quy trình thiết kế và lập trình theo module, bước nào thường được thực hiện đầu tiên để xác định rõ ràng mục tiêu và phạm vi của chương trình?
A. Viết mã nguồn chi tiết.
B. Lập kế hoạch và phân tích yêu cầu.
C. Kiểm thử và gỡ lỗi.
D. Thiết kế giao diện người dùng.
18. Đâu là đặc điểm quan trọng nhất của một API (Application Programming Interface) trong ngữ cảnh lập trình theo module?
A. Là toàn bộ mã nguồn của một ứng dụng.
B. Là tập hợp các quy tắc và định nghĩa cho phép các ứng dụng hoặc module khác tương tác với nhau.
C. Là một tệp tin cấu hình duy nhất.
D. Là một công cụ gỡ lỗi.
19. Khi một module được thiết kế để có low coupling (độ phụ thuộc thấp), điều đó có nghĩa là gì?
A. Module đó phụ thuộc rất nhiều vào các module khác.
B. Module đó ít phụ thuộc vào các module khác, giúp dễ dàng thay thế hoặc sửa đổi.
C. Module đó không có bất kỳ kết nối nào với các module khác.
D. Module đó chỉ có thể hoạt động độc lập.
20. Khi thiết kế một module, việc xác định rõ ràng các input (đầu vào) và output (đầu ra) của nó giúp ích gì cho việc tích hợp?
A. Làm cho module khó sử dụng hơn.
B. Tạo ra sự phụ thuộc không cần thiết.
C. Đảm bảo tính rõ ràng và dễ dàng kết nối với các module khác.
D. Che giấu thông tin về chức năng của module.
21. Một module có độ gắn kết cao (high cohesion) có nghĩa là gì?
A. Các chức năng bên trong module không liên quan đến nhau.
B. Các chức năng bên trong module liên quan chặt chẽ và cùng phục vụ một mục đích.
C. Module này phụ thuộc nhiều vào các module khác.
D. Module này có thể thực hiện nhiều chức năng khác nhau.
22. Khi một module được cập nhật hoặc sửa đổi, làm thế nào để đảm bảo các module khác vẫn hoạt động chính xác?
A. Cập nhật lại toàn bộ mã nguồn.
B. Kiểm tra lại giao diện (interface) của module bị ảnh hưởng và chạy lại các bài kiểm thử (test cases).
C. Xóa bỏ các module khác.
D. Không cần làm gì nếu chỉ sửa lỗi nhỏ.
23. Trong quá trình thực hành thiết kế và lập trình theo module, việc lựa chọn ngôn ngữ lập trình phù hợp ảnh hưởng đến yếu tố nào?
A. Chỉ ảnh hưởng đến giao diện người dùng.
B. Ảnh hưởng đến khả năng đóng gói, tái sử dụng và hiệu năng của module.
C. Không ảnh hưởng đến cấu trúc module.
D. Chỉ ảnh hưởng đến quá trình gỡ lỗi.
24. Trong thiết kế hướng đối tượng, một class (lớp) thường được xem như một loại module. Đặc tính nào của lớp thể hiện tính module hóa?
A. Chỉ chứa các biến toàn cục.
B. Đóng gói dữ liệu (attributes) và hành vi (methods) liên quan vào một đơn vị duy nhất.
C. Phụ thuộc hoàn toàn vào các lớp khác.
D. Không có bất kỳ phương thức nào.
25. Trong thiết kế module, Abstraction (Trừu tượng hóa) giúp che giấu đi những chi tiết phức tạp và chỉ hiển thị những thông tin cần thiết. Điều này mang lại lợi ích gì?
A. Làm cho module khó hiểu hơn.
B. Giúp người dùng tập trung vào chức năng mà không cần quan tâm đến cách thức hoạt động bên trong.
C. Tăng cường sự phụ thuộc lẫn nhau giữa các module.
D. Giảm tính module hóa.