Các câu hỏi phỏng vấn Python cơ bản và nâng cao
Kiến thức nền tảng
- Hàm lambda trong Python dùng để làm gì?
- Từ khóa
pass có ý nghĩa gì trong Python?
- Python hoạt động như thế nào khi là ngôn ngữ thông dịch?
- Unit test trong Python là gì? Thư viện
unittest hỗ trợ điều gì?
- Cách chuyển số thành chuỗi trong Python?
- Phân biệt module và package trong Python.
- Cách sinh số ngẫu nhiên trong Python?
- Toán tử
// thực hiện phép toán gì?
- Nêu 5 ưu điểm khi sử dụng Python.
- Cách sử dụng hàm
split() để phân tách chuỗi?
- JSON và dict khác nhau ở điểm nào?
- Làm thế nào để kết nối và thao tác với cơ sở dữ liệu trong Python?
Kiến thức nâng cao
- Làm sao truy cập module viết bằng C từ Python?
- Khác biệt giữa
range và xrange (trong Python 2)?
- Cú pháp
*args và **kwargs dùng để làm gì? Cho ví dụ.
- Decorator là gì? Viết một decorator và "giải mã" nó về dạng hàm gốc.
- Kết hợp
map(), reduce() và lambda như thế nào?
- Ý nghĩa của biến bắt đầu bằng dấu gạch dưới đơn (_var) và kép (__var)?
- So sánh đa luồng và đa tiến trình. Trường hợp I/O-bound nên chọn cách nào?
- Coroutine là gì? Lợi ích của nó ra sao?
- Pickling và unpickling trong Python là gì?
- Công cụ nào hỗ trợ debug hoặc phân tích tĩnh mã nguồn Python?
- Generator trong Python hoạt động như thế nào?
- Khác biệt giữa
__new__ và __init__?
- Cách sao chép đối tượng trong Python? Phân biệt
copy và deepcopy.
- Python hỗ trợ xử lý song song như thế nào?
- Mô tả ngắn gọn sự khác nhau giữa mô hình
select và epoll trong lập trình socket.
- Quy tắc phạm vi biến cục bộ và toàn cục trong Python?
- Làm sao chia sẻ biến toàn cục giữa các module?
- Cách tạo script Python có thể thực thi trên Unix?
- Cơ chế thu gom rác (garbage collection) trong Python hoạt động ra sao?
- Viết chương trình:
- Tải nội dung trang https://en.wikipedia.org/wiki/Machine_translation và lưu thành file
mt.html.
- Đếm tần suất xuất hiện của từng từ trong thẻ HTML, ghi vào file
mt_word.txt theo định dạng: mỗi dòng gồm từ + tab + số lần xuất hiện, sắp xếp giảm dần theo tần suất.
Cấu trúc dữ liệu
- Set và list, cái nào hiệu quả hơn trong thao tác tìm kiếm?
- Với 1 triệu bản ghi, nên dùng cấu trúc dữ liệu nào để truy vấn nhanh nhất?
- Triển khai thuật toán duyệt cây nhị phân.
- Dùng hai stack để xây dựng một queue.
- Xử lý xung đột hash như thế nào khi key bị trùng?
Thuật toán
- Triển khai thuật toán tìm kiếm nhị phân.
- Dùng hàm sinh số ngẫu nhiên từ 1-7 để tạo số ngẫu nhiên 0-1 với xác suất đều nhau (giới hạn độ sâu đệ quy).
- Đếm tần suất ký tự trong chuỗi "a b c c a b".
- Viết chương trình bán vé: 1 quầy bán 5 vé, dùng Python hoặc Java mô phỏng.
- Cho hai danh sách l1, l2. Tìm cặp phần tử từ l2 sao cho tổng với phần tử trong l1 bằng 10.
- Cho mảng số nguyên và một số target. Tìm hai số trong mảng có tổng bằng target với độ phức tạp O(n).
- Cho n số nguyên, tìm m số liên tiếp có tổng lớn nhất.
- Giải bài toán Tháp Hà Nội cho n đĩa.
- Tìm bội số chung nhỏ nhất của một danh sách số nguyên.
- Cho danh sách [1,2,3,4,5] và target=3. Tìm hai phần tử có tổng bằng target với giải pháp tối ưu (độ phức tạp thời gian là bao nhiêu?).
- Đếm số dương và số âm trong danh sách [1, 3, 5, 7, 0, -1, -9, -4, -5, 8].
- Từ chuỗi "axbyczdj", trích xuất thành "abcd".
- Từ chuỗi "hello_world_yoyo", tạo danh sách ["hello","world","yoyo"].
- Chuyển số 1 thành chuỗi "0001".
- Di chuyển phần tử đầu tiên của danh sách [1, 3, 5, 7] đến vị trí thứ ba → [3, 5, 1, 7].
- Hoán đổi giá trị hai biến a=9, b=8 sao cho a=8, b=9.
- In tất cả số "Armstrong" (số có tổng lập phương các chữ số bằng chính nó) trong khoảng 100–999.
- Tìm tất cả số hoàn hảo (số bằng tổng các ước số thật sự của nó) nhỏ hơn 1000.
- Viết thuật toán sắp xếp nổi bọt (bubble sort).
- Với danh sách [1, 3, 6, 9, 7, 3, 4, 6]: sắp xếp tăng dần, giảm dần, loại bỏ phần tử trùng lặp.
- Tính giai thừa của n.
- In dãy Fibonacci nhỏ hơn 100.
- Tính x mũ n (ví dụ: 3^4 = 81).
- Viết chương trình nhập email (username@companyname.com), kiểm tra định dạng, in ra username và companyname. Cho phép lặp lại đến khi nhập 'Q' để thoát.
- Liệt kê tất cả file con trong một thư mục, lọc theo đuôi mở rộng.
Phát triển Web
- Viết một API đơn giản với Flask.
- Flask là gì? Ưu điểm của nó?
- So sánh Flask, Django và Pyramid.
- Flask-WTF là gì? Đặc điểm nổi bật?
- Cách truy cập session trong Flask?
- Flask có phải là mô hình MVC không? Cho ví dụ minh họa.
- Kết nối cơ sở dữ liệu trong Flask như thế nào?
- Cách giảm thiểu gián đoạn Memcached trong phát triển Python?
- Có nên dùng Memcached trong dự án Python không? Vì sao?
- Vai trò của Nginx và uWSGI trong triển khai ứng dụng.
- Middleware trong Django dùng để làm gì?
- CSRF là gì?
- Cách sử dụng cache trong Django?
Hiểu mã nguồn
- Đoạn mã sau in ra gì? Có vấn đề gì?
def f(x, l=[]):
for i in range(x):
l.append(i*i)
print(l)
f(2)
f(3, [3,2,1])
f(3)
- Cho đoạn mã sau, giá trị cuối cùng của A0 đến A6 là gì?
A0 = dict(zip(('a','b','c','d','e'), (1,2,3,4,5)))
A1 = range(10)
A2 = [i for i in A1 if i in A0]
A3 = [A0[s] for s in A0]
A4 = [i for i in A1 if i in A3]
A5 = {i:i*i for i in A1}
A6 = [[i,i*i] for i in A1]
Thẻ:
python
interview
algorithm
data-structure
Flask
Đăng vào ngày 4 tháng 6 lúc 19:56