1. Trong lập trình hướng đối tượng Python, phương thức `__init__` có vai trò gì?
A. Phương thức hủy đối tượng.
B. Phương thức khởi tạo đối tượng.
C. Phương thức so sánh hai đối tượng.
D. Phương thức chuyển đổi kiểu dữ liệu của đối tượng.
2. Hàm `range(start, stop, step)` trong Python tạo ra cái gì?
A. Một list các số nguyên.
B. Một tuple các số nguyên.
C. Một iterator tạo ra dãy số nguyên.
D. Một set các số nguyên.
3. Trong Python, `monkey patching` là gì?
A. Một kỹ thuật để vá lỗi bảo mật trong runtime.
B. Thay đổi hoặc mở rộng hành vi của code runtime một cách động.
C. Kỹ thuật tối ưu hóa code để chạy nhanh hơn.
D. Phương pháp để kiểm thử đơn vị (unit testing) code Python.
4. Câu lệnh `try-except` trong Python dùng để xử lý loại lỗi nào?
A. Lỗi cú pháp (SyntaxError).
B. Lỗi logic (Logic Error).
C. Lỗi thời gian chạy (Runtime Error - Exceptions).
D. Lỗi biên dịch (Compilation Error).
5. Để comment một dòng trong Python, bạn sử dụng ký tự nào?
A. //
B. /* */
C. #
D. --
6. Trong Python, `*args` và `**kwargs` được sử dụng để làm gì trong định nghĩa hàm?
A. Chỉ định kiểu dữ liệu cho tham số.
B. Truyền số lượng tham số cố định vào hàm.
C. Truyền số lượng tham số biến đổi vào hàm.
D. Định nghĩa giá trị mặc định cho tham số.
7. Trong Python, biến toàn cục (global variable) là gì?
A. Biến chỉ được sử dụng trong một hàm cụ thể.
B. Biến được khai báo bên trong một class.
C. Biến được khai báo bên ngoài tất cả các hàm và có thể được truy cập từ bất kỳ đâu trong chương trình.
D. Biến chỉ được sử dụng trong vòng lặp.
8. Phương thức `pop()` khi được gọi trên một list sẽ thực hiện hành động gì?
A. Xóa tất cả các phần tử khỏi list.
B. Xóa phần tử đầu tiên của list.
C. Xóa phần tử cuối cùng của list và trả về nó.
D. Xóa phần tử ở vị trí được chỉ định và trả về nó.
9. Kiểu dữ liệu nào sau đây KHÔNG phải là kiểu dữ liệu cơ bản trong Python?
A. int
B. float
C. complex
D. array
10. Mục đích chính của việc sử dụng virtual environment (môi trường ảo) trong Python là gì?
A. Tăng tốc độ thực thi chương trình Python.
B. Đóng gói ứng dụng Python để phân phối.
C. Tạo môi trường cô lập cho các dự án Python khác nhau, tránh xung đột thư viện.
D. Biên dịch code Python sang mã máy.
11. Hàm `len()` trong Python trả về giá trị gì?
A. Giá trị lớn nhất trong một iterable.
B. Giá trị nhỏ nhất trong một iterable.
C. Độ dài (số phần tử) của một iterable.
D. Tổng các phần tử trong một iterable.
12. Khái niệm `slice` trong Python dùng để làm gì?
A. Xóa một phần tử khỏi list.
B. Sao chép một list.
C. Truy cập một phần của chuỗi, list hoặc tuple.
D. Sắp xếp các phần tử trong list.
13. Decorator trong Python được sử dụng để làm gì?
A. Đóng gói code để tái sử dụng.
B. Thêm chức năng mới vào một hàm hoặc class một cách linh hoạt.
C. Tối ưu hóa hiệu suất của code.
D. Kiểm soát quyền truy cập vào thuộc tính và phương thức của class.
14. Thư viện `NumPy` trong Python chủ yếu được sử dụng cho mục đích gì?
A. Lập trình giao diện người dùng đồ họa (GUI).
B. Tính toán khoa học và xử lý mảng đa chiều.
C. Phát triển web.
D. Quản lý cơ sở dữ liệu.
15. Trong Python, bạn có thể ép kiểu dữ liệu từ string sang integer bằng cách nào?
A. str()
B. float()
C. int()
D. bool()
16. Trong Python, toán tử `%` dùng để làm gì?
A. Phép chia lấy phần nguyên.
B. Phép chia lấy phần dư.
C. Phép lũy thừa.
D. Phép gán giá trị.
17. Phương thức `join()` trong Python được sử dụng để làm gì?
A. Chia một chuỗi thành list.
B. Nối các phần tử của một iterable thành một chuỗi, sử dụng một chuỗi khác làm dấu phân cách.
C. Tìm kiếm một chuỗi con trong chuỗi.
D. Thay thế một chuỗi con bằng chuỗi khác.
18. Đoạn code Python sau sẽ in ra kết quả gì?
```python
x = 5
y = `hello`
print(x + y)
```
A. 5hello
B. hello5
C. 10
D. Báo lỗi TypeError
19. Điều gì xảy ra khi bạn gọi hàm `super()` trong một class con trong Python?
A. Nó gọi phương thức khởi tạo (`__init__`) của class con.
B. Nó gọi phương thức của class cha.
C. Nó tạo ra một instance mới của class cha.
D. Nó xóa instance hiện tại của class con.
20. Cấu trúc điều khiển nào sau đây được sử dụng để thực hiện một khối code nếu một điều kiện là đúng, và một khối code khác nếu điều kiện là sai?
A. Vòng lặp `for`
B. Vòng lặp `while`
C. Câu lệnh `if-else`
D. Câu lệnh `try-except`
21. Phương thức nào sau đây được sử dụng để thêm một phần tử vào cuối list trong Python?
A. insert()
B. append()
C. add()
D. extend()
22. Điều gì sẽ xảy ra khi bạn cố gắng truy cập một key không tồn tại trong dictionary Python?
A. Trả về giá trị mặc định là None.
B. Trả về một dictionary rỗng.
C. Báo lỗi KeyError.
D. Tự động thêm key đó vào dictionary với giá trị None.
23. Hàm nào sau đây trong Python được sử dụng để đọc dữ liệu từ một file?
A. write()
B. open()
C. read()
D. load()
24. Câu lệnh `assert` trong Python được dùng để làm gì?
A. Khai báo biến.
B. Kiểm tra điều kiện trong quá trình debug và phát hiện lỗi.
C. Bắt lỗi và xử lý ngoại lệ.
D. Tối ưu hóa hiệu suất code.
25. Generator trong Python là gì và nó khác gì so với list comprehension?
A. Generator tạo ra list, list comprehension tạo ra iterator.
B. Generator tạo ra iterator, list comprehension tạo ra list.
C. Generator tính toán và lưu trữ tất cả giá trị cùng một lúc, list comprehension tính toán giá trị khi cần.
D. Generator và list comprehension là hoàn toàn giống nhau về chức năng.
26. Trong Python, vòng lặp `for` thường được sử dụng để làm gì?
A. Thực hiện một khối code một lần duy nhất.
B. Lặp lại một khối code với số lần cố định.
C. Lặp lại một khối code cho đến khi một điều kiện sai.
D. Lặp lại một khối code cho mỗi phần tử trong một iterable.
27. Trong Python, bạn có thể so sánh hai giá trị để kiểm tra xem chúng có cùng kiểu dữ liệu không bằng cách nào?
A. ==
B. isinstance()
C. type() ==
D. id() ==
28. Trong Python, kiểu dữ liệu nào sau đây là kiểu bất biến (immutable)?
A. List
B. Dictionary
C. Tuple
D. Set
29. Module `math` trong Python cung cấp những chức năng chính nào?
A. Xử lý chuỗi và văn bản.
B. Thao tác với hệ thống file.
C. Các hàm toán học và hằng số.
D. Xử lý dữ liệu dạng bảng.
30. Phương thức `split()` trong Python được sử dụng để làm gì với chuỗi?
A. Nối nhiều chuỗi lại thành một.
B. Chia một chuỗi thành một list các chuỗi con dựa trên một dấu phân cách.
C. Loại bỏ khoảng trắng thừa ở đầu và cuối chuỗi.
D. Chuyển đổi chuỗi thành chữ hoa.