Trắc nghiệm Kết nối Tin học 11 KHMT bài 29 Thực hành thiết kế chương trình theo modun
1. Yếu tố nào sau đây KHÔNG phải là lợi ích của việc thiết kế chương trình theo module?
A. Tăng khả năng tái sử dụng mã nguồn.
B. Dễ dàng bảo trì và nâng cấp.
C. Giảm thiểu thời gian lập trình ban đầu.
D. Cải thiện khả năng đọc hiểu của mã nguồn.
2. Việc định nghĩa rõ ràng giao diện (interface) của một module có vai trò gì?
A. Quyết định ngôn ngữ lập trình sẽ sử dụng.
B. Xác định các chức năng mà module cung cấp và cách các module khác có thể tương tác với nó.
C. Kiểm soát quyền truy cập vào mã nguồn của module.
D. Tự động tạo tài liệu kỹ thuật.
3. Khi thiết kế một module xử lý dữ liệu người dùng, bạn nên lưu trữ thông tin nhạy cảm như mật khẩu như thế nào để đảm bảo an toàn?
A. Lưu trực tiếp dưới dạng văn bản thuần túy.
B. Sử dụng các thuật toán băm (hashing) mạnh, kết hợp với salt.
C. Mã hóa bằng một khóa đơn giản có thể đoán được.
D. Lưu trữ trong một file có quyền truy cập công khai.
4. Trong thiết kế theo module, tại sao việc đặt tên module và các hàm/phương thức bên trong nó lại quan trọng?
A. Để làm cho mã nguồn trông phức tạp hơn.
B. Giúp người khác (và chính bản thân trong tương lai) hiểu rõ chức năng và mục đích của module/hàm.
C. Tự động dịch mã nguồn sang ngôn ngữ khác.
D. Tăng hiệu suất chạy chương trình.
5. Một module được coi là cứng nhắc (rigid) khi nào?
A. Khi nó có độ gắn kết cao.
B. Khi việc thay đổi nhỏ trong yêu cầu dẫn đến phải thay đổi lớn trong module.
C. Khi nó có giao diện rõ ràng.
D. Khi nó có khả năng tái sử dụng cao.
6. Module quản lý người dùng và module xử lý thanh toán trong một ứng dụng thương mại điện tử cần có mối quan hệ như thế nào để đảm bảo hoạt động hiệu quả?
A. Không cần liên quan gì đến nhau.
B. Module xử lý thanh toán có thể cần gọi module quản lý người dùng để lấy thông tin xác thực.
C. Module quản lý người dùng phải gọi module xử lý thanh toán để thực hiện giao dịch.
D. Cả hai module phải có cùng mã nguồn.
7. Trong các bước thực hành thiết kế chương trình theo module, thứ tự ưu tiên thường là gì?
A. Viết mã nguồn, sau đó mới xác định module.
B. Xác định chức năng tổng thể, chia nhỏ thành các module, định nghĩa giao diện, sau đó mới viết mã chi tiết cho từng module.
C. Bắt đầu bằng việc chọn ngôn ngữ lập trình tốt nhất.
D. Tập trung vào thiết kế giao diện người dùng trước.
8. Trong lập trình theo module, mục đích chính của việc chia chương trình lớn thành các module nhỏ hơn là gì?
A. Giúp chương trình chạy nhanh hơn.
B. Tăng khả năng tái sử dụng và quản lý mã nguồn dễ dàng hơn.
C. Giảm dung lượng bộ nhớ chương trình sử dụng.
D. Tự động sửa lỗi cú pháp trong quá trình lập trình.
9. Để một module có thể tái sử dụng trong nhiều dự án khác nhau, nó cần có đặc điểm gì?
A. Phụ thuộc nhiều vào các module cụ thể của dự án hiện tại.
B. Độc lập, có giao diện rõ ràng và thực hiện chức năng chung, không mang tính đặc thù của một dự án duy nhất.
C. Sử dụng các thư viện chỉ có trong một môi trường phát triển cụ thể.
D. Cần phải sửa đổi mã nguồn nhiều lần trước khi sử dụng ở dự án khác.
10. Module Quản lý người dùng có thể cung cấp các chức năng gì cho các module khác?
A. Thực hiện thanh toán.
B. Kiểm tra quyền hạn của người dùng, lấy thông tin người dùng.
C. Tạo báo cáo tài chính.
D. Xử lý đơn hàng.
11. Khi thiết kế một module trong chương trình, điều quan trọng nhất cần xem xét là gì để đảm bảo tính độc lập và dễ dàng tích hợp?
A. Sử dụng càng nhiều thư viện bên ngoài càng tốt.
B. Đảm bảo module chỉ thực hiện một chức năng cụ thể và có giao diện (interface) rõ ràng.
C. Viết mã nguồn dài và phức tạp để thể hiện kỹ năng lập trình.
D. Tự động hóa mọi quy trình bên trong module mà không cần tương tác bên ngoài.
12. Trong lập trình theo module, khái niệm đóng gói (encapsulation) đề cập đến việc gì?
A. Gom tất cả các file mã nguồn vào một file nén duy nhất.
B. Che giấu chi tiết triển khai bên trong module và chỉ cung cấp các phương thức truy cập cần thiết.
C. Thiết lập các biến toàn cục cho toàn bộ chương trình.
D. Tự động tạo tài liệu cho mỗi module.
13. Khi một module được thiết kế tốt, việc thay đổi logic bên trong nó sẽ ít ảnh hưởng đến các module khác như thế nào?
A. Sẽ gây ra lỗi nghiêm trọng cho toàn bộ chương trình.
B. Sẽ yêu cầu viết lại toàn bộ chương trình.
C. Sẽ không gây ảnh hưởng hoặc ảnh hưởng rất nhỏ nếu giao diện của module không thay đổi.
D. Sẽ tự động cập nhật các module liên quan.
14. Một module được coi là mỏng manh (brittle) khi nào?
A. Khi nó có ít chức năng.
B. Khi một thay đổi nhỏ trong một phần của module gây ra lỗi ở nhiều phần khác của cùng module đó.
C. Khi nó sử dụng ít biến.
D. Khi nó có nhiều dòng mã.
15. Trong một ứng dụng quản lý học sinh, module Quản lý điểm và module Quản lý học phí có thể có mối liên hệ nào?
A. Không liên quan gì.
B. Module quản lý học phí có thể cần thông tin về tình trạng học tập (ví dụ: có bị đình chỉ do kết quả kém) từ module quản lý điểm.
C. Module quản lý điểm phải gọi module quản lý học phí để ghi nhận điểm.
D. Cả hai module đều phải truy cập trực tiếp vào cơ sở dữ liệu chung mà không qua giao diện.
16. Khi một chương trình được chia thành nhiều module, việc gỡ lỗi (debugging) trở nên dễ dàng hơn vì lý do gì?
A. Lỗi tự động được sửa.
B. Có thể tập trung tìm và sửa lỗi trong từng module độc lập.
C. Các module không chứa lỗi.
D. Công cụ gỡ lỗi hoạt động tốt hơn với chương trình lớn.
17. Trong lập trình hướng module, khi một module được thiết kế để chỉ thực hiện một nhiệm vụ duy nhất, đó là biểu hiện của nguyên tắc nào?
A. Tính liên kết thấp (Low Coupling).
B. Đóng gói (Encapsulation).
C. Tính đơn chức năng (Single Responsibility Principle).
D. Trừu tượng hóa (Abstraction).
18. Ngược lại với độ gắn kết cao, độ liên kết thấp (low coupling) giữa các module có ý nghĩa gì?
A. Các module ít phụ thuộc lẫn nhau.
B. Các module có nhiều chức năng chung.
C. Các module cần được gọi nhiều lần.
D. Các module có cùng tên.
19. Khái niệm trừu tượng hóa (abstraction) trong thiết kế module liên quan đến việc gì?
A. Giảm số lượng dòng mã nguồn.
B. Tập trung vào các chi tiết quan trọng và bỏ qua các chi tiết không cần thiết.
C. Chỉ sử dụng các hàm có sẵn.
D. Tự động tạo giao diện người dùng.
20. Một module có độ gắn kết cao (high cohesion) nghĩa là gì?
A. Module có nhiều chức năng khác nhau.
B. Các thành phần bên trong module liên quan chặt chẽ và cùng hướng tới một mục tiêu chung.
C. Module phụ thuộc nhiều vào các module khác.
D. Module có kích thước rất lớn.
21. Nếu bạn cần thay đổi cách thức tính toán lợi nhuận trong một module Báo cáo tài chính mà không muốn ảnh hưởng đến module Quản lý đơn hàng, bạn nên dựa vào nguyên tắc nào?
A. Tăng độ gắn kết của module Báo cáo tài chính.
B. Giữ cho giao diện của module Báo cáo tài chính không thay đổi và đảm bảo độ liên kết thấp với module khác.
C. Gộp module Báo cáo tài chính và Quản lý đơn hàng thành một module lớn.
D. Sử dụng biến toàn cục cho tất cả các giá trị tài chính.
22. Nếu một module Xác thực người dùng cần kiểm tra mật khẩu của người dùng, nó nên tương tác với module Lưu trữ dữ liệu người dùng như thế nào?
A. Module Xác thực trực tiếp truy cập vào bảng mật khẩu trong cơ sở dữ liệu.
B. Module Xác thực gọi một hàm (ví dụ: getPasswordByUsername) từ module Lưu trữ dữ liệu để lấy mật khẩu.
C. Module Lưu trữ dữ liệu tự động gửi mật khẩu đến module Xác thực.
D. Cả hai module sử dụng biến toàn cục để chia sẻ mật khẩu.
23. Trong quá trình thực hành thiết kế chương trình theo module, bạn thường sử dụng các cấu trúc dữ liệu nào để truyền thông tin giữa các module?
A. Chỉ sử dụng biến toàn cục.
B. Các kiểu dữ liệu nguyên thủy (số, chuỗi) hoặc các cấu trúc dữ liệu tùy chỉnh (struct, class, object).
C. Chỉ sử dụng mảng một chiều.
D. Tất cả thông tin đều được lưu vào file.
24. Khi thiết kế một module xử lý dữ liệu, nếu có nhiều cách để thực hiện cùng một tác vụ, bạn nên chọn cách nào để đảm bảo tính mở rộng trong tương lai?
A. Chọn cách đơn giản nhất hiện tại, bất kể tương lai.
B. Chọn cách có thể dễ dàng thay đổi hoặc bổ sung các phương thức xử lý mới mà không ảnh hưởng đến các phần khác.
C. Sử dụng cách phức tạp nhất để thể hiện sự chuyên nghiệp.
D. Cố gắng gom tất cả các cách xử lý vào một hàm duy nhất.
25. Một chương trình được xây dựng theo module có lợi thế gì về mặt quản lý dự án?
A. Cho phép nhiều nhóm phát triển làm việc song song trên các module khác nhau.
B. Chỉ một người có thể làm việc hiệu quả.
C. Tất cả các module phải được hoàn thành cùng lúc.
D. Không cần quản lý dự án.