[Cánh diều] Trắc nghiệm Tin học 11 KHMT bài 12 Thực hành thiết kế và lập trình theo modun (tt)
1. Khi một module được thiết kế để có thể thay thế bằng một module khác mà không làm thay đổi hoạt động của hệ thống, điều này thể hiện đặc tính gì?
A. Tính thay thế (Substitutability).
B. Tính tái sử dụng (Reusability).
C. Tính độc lập (Independence).
D. Tính bảo mật (Security).
2. Khi một module được thiết kế để có thể dễ dàng kết hợp với các module khác để tạo thành một hệ thống lớn hơn, đặc tính này được gọi là gì?
A. Tính mô-đun hóa (Modularity).
B. Tính đóng gói (Encapsulation).
C. Tính trừu tượng (Abstraction).
D. Tính kế thừa (Inheritance).
3. Trong thiết kế module, nguyên tắc KISS (Keep It Simple, Stupid) khuyến khích điều gì?
A. Thiết kế module với sự đơn giản và dễ hiểu nhất có thể.
B. Module phải có khả năng hoạt động trong mọi tình huống.
C. Module phải sử dụng các thuật toán phức tạp nhất.
D. Module phải có nhiều chức năng nhất có thể.
4. Nếu một module thực hiện nhiều chức năng không liên quan đến nhau, điều này vi phạm nguyên tắc nào trong thiết kế module?
A. Nguyên tắc trách nhiệm đơn lẻ (Single Responsibility Principle - SRP).
B. Nguyên tắc đóng gói (Encapsulation).
C. Nguyên tắc đa hình (Polymorphism).
D. Nguyên tắc kế thừa (Inheritance).
5. Khi một module được thiết kế để có thể dễ dàng thay thế bằng một module khác với chức năng tương tự nhưng có thể có cách triển khai khác, điều này nhấn mạnh đến:
A. Tính đóng gói (Encapsulation) và giao diện rõ ràng.
B. Tính kết dính cao (High Cohesion).
C. Tính ràng buộc thấp (Low Coupling).
D. Tính tái sử dụng (Reusability).
6. Trong mối quan hệ giữa các module, giao diện lập trình ứng dụng (API - Application Programming Interface) đóng vai trò gì?
A. Là một tập hợp các quy tắc và định nghĩa cho phép các module khác giao tiếp và sử dụng chức năng của nhau.
B. Là một tệp tin chứa mã nguồn của module.
C. Là một cơ chế để nén và giải nén dữ liệu.
D. Là một công cụ để kiểm tra lỗi bảo mật.
7. Trong quá trình lập trình theo module, nếu một module cung cấp một tập hợp các hàm xử lý chuỗi, thì việc gọi các hàm này từ module khác được thực hiện thông qua cơ chế nào?
A. Thông qua giao diện (interface) hoặc các hàm được công khai (public functions) của module đó.
B. Thông qua việc truy cập trực tiếp vào biến nội bộ của module.
C. Bằng cách biên dịch lại toàn bộ mã nguồn của hệ thống.
D. Thông qua việc gửi thông điệp broadcast đến mọi module.
8. Một module được thiết kế tốt cần ưu tiên tính trừu tượng (abstraction). Điều này có nghĩa là gì trong ngữ cảnh lập trình?
A. Chỉ hiển thị những thông tin cần thiết và ẩn đi các chi tiết phức tạp không liên quan.
B. Module phải có khả năng chạy trên nhiều nền tảng khác nhau.
C. Module phải có khả năng tự động cập nhật.
D. Module phải sử dụng ít tài nguyên hệ thống nhất.
9. Khi thiết kế một module xử lý dữ liệu người dùng, nếu module này cần sử dụng một module khác để xác thực định dạng email, thì module xác thực email nên được coi là gì đối với module xử lý dữ liệu người dùng?
A. Một module có chức năng phụ trợ.
B. Một module độc lập hoàn toàn.
C. Một module thay thế.
D. Một module giao diện người dùng.
10. Trong quá trình lập trình, một module có thể được hiểu là gì?
A. Một đơn vị mã nguồn có chức năng cụ thể, độc lập và có thể tái sử dụng.
B. Toàn bộ mã nguồn của một ứng dụng.
C. Chỉ là một tệp văn bản chứa các dòng lệnh.
D. Một giao diện đồ họa người dùng.
11. Trong quá trình thực hành lập trình theo module, nếu bạn cần một module thực hiện các phép toán trên ma trận, bạn có thể tạo ra một module với tên gọi gợi ý là:
A. MatrixOperations
B. Calculations
C. MathFunctions
D. MatrixHelper
12. Khi phân tích và thiết kế phần mềm theo hướng module, mục tiêu chính của việc chia nhỏ hệ thống thành các module độc lập là gì?
A. Tăng cường khả năng tái sử dụng và dễ dàng bảo trì.
B. Giảm thiểu thời gian biên dịch mã nguồn.
C. Tăng cường tính bảo mật cho toàn bộ hệ thống.
D. Đảm bảo mọi module có cùng một giao diện người dùng.
13. Khi xem xét khả năng mở rộng (extensibility) của một module, điều gì là quan trọng nhất?
A. Khả năng thêm chức năng mới hoặc sửa đổi chức năng hiện có mà ít ảnh hưởng đến các phần khác của hệ thống.
B. Module có thể chạy trên nhiều hệ điều hành khác nhau.
C. Module sử dụng ít bộ nhớ nhất có thể.
D. Module có thể được nén lại để giảm dung lượng lưu trữ.
14. Khi thiết kế một hệ thống phần mềm, việc sử dụng các module cho phép các nhà phát triển làm việc song song. Điều này mang lại lợi ích gì?
A. Tăng tốc độ phát triển tổng thể của dự án.
B. Giảm yêu cầu về kỹ năng của các nhà phát triển.
C. Tăng độ phức tạp của mã nguồn.
D. Giảm nhu cầu kiểm thử.
15. Khi thiết kế module, việc che giấu thông tin (information hiding) có ý nghĩa gì?
A. Chỉ cho phép truy cập vào dữ liệu và chức năng thông qua các giao diện được định nghĩa rõ ràng.
B. Giữ bí mật hoàn toàn về cách thức hoạt động của module.
C. Mã hóa toàn bộ dữ liệu bên trong module.
D. Ngăn cản mọi truy cập từ bên ngoài.
16. Nếu một module thực hiện một tác vụ cụ thể, ví dụ như tính toán chỉ số BMI dựa trên chiều cao và cân nặng, thì module này có thể được coi là một ví dụ của:
A. Một module chức năng chuyên biệt.
B. Một module hệ thống điều hành.
C. Một module giao diện đồ họa.
D. Một module quản lý cơ sở dữ liệu.
17. Ngược lại với tính kết dính cao, tính ràng buộc thấp (low coupling) giữa các module là một mục tiêu thiết kế quan trọng. Điều này có nghĩa là gì?
A. Mức độ phụ thuộc lẫn nhau giữa các module là tối thiểu.
B. Mỗi module chỉ nên thực hiện một chức năng duy nhất.
C. Module phải có khả năng mở rộng cao.
D. Các module phải có giao diện lập trình ứng dụng (API) giống nhau.
18. Trong quá trình phát triển phần mềm, việc định nghĩa rõ ràng giao diện (interface) cho mỗi module có vai trò gì?
A. Xác định cách các module khác có thể tương tác với module đó mà không cần biết chi tiết bên trong.
B. Quyết định ngôn ngữ lập trình sẽ được sử dụng cho module.
C. Đảm bảo module có hiệu suất xử lý cao nhất.
D. Xác định số lượng người dùng có thể truy cập module cùng lúc.
19. Khi phân tích một module, nếu phát hiện ra rằng một số hàm bên trong module có thể được tái sử dụng ở nhiều nơi khác nhau trong cùng một module đó, thì việc tổ chức lại các hàm này vào một hàm phụ (helper function) là một cách tốt để:
A. Giảm sự trùng lặp mã nguồn (code duplication) và tăng tính rõ ràng.
B. Tăng cường tính bảo mật của module.
C. Giảm yêu cầu về bộ nhớ.
D. Tăng tốc độ biên dịch.
20. Nếu một module cần truy cập dữ liệu từ cơ sở dữ liệu, thì việc tách biệt logic truy cập cơ sở dữ liệu ra một module riêng biệt (ví dụ: Data Access Module) sẽ mang lại lợi ích gì?
A. Giúp dễ dàng thay đổi hệ quản trị cơ sở dữ liệu mà ít ảnh hưởng đến logic nghiệp vụ.
B. Tăng tốc độ truy vấn cơ sở dữ liệu.
C. Giảm số lượng câu lệnh SQL cần viết.
D. Tự động hóa việc sao lưu cơ sở dữ liệu.
21. Trong lập trình hướng đối tượng, khi một lớp (class) kế thừa từ một lớp khác, mối quan hệ này thường được gọi là gì?
A. Quan hệ là một (is-a relationship).
B. Quan hệ có một (has-a relationship).
C. Quan hệ sử dụng (uses-a relationship).
D. Quan hệ phụ thuộc (depends-on relationship).
22. Một module được thiết kế tốt cần có tính kết dính cao (high cohesion). Điều này có nghĩa là gì?
A. Các thành phần bên trong module liên quan chặt chẽ và cùng thực hiện một chức năng duy nhất.
B. Module có thể dễ dàng tương tác với nhiều module khác nhau.
C. Module có ít phụ thuộc nhất vào các module bên ngoài.
D. Mọi thành phần trong module đều có thể truy cập được từ bên ngoài.
23. Trong thiết kế module, việc sử dụng các hằng số (constants) thay vì các giá trị ma thuật (magic numbers) trong mã nguồn giúp ích gì cho quá trình bảo trì?
A. Giúp dễ dàng thay đổi giá trị và làm cho mã nguồn dễ đọc hơn.
B. Tăng tốc độ thực thi của chương trình.
C. Giảm dung lượng bộ nhớ mà module sử dụng.
D. Tự động kiểm tra lỗi cú pháp.
24. Trong quá trình thiết kế và lập trình theo module, khi một module cần sử dụng chức năng của module khác, mối quan hệ giữa hai module này thường được biểu diễn bằng loại liên kết nào?
A. Liên kết phụ thuộc (Dependency)
B. Liên kết kế thừa (Inheritance)
C. Liên kết kết hợp (Association)
D. Liên kết tập hợp (Aggregation)
25. Trong thiết kế module, khi một module cần gửi thông báo đến các module khác, cơ chế nào là phổ biến để thực hiện điều này một cách lỏng lẻo (loosely coupled)?
A. Sử dụng mô hình xuất bản-đăng ký (Publish-Subscribe pattern).
B. Gọi trực tiếp các hàm của các module nhận.
C. Truyền dữ liệu qua một biến toàn cục.
D. Sử dụng cơ chế kế thừa.