Trắc nghiệm Tin học 11 Kết nối tri thức Bài 30: Thiết lập thư viện cho chương trình - Đề 08
Trắc nghiệm Tin học 11 Kết nối tri thức Bài 30: Thiết lập thư viện cho chương trình - Đề 08 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: Mục đích chính của việc thiết kế chương trình theo mô-đun và sử dụng thư viện là gì?
- A. Tăng tốc độ thực thi chương trình bằng cách giảm tải cho bộ nhớ.
- B. Giúp chương trình tương thích với nhiều hệ điều hành khác nhau.
- C. Để chương trình dễ dàng được dịch sang các ngôn ngữ lập trình khác.
- D. Nâng cao khả năng tái sử dụng mã, giúp chương trình dễ đọc, dễ bảo trì và phát triển.
Câu 2: Trong Python, phát biểu nào sau đây là đúng khi nói về thư viện?
- A. Thư viện là tập hợp các mô-đun chứa các hàm, lớp và biến được viết sẵn để sử dụng lại trong nhiều chương trình.
- B. Thư viện chỉ chứa các hàm toán học được sử dụng để tính toán số học phức tạp.
- C. Thư viện là một chương trình độc lập, có thể chạy mà không cần chương trình chính.
- D. Thư viện chỉ được sử dụng để lưu trữ dữ liệu và không chứa mã chương trình.
Câu 3: Xét đoạn mã Python sau:
```python
import math
x = math.sqrt(-1)
print(x)
```
Đoạn mã trên sẽ:
- A. In ra màn hình giá trị `-1.0`.
- B. Gây ra lỗi `ValueError` vì không thể tính căn bậc hai của số âm trong miền số thực.
- C. In ra màn hình giá trị `NaN` (Not a Number).
- D. In ra màn hình giá trị `0.0`.
Câu 4: Để chỉ nhập hàm `sin` và `cos` từ thư viện `math` trong Python, cú pháp nào sau đây là tối ưu nhất về mặt sử dụng bộ nhớ và tránh xung đột tên?
- A. import math
- B. import math as m
- C. from math import sin, cos
- D. import sin, cos from math
Câu 5: Giả sử bạn muốn tạo một thư viện Python tùy chỉnh chứa các hàm xử lý chuỗi đặc biệt cho dự án của mình. Bạn sẽ thực hiện bước đầu tiên nào?
- A. Viết toàn bộ mã chương trình chính và sau đó tách các hàm xử lý chuỗi ra.
- B. Tạo một tệp Python mới và viết các hàm xử lý chuỗi vào tệp đó.
- C. Sử dụng một trình soạn thảo văn bản để viết các hàm xử lý chuỗi và lưu dưới định dạng `.txt`.
- D. Sao chép mã từ các thư viện có sẵn và chỉnh sửa cho phù hợp.
Câu 6: Trong Python, khi bạn sử dụng lệnh `import my_library`, điều gì xảy ra khi Python thực thi lệnh này?
- A. Python sẽ tải toàn bộ mã nguồn của `my_library` và thực thi nó ngay lập tức.
- B. Python sẽ kiểm tra xem `my_library` có phải là một thư viện chuẩn hay không, nếu không thì báo lỗi.
- C. Python sẽ tìm kiếm tệp `my_library.py` hoặc thư mục `my_library` trong các đường dẫn tìm kiếm và nạp mô-đun vào bộ nhớ.
- D. Python sẽ tạo một bản sao của `my_library` vào thư mục hiện tại của chương trình.
Câu 7: Xét tình huống: Bạn có một hàm `tinh_tong(a, b)` trong mô-đun `module1.py` và muốn sử dụng nó trong chương trình chính `main.py`. Cấu trúc thư mục nào sau đây cho phép bạn nhập mô-đun một cách trực tiếp bằng `import module1` từ `main.py`?
- A. `main.py` và `module1.py` cùng nằm trong một thư mục.
- B. `module1.py` nằm trong thư mục con của thư mục chứa `main.py`.
- C. `main.py` nằm trong thư mục con của thư mục chứa `module1.py`.
- D. `module1.py` nằm ở một ổ đĩa khác so với ổ đĩa chứa `main.py`.
Câu 8: Trong lập trình mô-đun, khái niệm "không gian tên" (namespace) giúp giải quyết vấn đề gì?
- A. Tăng tốc độ truy cập biến và hàm trong chương trình.
- B. Giảm dung lượng bộ nhớ sử dụng bởi chương trình.
- C. Đảm bảo tính bảo mật của mã nguồn trong các mô-đun.
- D. Tránh xung đột tên giữa các biến và hàm có cùng tên nhưng thuộc các mô-đun khác nhau.
Câu 9: Ưu điểm chính của việc sử dụng thư viện chuẩn trong ngôn ngữ lập trình là gì?
- A. Thư viện chuẩn luôn có hiệu suất cao nhất so với thư viện tự viết.
- B. Thư viện chuẩn cung cấp các chức năng đã được kiểm nghiệm, tối ưu hóa và thường đi kèm với ngôn ngữ lập trình.
- C. Sử dụng thư viện chuẩn giúp chương trình dễ dàng tương thích với các ngôn ngữ lập trình khác.
- D. Thư viện chuẩn cho phép người dùng tùy chỉnh mã nguồn để phù hợp với nhu cầu cụ thể.
Câu 10: Khi nào việc tạo thư viện chương trình tùy chỉnh (custom library) trở nên cần thiết?
- A. Khi bạn muốn chương trình của mình chạy nhanh hơn.
- B. Khi bạn muốn chương trình của mình trở nên phổ biến và được nhiều người sử dụng.
- C. Khi bạn cần các chức năng đặc biệt, không có sẵn trong các thư viện chuẩn hoặc thư viện bên thứ ba.
- D. Khi bạn muốn học cách lập trình nâng cao và thử thách bản thân.
Câu 11: Trong Python, để tạo một "package" (gói) thư viện, bạn cần thêm một tệp đặc biệt nào vào thư mục chứa các mô-đun?
- A. `__main__.py`
- B. `__init__.py`
- C. `__package__.py`
- D. `__module__.py`
Câu 12: Giả sử bạn đã tạo một package thư viện có tên `my_package` và bên trong có mô-đun `module_a`. Để nhập mô-đun `module_a`, cú pháp nào sau đây là đúng?
- A. import my_package.module_a
- B. import module_a from my_package
- C. from my_package import module_a()
- D. import my_package->module_a
Câu 13: Điều gì xảy ra nếu bạn cố gắng nhập một thư viện hoặc mô-đun không tồn tại trong Python?
- A. Chương trình sẽ tiếp tục chạy nhưng các chức năng của thư viện đó sẽ không khả dụng.
- B. Python sẽ tự động tải xuống và cài đặt thư viện bị thiếu từ internet.
- C. Python sẽ báo lỗi `ImportError` và chương trình sẽ dừng thực thi.
- D. Python sẽ bỏ qua lệnh nhập và tiếp tục thực thi các lệnh tiếp theo.
Câu 14: Xét đoạn mã Python sau:
```python
from math import *
print(sqrt(16))
```
Việc sử dụng `from math import *` có thể gây ra vấn đề gì trong chương trình lớn?
- A. Chương trình có thể chạy chậm hơn do phải tải tất cả các hàm từ thư viện `math`.
- B. Có thể xảy ra xung đột tên nếu có các biến hoặc hàm trùng tên với các hàm trong thư viện `math`, làm cho chương trình khó đọc và bảo trì.
- C. Việc sử dụng `import *` làm tăng dung lượng bộ nhớ sử dụng của chương trình.
- D. Không có vấn đề gì, `from math import *` là cách nhập thư viện hiệu quả nhất.
Câu 15: Trong ngữ cảnh thư viện chương trình, "API" (Application Programming Interface) đề cập đến điều gì?
- A. Mã nguồn chi tiết của thư viện, cho phép người dùng xem và chỉnh sửa.
- B. Tài liệu hướng dẫn sử dụng thư viện cho người mới bắt đầu.
- C. Tập hợp các hàm, lớp, phương thức và giao thức mà thư viện cung cấp để các nhà phát triển ứng dụng khác có thể sử dụng.
- D. Quy trình cài đặt và cập nhật thư viện lên hệ thống.
Câu 16: So sánh phương pháp `import math` và `from math import sqrt`. Phương pháp nào giúp chương trình dễ đọc và dễ bảo trì hơn khi sử dụng hàm `sqrt` nhiều lần trong chương trình?
- A. `import math` giúp dễ đọc và bảo trì hơn vì luôn rõ ràng hàm `sqrt` đến từ thư viện `math` (`math.sqrt`).
- B. `from math import sqrt` dễ đọc và bảo trì hơn vì cú pháp ngắn gọn, trực tiếp sử dụng `sqrt`.
- C. Cả hai phương pháp đều tương đương về độ dễ đọc và bảo trì.
- D. Phương pháp nào tốt hơn phụ thuộc vào sở thích cá nhân của lập trình viên.
Câu 17: Giả sử bạn muốn đóng góp một mô-đun mới vào một thư viện Python phổ biến mã nguồn mở. Quy trình chung thường bao gồm bước nào?
- A. Gửi trực tiếp mã nguồn cho người quản lý thư viện qua email.
- B. Tự động cập nhật mã nguồn của thư viện trên kho lưu trữ công cộng.
- C. Viết tài liệu hướng dẫn sử dụng mô-đun mới và đăng tải lên trang web của thư viện.
- D. Viết mã nguồn, kiểm thử kỹ lưỡng, tạo yêu cầu hợp nhất (pull request) trên nền tảng quản lý phiên bản (ví dụ: GitHub) và chờ phê duyệt.
Câu 18: Tại sao việc quản lý phiên bản (version control) quan trọng khi phát triển và sử dụng thư viện chương trình?
- A. Quản lý phiên bản giúp tăng tốc độ biên dịch và thực thi chương trình sử dụng thư viện.
- B. Quản lý phiên bản cho phép theo dõi lịch sử thay đổi, dễ dàng quay lại phiên bản cũ khi cần, và hỗ trợ cộng tác phát triển thư viện.
- C. Quản lý phiên bản giúp thư viện tương thích với nhiều hệ điều hành và nền tảng khác nhau.
- D. Quản lý phiên bản giúp bảo vệ mã nguồn thư viện khỏi bị sao chép và sử dụng trái phép.
Câu 19: Xét tình huống: Bạn viết một hàm `xu_ly_du_lieu(data)` trong mô-đun `data_utils.py` để xử lý dữ liệu đầu vào. Trong chương trình chính, bạn muốn sử dụng hàm này với tên gọi ngắn gọn hơn là `process_data`. Cách nào sau đây cho phép bạn thực hiện điều này khi nhập mô-đun?
- A. from data_utils import xu_ly_du_lieu() as process_data
- B. import data_utils.xu_ly_du_lieu as process_data()
- C. from data_utils import xu_ly_du_lieu as process_data
- D. import data_utils as du, du.xu_ly_du_lieu() as process_data
Câu 20: Trong quá trình thiết kế thư viện, điều gì quan trọng nhất cần xem xét để đảm bảo thư viện dễ sử dụng và hữu ích cho người khác?
- A. Thiết kế API rõ ràng, nhất quán, cung cấp tài liệu hướng dẫn đầy đủ và ví dụ minh họa dễ hiểu.
- B. Tối ưu hóa hiệu suất thư viện đến mức cao nhất, ngay cả khi làm giảm tính dễ đọc của mã nguồn.
- C. Sử dụng các kỹ thuật lập trình phức tạp và tiên tiến nhất để thể hiện trình độ chuyên môn.
- D. Giữ cho kích thước mã nguồn thư viện nhỏ gọn nhất có thể, loại bỏ các chức năng ít dùng.
Câu 21: Cho đoạn mã Python sau, giả sử `my_module.py` chứa hàm `calculate_area(radius)`:
```python
# main.py
import my_module
r = 5
area = my_module.calculate_area(r)
print(area)
```
Nếu bạn thay đổi `import my_module` thành `from my_module import calculate_area`, đoạn mã `main.py` cần được chỉnh sửa như thế nào để vẫn hoạt động đúng?
- A. Không cần chỉnh sửa gì, mã vẫn hoạt động đúng.
- B. Thay `area = my_module.calculate_area(r)` thành `area = calculate_area(r)`.
- C. Thay `import my_module` thành `import my_module as mm` và `area = my_module.calculate_area(r)` thành `area = mm.calculate_area(r)`.
- D. Xóa dòng `import my_module` và thêm dòng `import calculate_area`.
Câu 22: Khi xây dựng thư viện cho dự án lớn, việc phân chia thư viện thành các package con (sub-packages) có lợi ích gì?
- A. Giảm kích thước tổng thể của thư viện.
- B. Tăng tốc độ nhập thư viện vào chương trình.
- C. Giúp tổ chức thư viện một cách logic, phân loại các mô-đun theo chức năng và làm cho thư viện dễ quản lý hơn.
- D. Cải thiện hiệu suất thực thi của các hàm trong thư viện.
Câu 23: Điều gì có thể xảy ra nếu hai thư viện khác nhau định nghĩa các hàm hoặc lớp có cùng tên?
- A. Chương trình sẽ tự động chọn hàm hoặc lớp từ thư viện được nhập trước.
- B. Python sẽ báo lỗi và yêu cầu người dùng đổi tên một trong các hàm hoặc lớp.
- C. Chương trình sẽ hoạt động không ổn định và có thể gây ra kết quả sai lệch.
- D. Có thể xảy ra xung đột tên, dẫn đến việc chương trình sử dụng nhầm hàm hoặc lớp từ thư viện không mong muốn, hoặc gây ra lỗi.
Câu 24: Tại sao tài liệu hướng dẫn sử dụng (documentation) lại quan trọng đối với một thư viện chương trình?
- A. Tài liệu hướng dẫn giúp tăng tốc độ thực thi của thư viện.
- B. Tài liệu hướng dẫn giúp người dùng hiểu rõ chức năng, cách sử dụng các thành phần của thư viện và giảm thời gian học và làm quen với thư viện.
- C. Tài liệu hướng dẫn giúp bảo vệ mã nguồn thư viện khỏi bị sao chép.
- D. Tài liệu hướng dẫn là yêu cầu bắt buộc để thư viện được công nhận và sử dụng rộng rãi.
Câu 25: Trong Python, bạn có thể sử dụng công cụ nào để tự động tạo tài liệu hướng dẫn từ mã nguồn của thư viện?
- A. PyDoc
- B. Docstring
- C. Sphinx
- D. unittest
Câu 26: Xét tình huống: Bạn muốn sử dụng một thư viện bên thứ ba (ví dụ: `requests` để gửi yêu cầu HTTP) trong dự án Python của mình. Bước đầu tiên bạn cần làm là gì?
- A. Cài đặt thư viện `requests` bằng pip (ví dụ: `pip install requests`).
- B. Tải mã nguồn của thư viện `requests` về và đặt vào cùng thư mục với dự án.
- C. Sao chép các hàm cần thiết từ thư viện `requests` vào mã nguồn dự án.
- D. Không cần cài đặt, chỉ cần nhập thư viện `requests` trong mã nguồn.
Câu 27: Công cụ quản lý gói `pip` trong Python giúp ích gì cho việc sử dụng thư viện?
- A. Tự động tạo tài liệu hướng dẫn sử dụng cho các thư viện Python.
- B. Giúp dễ dàng cài đặt, cập nhật, gỡ bỏ và quản lý các thư viện bên thứ ba cho dự án Python.
- C. Tăng tốc độ thực thi của các chương trình Python sử dụng thư viện.
- D. Chuyển đổi mã nguồn Python sang ngôn ngữ máy để tăng hiệu suất.
Câu 28: Điều gì có nghĩa là một thư viện chương trình có tính "mô-đun hóa" cao?
- A. Thư viện có thể chạy trên nhiều nền tảng hệ điều hành khác nhau.
- B. Thư viện có hiệu suất thực thi rất cao và sử dụng ít tài nguyên hệ thống.
- C. Thư viện được chia thành các mô-đun nhỏ, mỗi mô-đun đảm nhận một chức năng cụ thể và có tính độc lập tương đối.
- D. Thư viện có giao diện người dùng đồ họa (GUI) trực quan và dễ sử dụng.
Câu 29: Trong quá trình phát triển thư viện, kiểm thử (testing) đóng vai trò như thế nào?
- A. Kiểm thử chỉ cần thiết sau khi thư viện đã hoàn thành và chuẩn bị phát hành.
- B. Kiểm thử chỉ giúp kiểm tra hiệu suất của thư viện, không liên quan đến chức năng.
- C. Kiểm thử không cần thiết nếu mã nguồn thư viện được viết cẩn thận và logic.
- D. Kiểm thử giúp phát hiện lỗi, đảm bảo các chức năng của thư viện hoạt động đúng như thiết kế và nâng cao chất lượng, độ tin cậy của thư viện.
Câu 30: Giả sử bạn muốn tìm hiểu về các hàm và lớp có sẵn trong thư viện `os` của Python. Cách nào sau đây là hiệu quả nhất để khám phá nội dung của thư viện?
- A. Đọc toàn bộ mã nguồn của thư viện `os` để hiểu cấu trúc và chức năng.
- B. Sử dụng hàm `dir(os)` trong Python interpreter để liệt kê các thành phần, và tra cứu tài liệu chính thức của Python về thư viện `os`.
- C. Thử nghiệm sử dụng ngẫu nhiên các tên hàm và lớp cho đến khi tìm ra chức năng mong muốn.
- D. Hỏi trực tiếp những người đã có kinh nghiệm sử dụng thư viện `os`.