1. Phát biểu nào sau đây là ĐÚNG về việc sử dụng pip freeze > requirements.txt?
A. Lệnh này sẽ gỡ bỏ tất cả các thư viện đã cài đặt.
B. Lệnh này tạo ra một tệp liệt kê tất cả các thư viện đang được cài đặt trong môi trường Python hiện tại, cùng với phiên bản của chúng.
C. Lệnh này chỉ liệt kê các thư viện được cài đặt bằng pip.
D. Lệnh này chỉ liệt kê các thư viện được cài đặt cho toàn bộ hệ thống.
2. Trong Python, khi import một mô-đun, những gì được tải vào bộ nhớ là:
A. Chỉ các hàm được gọi trong chương trình.
B. Toàn bộ mã nguồn của mô-đun, sau đó được thực thi để tạo ra các đối tượng (hàm, lớp, biến).
C. Chỉ các định nghĩa lớp.
D. Chỉ các biến toàn cục.
3. Trong Python, nếu một thư viện có cấu trúc package phức tạp với nhiều mô-đun con, câu lệnh from my_package.sub_package import my_module được sử dụng để:
A. Nhập toàn bộ thư viện my_package.
B. Nhập mô-đun my_module từ thư mục con sub_package bên trong package my_package.
C. Tạo một thư viện mới có tên my_package.sub_package.
D. Đổi tên thư viện my_package thành my_module.
4. Phát biểu nào sau đây là chính xác nhất về khái niệm môi trường ảo (virtual environment) trong Python liên quan đến quản lý thư viện?
A. Môi trường ảo giúp chạy các chương trình Python nhanh hơn.
B. Môi trường ảo cho phép cô lập các bộ thư viện cho từng dự án, tránh xung đột phiên bản.
C. Môi trường ảo chỉ chứa các tệp thực thi của Python.
D. Môi trường ảo là bắt buộc cho mọi chương trình Python.
5. Phát biểu nào sau đây là KHÔNG ĐÚNG về việc thiết lập và sử dụng thư viện trong lập trình?
A. Thư viện giúp tái sử dụng mã nguồn, tiết kiệm thời gian phát triển.
B. Việc cài đặt thư viện luôn yêu cầu quyền quản trị hệ thống.
C. Thư viện có thể cung cấp các chức năng chuyên biệt như xử lý số liệu, đồ họa, mạng.
D. Hiểu rõ cách nhập và sử dụng các thành phần của thư viện là kỹ năng cần thiết.
6. Phát biểu nào sau đây là ĐÚNG về việc sử dụng from library_name import *?
A. Nó nhập tất cả các hàm và lớp từ thư viện vào không gian tên hiện tại.
B. Nó chỉ nhập các hàm được định nghĩa công khai (public).
C. Nó chỉ nhập các hàm có tiền tố là public_.
D. Nó chỉ nhập một hàm duy nhất được chỉ định ngầm định.
7. Trong Python, nếu bạn đã thực hiện import math, làm thế nào để gọi hàm tính căn bậc hai (square root)?
A. sqrt(x)
B. math.sqrt(x)
C. math.square_root(x)
D. maths.sqrt(x)
8. Phát biểu nào sau đây là ĐÚNG về việc quản lý các thư viện phụ thuộc (dependencies) cho một dự án Python?
A. Mỗi dự án cần cài đặt lại tất cả các thư viện từ đầu.
B. Sử dụng tệp requirements.txt để liệt kê các thư viện và phiên bản cần thiết cho dự án.
C. Chỉ cần cài đặt các thư viện một lần cho toàn bộ hệ thống.
D. Không cần ghi lại các thư viện phụ thuộc vì Python tự động quản lý.
9. Phát biểu nào sau đây mô tả đúng vai trò của setup.py (hoặc pyproject.toml) trong việc đóng gói thư viện Python?
A. Tệp này chứa mã nguồn chính của thư viện.
B. Tệp này định nghĩa siêu dữ liệu (metadata) của gói, các tệp cần bao gồm, và cách xây dựng gói.
C. Tệp này chỉ dùng để ghi lại các lỗi trong quá trình phát triển.
D. Tệp này là tệp thực thi chính của thư viện.
10. Phát biểu nào sau đây là ĐÚNG về việc sử dụng một thư viện đã được cài đặt?
A. Chỉ cần thực hiện lệnh import một lần duy nhất cho toàn bộ chương trình.
B. Bạn có thể import thư viện nhiều lần mà không ảnh hưởng đến hiệu suất.
C. Python sẽ chỉ tải và thực thi mã của thư viện khi nó được import lần đầu tiên.
D. Lệnh import sẽ luôn thực thi lại toàn bộ mã của thư viện mỗi khi được gọi.
11. Lệnh pip install ten_thu_vien được sử dụng để làm gì trong môi trường Python?
A. Gỡ bỏ một thư viện đã cài đặt.
B. Kiểm tra xem một thư viện đã được cài đặt chưa.
C. Tải về và cài đặt một thư viện từ kho lưu trữ PyPI (Python Package Index).
D. Cập nhật một thư viện lên phiên bản mới nhất.
12. Phát biểu nào sau đây là ĐÚNG về package trong ngữ cảnh thư viện Python?
A. Package là một tập hợp các file mã nguồn Python riêng lẻ.
B. Package là một thư mục chứa các mô-đun Python và một tệp __init__.py.
C. Package chỉ chứa các tệp thực thi.
D. Package chỉ có thể được tạo bởi các nhà phát triển Python cốt lõi.
13. Trong Python, khi bạn gọi một hàm từ một thư viện đã được import, ví dụ my_library.my_function(), my_library ở đây được gọi là:
A. Một đối tượng (object).
B. Một mô-đun (module).
C. Một lớp (class).
D. Một biến toàn cục (global variable).
14. Khi so sánh import library_name và from library_name import function_name, ưu điểm chính của cách thứ hai là gì?
A. Giảm nguy cơ xung đột tên với các biến hoặc hàm khác trong chương trình.
B. Cho phép truy cập trực tiếp tên hàm mà không cần tiền tố của thư viện.
C. Tăng tốc độ thực thi chương trình.
D. Chỉ tải về các hàm được sử dụng, tiết kiệm bộ nhớ.
15. Phát biểu nào mô tả đúng nhất vai trò của tệp __init__.py trong một package Python?
A. Tệp này chứa mã nguồn chính của các mô-đun trong package.
B. Tệp này là bắt buộc để khai báo package và có thể chứa mã khởi tạo package.
C. Tệp này định nghĩa các quy tắc truy cập (access modifiers) cho các thành phần trong package.
D. Tệp này chỉ dùng để ghi chú về tác giả của package.
16. Khi một thư viện được thiết kế để có hiệu suất cao, các nhà phát triển có thể sử dụng các kỹ thuật nào?
A. Chỉ sử dụng các cấu trúc dữ liệu đơn giản nhất.
B. Tối ưu hóa thuật toán, sử dụng các cấu trúc dữ liệu hiệu quả, và có thể tích hợp mã viết bằng ngôn ngữ hiệu năng cao hơn như C.
C. Giảm thiểu số lượng hàm trong thư viện.
D. Sử dụng nhiều vòng lặp lồng nhau.
17. Trong quá trình phát triển thư viện, việc kiểm tra các trường hợp biên (edge cases) là quan trọng để:
A. Làm cho thư viện có vẻ phức tạp hơn.
B. Đảm bảo thư viện hoạt động đúng đắn và ổn định với mọi loại đầu vào, kể cả các trường hợp bất thường.
C. Giảm số lượng dòng mã nguồn.
D. Tăng tốc độ xử lý cho các trường hợp thông thường.
18. Nếu bạn muốn sử dụng một hàm có tên calculate_area từ thư viện geometry, và thư viện này có một hàm trùng tên calculate_area trong một mô-đun khác, cách tốt nhất để tránh xung đột là:
A. Đổi tên hàm calculate_area trong mã nguồn của bạn.
B. Sử dụng import geometry và gọi là geometry.calculate_area(params).
C. Sử dụng from geometry import calculate_area và hy vọng nó là hàm đúng.
D. Không sử dụng thư viện đó.
19. Phát biểu nào sau đây là ĐÚNG về cách Python tìm kiếm các mô-đun khi thực hiện lệnh import?
A. Python chỉ tìm kiếm trong thư mục hiện tại của tệp đang chạy.
B. Python tìm kiếm theo một trình tự các thư mục được định nghĩa trong biến môi trường PYTHONPATH và các thư mục cài đặt sẵn của Python.
C. Python tìm kiếm trên toàn bộ hệ thống tệp.
D. Python chỉ tìm kiếm trong thư mục mà bạn đã chỉ định rõ ràng trong mã.
20. Trong lập trình Python, khi làm việc với các thư viện, phát biểu nào sau đây là ĐÚNG về câu lệnh import library_name?
A. Câu lệnh này chỉ tải về thư viện mà không cho phép sử dụng các hàm bên trong nó.
B. Câu lệnh này cho phép truy cập trực tiếp các hàm của thư viện bằng cách gõ library_name.function_name().
C. Câu lệnh này sẽ gây lỗi nếu thư viện chưa được cài đặt trong môi trường Python.
D. Câu lệnh này chỉ có thể sử dụng một lần duy nhất trong một chương trình.
21. Khi xây dựng một thư viện để chia sẻ, việc cung cấp tài liệu hướng dẫn sử dụng (documentation) là cực kỳ quan trọng vì:
A. Nó làm cho thư viện trông chuyên nghiệp hơn.
B. Người dùng cần biết cách cài đặt và sử dụng các chức năng của thư viện một cách hiệu quả.
C. Nó giúp che giấu mã nguồn của thư viện.
D. Nó là yêu cầu bắt buộc để xuất bản thư viện lên các kho lưu trữ.
22. Khi một thư viện được thiết kế để tái sử dụng trong nhiều dự án khác nhau, điều quan trọng nhất cần xem xét là:
A. Độ phức tạp của mã nguồn.
B. Tính đóng gói, độc lập và dễ dàng tích hợp.
C. Kích thước của tệp thư viện.
D. Số lượng chức năng mà thư viện cung cấp.
23. Nếu bạn gặp lỗi ModuleNotFoundError: No module named some_module khi chạy chương trình Python, giải pháp khả thi nhất là gì?
A. Thay đổi tên biến trong mã nguồn.
B. Sử dụng pip install some_module để cài đặt thư viện.
C. Kiểm tra lại cú pháp của câu lệnh import.
D. Khởi động lại máy tính.
24. Khi bạn muốn sử dụng một hàm cụ thể từ một thư viện mà không muốn nhập toàn bộ thư viện, bạn sẽ sử dụng câu lệnh nào sau đây trong Python?
A. import library_name
B. from library_name import function_name
C. use library_name.function_name
D. require library_name.function_name
25. Phát biểu nào sau đây mô tả chính xác nhất mục đích của việc sử dụng các alias (bí danh) cho thư viện trong Python, ví dụ import numpy as np?
A. Để làm cho tên thư viện trở nên phức tạp và khó nhớ hơn.
B. Để tránh xung đột tên giữa các thư viện khác nhau có cùng tên hàm.
C. Để rút gọn tên thư viện, giúp mã nguồn ngắn gọn và dễ đọc hơn khi sử dụng.
D. Để chỉ định phiên bản cụ thể của thư viện được sử dụng.