1. Trong Python, `*args` và `**kwargs` được sử dụng để làm gì trong định nghĩa hàm?
A. Khai báo kiểu dữ liệu cho tham số hàm
B. Truyền số lượng tham số cố định vào hàm
C. Truyền số lượng tham số tùy ý (biến đổi) vào hàm: `*args` cho positional arguments, `**kwargs` cho keyword arguments
D. Định nghĩa giá trị mặc định cho tham số hàm
2. Giả sử bạn có một list lồng nhau `matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]`. Làm thế nào để truy cập vào số 5?
A. matrix[5]
B. matrix[1][1]
C. matrix[2][2]
D. matrix[5][5]
3. Decorator trong Python là gì?
A. Một kiểu dữ liệu đặc biệt để trang trí giao diện người dùng
B. Một cách để sửa đổi hoặc mở rộng chức năng của hàm hoặc class mà không cần thay đổi trực tiếp code của chúng
C. Một loại comment đặc biệt để ghi chú về hàm
D. Một module để quản lý các package trong Python
4. Sự khác biệt chính giữa `==` và `is` trong Python là gì?
A. `==` so sánh giá trị, `is` so sánh kiểu dữ liệu
B. `==` so sánh tham chiếu đối tượng, `is` so sánh giá trị
C. `==` so sánh giá trị, `is` so sánh identity (tham chiếu đối tượng trong bộ nhớ)
D. `==` và `is` hoàn toàn giống nhau, có thể sử dụng thay thế
5. Điều gì xảy ra khi bạn cố gắng truy cập một key KHÔNG tồn tại trong dictionary?
A. Trả về giá trị mặc định là None
B. Trả về một dictionary rỗng
C. Gây ra lỗi KeyError
D. Tự động tạo key mới với giá trị None
6. Trong Python, comment (chú thích) một dòng được bắt đầu bằng ký tự nào?
7. Khái niệm `list comprehension` trong Python dùng để làm gì?
A. Tạo ra một list các số ngẫu nhiên
B. Tạo một list mới bằng cách áp dụng một biểu thức cho mỗi phần tử của một iterable
C. Sắp xếp các phần tử trong list theo thứ tự
D. Tìm kiếm một phần tử cụ thể trong list
8. Trong Python, vòng lặp `for` thường được sử dụng để lặp qua:
A. Chỉ số số nguyên
B. Các hàm
C. Các iterable objects (ví dụ: list, tuple, string)
D. Các biến boolean
9. Từ khóa nào được sử dụng để định nghĩa một hàm trong Python?
A. function
B. def
C. func
D. define
10. Đoạn code Python sau in ra kết quả gì:
`a = [1, 2, 3]
b = a
b[0] = 5
print(a)`
A. [1, 2, 3]
B. [5, 2, 3]
C. [1, 5, 3]
D. [5, 5, 3]
11. Đoạn code Python sau in ra gì:
`def func(x):
return x * 2
print(func(`3`))`
12. Mục đích của `if __name__ == `__main__`:` trong Python script là gì?
A. Bắt đầu định nghĩa một class
B. Kiểm tra xem script có đang được chạy trực tiếp hay được import như một module
C. Khai báo biến main trong chương trình
D. Đánh dấu đây là hàm main của chương trình
13. Cho đoạn code:
`x = 5
def change_x():
x = 10
change_x()
print(x)`
Giá trị in ra của `x` là:
A. 10
B. 5
C. Error
D. None
14. Phương thức `extend()` khác với `append()` của list như thế nào?
A. `extend()` thêm một phần tử vào list, còn `append()` thêm nhiều phần tử
B. `append()` thêm một phần tử vào list, còn `extend()` thêm các phần tử của một iterable vào list
C. `extend()` chỉ dùng cho string, còn `append()` dùng cho mọi kiểu dữ liệu
D. `append()` chỉ thêm vào đầu list, còn `extend()` thêm vào cuối list
15. Module `os` trong Python thường được sử dụng để làm gì?
A. Thực hiện các phép toán số học
B. Tương tác với hệ điều hành (ví dụ: thao tác file, thư mục)
C. Xử lý dữ liệu dạng bảng
D. Tạo giao diện đồ họa người dùng
16. Kết quả của đoạn code Python sau là gì:
`print(3 > 2 > 1)`
A. True
B. False
C. Error
D. None
17. Phương thức `pop()` khi được gọi trên một list sẽ làm gì?
A. Xóa tất cả phần tử khỏi list
B. Xóa và trả về phần tử CUỐI CÙNG của list
C. Xóa và trả về phần tử ĐẦU TIÊN của list
D. Đảo ngược thứ tự các phần tử trong list
18. Giá trị trả về của hàm `len()` khi truyền vào một dictionary là gì?
A. Tổng số ký tự trong tất cả các key và value
B. Số lượng cặp key-value trong dictionary
C. Số lượng key trong dictionary
D. Số lượng value trong dictionary
19. Trong Python, exception handling (xử lý ngoại lệ) được thực hiện bằng các khối lệnh nào?
A. if-else
B. for-loop
C. try-except
D. while-loop
20. Toán tử `%` trong Python dùng để làm gì?
A. Phép chia phần trăm
B. Phép chia lấy phần nguyên
C. Phép chia lấy phần dư
D. Phép lũy thừa
21. Hàm `range(start, stop, step)` tạo ra dãy số như thế nào?
A. Từ `start` đến `stop` (bao gồm cả `stop`), bước nhảy `step`
B. Từ `start` đến `stop` (KHÔNG bao gồm `stop`), bước nhảy `step`
C. Từ `start` đến `stop` (bao gồm cả `stop`), bước nhảy mặc định là 1
D. Từ `start` đến `stop` (KHÔNG bao gồm `stop`), bước nhảy mặc định là 1 nếu `step` không được chỉ định
22. Phương thức `super()` được sử dụng trong lập trình hướng đối tượng Python để làm gì?
A. Gọi một hàm static của class
B. Truy cập các thuộc tính private của class
C. Gọi phương thức của class cha (superclass) từ class con (subclass)
D. Tạo một instance mới của class
23. Hàm nào sau đây KHÔNG phải là hàm built-in (tích hợp sẵn) trong Python?
A. len()
B. print()
C. sqrt()
D. int()
24. Kiểu dữ liệu nào sau đây thường được sử dụng để lưu trữ các cặp key-value trong Python?
A. list
B. tuple
C. dictionary
D. set
25. Phương thức `strip()` được sử dụng để làm gì với string trong Python?
A. Chuyển đổi string thành chữ hoa
B. Chuyển đổi string thành chữ thường
C. Xóa khoảng trắng ở đầu và cuối string
D. Đảo ngược string
26. Đâu là kiểu dữ liệu KHÔNG THỂ THAY ĐỔI (immutable) trong Python?
A. list
B. tuple
C. dictionary
D. set
27. 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. extend()
D. add()
28. Generator trong Python mang lại lợi ích chính nào về mặt hiệu suất so với list thông thường khi làm việc với lượng dữ liệu lớn?
A. Generator thực thi nhanh hơn list trong mọi trường hợp
B. Generator lưu trữ tất cả các giá trị trong bộ nhớ cùng một lúc, giúp truy cập nhanh hơn
C. Generator tạo ra các giá trị một cách tuần tự (lazy evaluation), tiết kiệm bộ nhớ vì không lưu trữ toàn bộ dữ liệu cùng lúc
D. Generator có thể dễ dàng chuyển đổi thành list khi cần thiết
29. Phương thức `split()` của string dùng để làm gì?
A. Nối hai string lại với nhau
B. Chia một string thành một list các substring dựa trên một dấu phân cách
C. Tìm kiếm một substring trong string
D. Thay thế một substring bằng một substring khác
30. Khi nào nên sử dụng list comprehension thay vì vòng lặp `for` truyền thống để tạo list trong Python?
A. Khi cần tạo list chứa các số ngẫu nhiên
B. Khi cần tạo list dựa trên một iterable và biểu thức đơn giản, để code ngắn gọn và dễ đọc hơn
C. Khi cần thực hiện các thao tác phức tạp trên mỗi phần tử
D. Khi cần lặp qua dictionary