1. Trong Python, phương thức `__str__` được sử dụng để làm gì?
A. So sánh hai đối tượng.
B. Tính toán độ dài của một đối tượng.
C. Trả về một biểu diễn chuỗi dễ đọc của một đối tượng.
D. Tạo một bản sao của một đối tượng.
2. Phương thức `__init__` trong một lớp Python được gọi khi nào?
A. Khi lớp được định nghĩa.
B. Khi một đối tượng của lớp được tạo.
C. Khi một phương thức của lớp được gọi.
D. Khi lớp bị xóa khỏi bộ nhớ.
3. Trong Python, mục đích của hàm `enumerate()` là gì?
A. Để sắp xếp một list.
B. Để đếm số lượng phần tử trong một list.
C. Để lặp qua một iterable và lấy cả index và giá trị của mỗi phần tử.
D. Để tìm giá trị lớn nhất trong một list.
4. Trong Python, exception `TypeError` xảy ra khi nào?
A. Khi một biến không được định nghĩa.
B. Khi một phép toán hoặc hàm được áp dụng cho một kiểu dữ liệu không phù hợp.
C. Khi cố gắng truy cập một index nằm ngoài phạm vi của list.
D. Khi chia một số cho 0.
5. Hàm `map()` trong Python làm gì?
A. Lọc các phần tử trong một iterable dựa trên một điều kiện.
B. Áp dụng một hàm cho mỗi phần tử trong một iterable và trả về một iterator.
C. Kết hợp hai hoặc nhiều iterable thành một.
D. Tìm giá trị lớn nhất trong một iterable.
6. Trong Python, làm thế nào để mở một file để đọc?
A. `file = open(`filename.txt`, `w`)`
B. `file = open(`filename.txt`, `r`)`
C. `file = open(`filename.txt`, `a`)`
D. `file = open(`filename.txt`, `x`)`
7. Hàm `super()` trong Python được sử dụng để làm gì?
A. Gọi một hàm từ một module khác.
B. Truy cập các biến toàn cục.
C. Gọi một phương thức từ lớp cha.
D. Tạo một instance mới của một lớp.
8. Trong Python, phương thức `split()` được sử dụng để làm gì?
A. Để nối hai chuỗi.
B. Để chia một chuỗi thành một list các chuỗi con.
C. Để tìm kiếm một chuỗi con trong một chuỗi.
D. Để thay thế một chuỗi con bằng một chuỗi khác.
9. Trong Python, `staticmethod` khác gì với `classmethod`?
A. `staticmethod` nhận instance của class như một argument ngầm, `classmethod` thì không.
B. `classmethod` nhận class như một argument ngầm, `staticmethod` thì không.
C. Không có sự khác biệt, chúng hoàn toàn giống nhau.
D. `staticmethod` có thể truy cập các thuộc tính của class, `classmethod` thì không.
10. Điểm khác biệt chính giữa `==` và `is` trong Python là gì?
A. `==` so sánh giá trị, `is` so sánh identity (vị trí trong bộ nhớ).
B. `==` so sánh kiểu dữ liệu, `is` so sánh giá trị.
C. `==` là toán tử gán, `is` là toán tử so sánh.
D. Không có sự khác biệt, chúng hoàn toàn giống nhau.
11. Trong Python, `list comprehension` là gì?
A. Một cách để tạo ra các list một cách ngắn gọn.
B. Một cách để sắp xếp các phần tử trong list.
C. Một cách để duyệt qua các phần tử trong list.
D. Một cách để xóa các phần tử trùng lặp trong list.
12. Trong Python, mục đích của hàm `functools.lru_cache` là gì?
A. Để tạo các hàm đệ quy.
B. Để cache kết quả của các hàm tốn thời gian, tăng hiệu suất.
C. Để tạo các hàm lambda.
D. Để quản lý bộ nhớ.
13. Trong Python, kiểu dữ liệu nào sau đây là *immutable*?
A. list
B. dict
C. set
D. tuple
14. Cách khai báo một decorator trong Python là gì?
A. Sử dụng từ khóa `decorator`.
B. Sử dụng ký tự `@` trước định nghĩa hàm.
C. Sử dụng hàm `decorate()`.
D. Decorator không cần khai báo đặc biệt.
15. Trong Python, `isinstance()` được sử dụng để làm gì?
A. Để tạo một instance của một class.
B. Để kiểm tra xem một đối tượng có phải là một instance của một class hay không.
C. Để xóa một instance của một class.
D. Để thay đổi kiểu dữ liệu của một đối tượng.
16. Trong Python, hàm `zip()` làm gì?
A. Nén một file thành định dạng .zip.
B. Kết hợp các iterable thành một iterator của các tuple.
C. Giải nén một file .zip.
D. Tìm kiếm một file .zip.
17. Trong Python, làm thế nào để tạo một bản sao sâu (deep copy) của một đối tượng?
A. Sử dụng toán tử `copy`.
B. Sử dụng phương thức `copy()` của đối tượng.
C. Sử dụng hàm `copy.deepcopy()`.
D. Gán đối tượng cho một biến mới.
18. Trong Python, mục đích của câu lệnh `try...except...finally` là gì?
A. Để định nghĩa các hàm.
B. Để xử lý exception và đảm bảo một đoạn code luôn được thực thi.
C. Để tạo các vòng lặp.
D. Để khai báo các biến.
19. Trong Python, thư viện `requests` thường được dùng để làm gì?
A. Xử lý ảnh.
B. Tạo giao diện người dùng đồ họa.
C. Gửi các HTTP request.
D. Làm việc với cơ sở dữ liệu.
20. Đoạn code Python sau sẽ in ra gì: `print(10 > 5 > 3)`?
A. True
B. False
C. Error
D. 10
21. Trong Python, làm thế nào để import một module có tên là `my_module`?
A. `include my_module`
B. `import my_module`
C. `from my_module import *`
D. Cả B và C đều đúng.
22. Trong Python, garbage collection (thu gom rác) là gì?
A. Một kỹ thuật để tối ưu hóa hiệu suất của code.
B. Một quá trình tự động giải phóng bộ nhớ không còn được sử dụng.
C. Một cách để xử lý các exception.
D. Một công cụ để tìm và sửa lỗi trong code.
23. Trong Python, `__name__ == `__main__`` được sử dụng để làm gì?
A. Khai báo hàm main.
B. Kiểm tra xem một module có đang được chạy trực tiếp hay được import.
C. Định nghĩa tên của một module.
D. Tạo một class main.
24. Trong Python, mục đích của câu lệnh `with` là gì?
A. Để tạo các vòng lặp.
B. Để quản lý tài nguyên (ví dụ: file) một cách an toàn và tự động.
C. Để định nghĩa các hàm.
D. Để khai báo các biến.
25. Trong Python, mục đích của thư viện `asyncio` là gì?
A. Để tạo giao diện người dùng đồ họa.
B. Để thực hiện lập trình bất đồng bộ.
C. Để làm việc với cơ sở dữ liệu.
D. Để xử lý ảnh.
26. Trong Python, một generator là gì?
A. Một hàm trả về một list.
B. Một hàm tạo ra một iterator sử dụng từ khóa `yield`.
C. Một class tạo ra các đối tượng.
D. Một module chứa các hàm toán học.
27. Module `collections` trong Python cung cấp những gì?
A. Các hàm toán học phức tạp.
B. Các kiểu dữ liệu container nâng cao.
C. Các công cụ làm việc với regular expression.
D. Các hàm để làm việc với hệ điều hành.
28. Trong Python, `*args` và `**kwargs` được sử dụng để làm gì?
A. Chỉ định kiểu dữ liệu của các tham số.
B. Truyền một số lượng biến đối số không xác định vào một hàm.
C. Khai báo các biến toàn cục.
D. Tạo các hàm lambda.
29. Trong Python, phương thức `encode()` được sử dụng để làm gì?
A. Để mã hóa một chuỗi thành một định dạng khác (ví dụ: UTF-8).
B. Để giải mã một chuỗi.
C. Để so sánh hai chuỗi.
D. Để tìm kiếm một chuỗi con trong một chuỗi.
30. Trong Python, làm thế nào để ghi dữ liệu vào một file ở chế độ `append`?
A. `file = open(`filename.txt`, `w`); file.write(`data`)`
B. `file = open(`filename.txt`, `r`); file.write(`data`)`
C. `file = open(`filename.txt`, `a`); file.write(`data`)`
D. `file = open(`filename.txt`, `x`); file.write(`data`)`