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 - Đề 09
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 - Đề 09 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!
Câu 1: Trong lập trình Python, mục đích chính của việc sử dụng thư viện (library) là gì?
- A. Để làm cho mã nguồn dài hơn và phức tạp hơn.
- B. Để chỉ sử dụng được các hàm toán học.
- C. Để tái sử dụng các đoạn mã đã viết sẵn, tiết kiệm thời gian và công sức.
- D. Để bắt buộc người lập trình phải viết lại các chức năng cơ bản.
Câu 2: Giả sử bạn cần sử dụng hàm `sqrt` (căn bậc hai) từ thư viện `math` trong Python. Lệnh `import math` sẽ ảnh hưởng đến cách bạn gọi hàm `sqrt` như thế nào?
- A. Bạn sẽ gọi hàm bằng cách sử dụng `math.sqrt()`.
- B. Bạn sẽ gọi hàm bằng cách sử dụng `sqrt()`.
- C. Bạn sẽ gọi hàm bằng cách sử dụng `math.sqrt` (không có dấu ngoặc).
- D. Bạn không thể gọi hàm `sqrt` sau khi dùng lệnh `import math`.
Câu 3: Lệnh `from math import floor` trong Python có ý nghĩa gì?
- A. Nhập toàn bộ thư viện `math` vào bộ nhớ.
- B. Chỉ nhập riêng hàm `floor` từ thư viện `math` vào bộ nhớ.
- C. Đổi tên thư viện `math` thành `floor`.
- D. Kiểm tra xem hàm `floor` có tồn tại trong thư viện `math` không.
Câu 4: Sau khi thực hiện lệnh `from math import ceil`, bạn muốn làm tròn số `3.14` lên số nguyên gần nhất. Lệnh gọi hàm nào sau đây là đúng?
- A. math.ceil(3.14)
- B. ceil(math.3.14)
- C. ceil(3.14)
- D. floor(3.14)
Câu 5: Xét đoạn mã sau:
```python
import math as m
ket_qua = m.sqrt(16)
print(ket_qua)
```
Đoạn mã này sẽ in ra kết quả gì?
- A. math.sqrt(16)
- B. m.sqrt(16)
- C. 16
- D. 4.0
Câu 6: Khi nào thì việc sử dụng lệnh `from import - ` (chỉ nhập một phần) có lợi hơn so với `import ` (nhập toàn bộ)?
- A. Khi bạn chỉ cần sử dụng một hoặc rất ít chức năng từ thư viện lớn, giúp tiết kiệm bộ nhớ và tránh xung đột tên.
- B. Khi bạn cần sử dụng tất cả các chức năng của thư viện.
- C. Khi bạn muốn gọi các hàm bằng cách thêm tiền tố tên thư viện (`module.item()`).
- D. Khi thư viện đó không có tên.
Câu 7: Giả sử bạn đã tạo một tệp Python có tên `hinhhoc.py` chứa một hàm tính diện tích hình tròn là `dien_tich_hinh_tron(ban_kinh)`. Để sử dụng hàm này trong một tệp Python khác nằm cùng thư mục, bạn sẽ viết lệnh nhập thư viện như thế nào?
- A. import hinhhoc.py
- B. import hinhhoc
- C. from hinhhoc import *
- D. cả B và C đều đúng
Câu 8: Tiếp theo Câu 7, sau khi đã nhập thư viện `hinhhoc` bằng lệnh `import hinhhoc`, làm thế nào bạn gọi hàm `dien_tich_hinh_tron` để tính diện tích hình tròn bán kính 5?
- A. dien_tich_hinh_tron(5)
- B. hinhhoc.py.dien_tich_hinh_tron(5)
- C. import hinhhoc.dien_tich_hinh_tron(5)
- D. hinhhoc.dien_tich_hinh_tron(5)
Câu 9: Trong ngữ cảnh của cấu trúc dữ liệu Danh sách Liên kết được trình bày trong bài học (giả sử được đóng gói trong một thư viện/module), mỗi "node" (nút) thường chứa những thông tin cơ bản nào?
- A. Dữ liệu của phần tử và con trỏ (tham chiếu) đến node tiếp theo.
- B. Chỉ dữ liệu của phần tử.
- C. Chỉ con trỏ đến node tiếp theo.
- D. Kích thước của danh sách liên kết.
Câu 10: Giả sử có một module tên `linkedlist_lib` cung cấp các hàm xử lý danh sách liên kết. Hàm `insert(L, k)` được mô tả là thêm một phần tử mới với khóa `k` vào đầu danh sách liên kết `L`. Nếu danh sách `L` ban đầu rỗng, sau khi gọi `linkedlist_lib.insert(L, 10)`, trạng thái của `L` sẽ như thế nào?
- A. Danh sách vẫn rỗng.
- B. Danh sách chứa phần tử 10 ở cuối.
- C. Danh sách chứa duy nhất một phần tử có khóa 10, và phần tử này là cả đầu và cuối danh sách.
- D. Chương trình sẽ báo lỗi vì danh sách rỗng.
Câu 11: Vẫn với module `linkedlist_lib` như ở Câu 10, hàm `delete_first(L)` được mô tả là xóa phần tử đầu tiên của danh sách `L`. Nếu danh sách `L` hiện tại là `[5, 10, 15]` (5 là phần tử đầu tiên), sau khi gọi `linkedlist_lib.delete_first(L)`, danh sách `L` sẽ trở thành:
- A. [10, 15]
- B. [5, 10]
- C. [15]
- D. Danh sách rỗng.
Câu 12: Hàm `search(L, k)` trong module `linkedlist_lib` (như mô tả trong bài học) có chức năng tìm kiếm phần tử có khóa `k` trong danh sách `L`. Nếu danh sách `L` là `[20, 30, 40]` và bạn gọi `linkedlist_lib.search(L, 30)`, hàm này sẽ trả về giá trị gì (giả sử nó trả về node đầu tiên tìm được hoặc None)?
- A. Giá trị `True` hoặc `False` tùy thuộc vào việc tìm thấy hay không.
- B. Đối tượng node chứa giá trị 30 (hoặc một tham chiếu đến nó).
- C. Chỉ số (vị trí) của phần tử 30 trong danh sách.
- D. Giá trị 30.
Câu 13: Lợi ích của việc tổ chức mã nguồn thành các module (tệp .py riêng biệt) và sử dụng chúng như thư viện là gì?
- A. Giảm khả năng tái sử dụng mã.
- B. Làm cho chương trình chạy chậm hơn.
- C. Chỉ áp dụng cho các chương trình rất nhỏ.
- D. Tăng tính tổ chức, dễ bảo trì, dễ tái sử dụng và chia sẻ mã nguồn.
Câu 14: Khi bạn sử dụng lệnh `import `, Python sẽ thực hiện việc gì lần đầu tiên gặp lệnh này trong chương trình?
- A. Tìm kiếm tệp `.py`, biên dịch (nếu cần) và thực thi mã trong tệp đó.
- B. Chỉ kiểm tra xem tệp `.py` có tồn tại hay không mà không thực thi mã.
- C. Tải toàn bộ nội dung của tệp `.py` vào một biến duy nhất.
- D. Báo lỗi ngay lập tức vì cú pháp sai.
Câu 15: Xét đoạn mã:
```python
from math import sqrt
from cmath import sqrt as csqrt # cmath cho số phức
print(sqrt(9))
print(csqrt(-9))
```
Đoạn mã này chứng minh điều gì về việc nhập các đối tượng từ thư viện?
- A. Không thể nhập các hàm có cùng tên từ các thư viện khác nhau.
- B. Có thể nhập các hàm có cùng tên từ các thư viện khác nhau bằng cách sử dụng alias (bí danh).
- C. Hàm `sqrt` từ thư viện `cmath` sẽ ghi đè hàm `sqrt` từ thư viện `math`.
- D. Chương trình sẽ báo lỗi do xung đột tên hàm `sqrt`.
Câu 16: Giả sử bạn đang viết một chương trình xử lý dữ liệu hình học và cần tính khoảng cách giữa hai điểm trong mặt phẳng 2D. Thư viện chuẩn nào của Python có khả năng chứa các hàm hữu ích cho việc này (ví dụ: tính căn bậc hai)?
- A. `math`
- B. `random`
- C. `os`
- D. `sys`
Câu 17: Bạn muốn viết một chương trình mô phỏng việc rút thăm ngẫu nhiên. Thư viện chuẩn nào của Python bạn sẽ cần nhập để tạo ra các số hoặc lựa chọn ngẫu nhiên?
- A. `math`
- B. `datetime`
- C. `json`
- D. `random`
Câu 18: Trong một dự án lớn, việc chia chương trình thành nhiều module (tệp .py) tương ứng với các chức năng khác nhau (ví dụ: module xử lý dữ liệu, module giao diện người dùng, module tính toán) thể hiện nguyên tắc thiết kế nào?
- A. Tập trung hóa (Centralization).
- B. Mô đun hóa (Modularization).
- C. Đóng gói dữ liệu (Data Encapsulation).
- D. Kế thừa (Inheritance).
Câu 19: Giả sử bạn có một danh sách liên kết `L` đang chứa các phần tử `[A, B, C]` theo thứ tự đó (A là đầu danh sách). Nếu bạn gọi hàm `linkedlist_lib.insert(L, "D")` (thêm vào đầu), danh sách `L` sẽ trở thành:
- A. [D, A, B, C]
- B. [A, B, C, D]
- C. [A, D, B, C]
- D. [D, C, B, A]
Câu 20: Tiếp theo Câu 19, danh sách `L` hiện là `[D, A, B, C]`. Nếu bạn gọi hàm `linkedlist_lib.delete_first(L)` hai lần liên tiếp, danh sách `L` cuối cùng sẽ là:
- A. [B, C]
- B. [D, A]
- C. [C]
- D. [B, C]
Câu 21: Điều gì xảy ra nếu bạn cố gắng sử dụng một hàm hoặc biến từ một thư viện mà bạn chưa nhập (import) vào chương trình Python của mình?
- A. Chương trình sẽ tự động tìm và nhập thư viện đó.
- B. Hàm/biến đó sẽ hoạt động bình thường nếu nó là hàm chuẩn của Python.
- C. Chương trình sẽ báo lỗi `NameError`.
- D. Chương trình sẽ chạy nhưng không thực hiện được chức năng của hàm/biến đó.
Câu 22: Giả sử bạn cần tính giá trị sin của một góc đo bằng radian. Bạn sẽ sử dụng hàm nào từ thư viện `math`?
- A. `math.sin()`
- B. `math.cos()`
- C. `math.tan()`
- D. `math.sqrt()`
Câu 23: Trong Python, một tệp `.py` chứa các định nghĩa hàm, lớp và biến có thể được xem như là gì khi được sử dụng trong một chương trình khác?
- A. Một đối tượng (Object).
- B. Một module (Module).
- C. Một gói (Package).
- D. Một lớp (Class).
Câu 24: Khi sử dụng cú pháp `from import *`, điều gì có thể xảy ra nếu bạn nhập từ nhiều module khác nhau có chứa các đối tượng (hàm, biến) trùng tên?
- A. Python sẽ tự động đổi tên các đối tượng trùng lặp.
- B. Chương trình sẽ báo lỗi cú pháp ngay khi biên dịch.
- C. Các đối tượng trùng tên sẽ được cộng gộp chức năng lại với nhau.
- D. Các đối tượng được nhập sau sẽ ghi đè lên các đối tượng có cùng tên được nhập trước, gây ra xung đột tên không mong muốn.
Câu 25: Xét đoạn mã:
```python
import math
import random
r = math.sqrt(25)
n = random.randint(1, 10)
print(f
- A. Chương trình có thể nhập và sử dụng các hàm từ nhiều thư viện khác nhau cùng lúc.
- B. Chỉ có thể nhập và sử dụng một thư viện tại một thời điểm.
- C. Các hàm từ các thư viện khác nhau không thể được sử dụng trong cùng một đoạn mã.
- D. Việc nhập nhiều thư viện sẽ luôn gây ra lỗi xung đột tên.
Câu 26: Giả sử module `linkedlist_lib` có hàm `show(L)` để hiển thị nội dung danh sách `L`. Nếu danh sách `L` hiện tại là rỗng, khi gọi `linkedlist_lib.show(L)`, kết quả hiển thị dự kiến sẽ là gì?
- A. Báo lỗi.
- B. Không hiển thị gì cả hoặc hiển thị một thông báo rỗng (tùy thuộc cài đặt cụ thể của hàm show, nhưng không báo lỗi).
- C. Hiển thị giá trị `None`.
- D. Hiển thị `[None]`.
Câu 27: Tại sao việc sử dụng các thư viện chuẩn (như `math`, `random`, v.v.) lại được khuyến khích hơn là tự viết lại các chức năng tương đương?
- A. Vì mã trong thư viện chuẩn thường ngắn hơn mã tự viết.
- B. Vì chỉ có thư viện chuẩn mới có thể thực hiện các phép toán phức tạp.
- C. Vì mã trong thư viện chuẩn luôn chứa lỗi.
- D. Vì mã trong thư viện chuẩn đã được kiểm thử kỹ lưỡng, tối ưu về hiệu suất và đáng tin cậy.
Câu 28: Trong mô hình danh sách liên kết, khi bạn muốn thêm một phần tử mới vào đầu danh sách, thao tác chính liên quan đến việc cập nhật con trỏ (tham chiếu) nào?
- A. Con trỏ `head` của danh sách và con trỏ `next` của node mới.
- B. Con trỏ `tail` của danh sách.
- C. Con trỏ `next` của node cuối cùng hiện tại.
- D. Không cần cập nhật con trỏ nào cả.
Câu 29: Bạn cần tính giá trị tuyệt đối của một số. Thư viện nào sau đây không cần thiết cho mục đích này vì Python có hàm tích hợp sẵn (`abs()`)?
- A. `math` (chứa `math.fabs` cho số thực)
- B. `cmath` (chứa `cmath.polar`, `cmath.phase` có liên quan đến giá trị tuyệt đối của số phức)
- C. `random`
- D. Cả A và B đều có thể chứa hàm liên quan, nhưng C chắc chắn không.
Câu 30: Khi một chương trình Python trở nên quá lớn và phức tạp, việc chia nó thành nhiều tệp module và nhập chúng lại với nhau giúp ích gì cho quá trình phát triển?
- A. Làm tăng kích thước tệp chương trình cuối cùng.
- B. Làm cho việc tìm lỗi khó khăn hơn.
- C. Bắt buộc phải làm việc một mình trên toàn bộ dự án.
- D. Cho phép nhiều lập trình viên làm việc độc lập trên các phần khác nhau của chương trình cùng lúc.