30 câu hỏi phỏng vấn Python – Data Structures, OOP, Async

Python là ngôn ngữ lập trình phổ biến nhất tại Việt Nam 2026 với 38% Senior Engineer dùng làm ngôn ngữ chính (theo khảo sát Stack Overflow Vietnam 2025). Nhu cầu tuyển Python Developer, Data Scientist, ML Engineer luôn cao – CareerLink (05/2026) ghi nhận 1.500+ tin tuyển dụng yêu cầu Python skill. Bộ câu hỏi ngôn ngữ lập trình Python hay gặp nhất trong phỏng vấn 2026 thường tập trung vào 5 nhóm: Cú pháp cơ bản, Data Structures, OOP, Concurrency, và Pythonic best practices. Bài viết tổng hợp 30 câu hỏi phổ biến với code examples.

Tổng quan nhanh:

– 5 nhóm câu hỏi phổ biến: Cú pháp & built-in (30%), Data Structures (25%), OOP (20%), Concurrency (15%), Pythonic (10%).

– Phỏng vấn Python tại VN 2026 thường có 1–2 live coding challenge trên LeetCode hoặc Hackerrank.

– Lương Python Developer 2026 (CRL Q2): Junior 14–22 triệu, Mid 25–45 triệu, Senior 50–90 triệu.

– Top framework được hỏi: Django, FastAPI, Flask, Pandas, NumPy, PyTorch, TensorFlow.

1. Nhóm cú pháp và built-in cơ bản

Đây là nhóm sàng lọc Junior – đảm bảo ứng viên thực sự code Python, không chỉ học lý thuyết.

Câu 1: “List vs Tuple khác nhau?”. Khung: List mutable (có thể thêm/xoá/sửa), tuple immutable. Tuple nhanh hơn ~20% và dùng làm dict key được. List dùng cho collection có thể thay đổi; tuple cho fixed data như coordinates, RGB.

Câu 2:is vs == khác gì?”. Khung: == so sánh giá trị (gọi __eq__). is so sánh identity (cùng memory address). VD: [1,2] == [1,2] True nhưng [1,2] is [1,2] False. Dùng is None không dùng == None.

Câu 3:*args**kwargs dùng khi nào?”. Khung: *args – nhận positional args dạng tuple. **kwargs – nhận keyword args dạng dict. Dùng khi function nhận số lượng args không cố định.

Câu 4: “List comprehension vs generator expression?”. Khung: List [x*2 for x in range(1000)] – tạo list ngay, lưu memory toàn bộ. Generator (x*2 for x in range(1000)) – lazy evaluation, lưu state. Generator phù hợp large data hoặc streaming.

Câu 5: “Decorator là gì?”. Khung: Function nhận function làm input, return function khác – syntax sugar cho higher-order function. Phổ biến: @property, @staticmethod, @functools.cache, @app.route (Flask).

2. Nhóm Data Structures

Câu hỏi Điểm trọng tâm
Dict implementation cơ bản? Hash table với open addressing. Average O(1) lookup. Từ Python 3.7+ giữ insertion order
Set vs Dict? Set là dict không value – chỉ key. Dùng cho membership test, deduplication. O(1) check
collections.deque dùng khi nào? Append/pop từ 2 đầu O(1). Phù hợp queue, sliding window, undo history. Tốt hơn list cho operations đầu
defaultdict vs dict.get()? defaultdict tự tạo default value khi key chưa tồn tại. dict.get() cần specify default mỗi lần
Counter trong collections dùng làm gì? Đếm tần suất phần tử. Counter("hello") → {h:1, e:1, l:2, o:1}. Có method most_common(n)

3. Nhóm OOP (Object-Oriented Programming)

Phần này quan trọng cho Mid+ và các vai trò Backend Developer.

Câu 11: “Inheritance vs Composition – khi nào dùng?”. Khung: Inheritance (is-a) – Dog kế thừa Animal. Composition (has-a) – Car có Engine. Composition flexible hơn, tránh inheritance hierarchy phức tạp.

Câu 12: “Method Resolution Order (MRO) trong multiple inheritance?”. Khung: Python dùng C3 linearization. Quy tắc: depth-first, left-to-right, không lặp. Check qua ClassName.__mro__.

Câu 13:__init__ vs __new__ khác gì?”. Khung: __new__ tạo instance (return new obj). __init__ initialize sau khi tạo. Override __new__ cho singleton, immutable types.

Câu 14: “Dataclass vs NamedTuple vs TypedDict?”. Khung: Dataclass (3.7+) – mutable, hỗ trợ defaults, methods. NamedTuple – immutable, faster. TypedDict – dict với type hints, static check.

Câu 15: “Property decorator dùng để làm gì?”. Khung: Tạo getter/setter cho attribute mà giữ syntax dot notation. Phổ biến cho validation, computed property. @property getter, @x.setter setter.

4. Nhóm Concurrency & Async

Câu hỏi phổ biến cho cấp Senior, đặc biệt vai trò Backend/Web Developer.

Câu 16: “GIL (Global Interpreter Lock) là gì?”. Khung: Lock cho phép chỉ 1 thread thực thi Python bytecode tại 1 thời điểm. Hậu quả: multi-threading không tăng performance cho CPU-bound tasks. Multi-processing hoặc async là alternative.

Câu 17: “Threading vs Multiprocessing vs Asyncio – khi nào dùng?”. Khung: Threading – I/O bound, ít overhead. Multiprocessing – CPU bound, true parallelism nhưng overhead cao. Asyncio – nhiều I/O concurrent (HTTP requests, DB queries).

Câu 18:async/await hoạt động thế nào?”. Khung: Coroutine (defined với async def) – có thể pause/resume. await – yield control khi gặp I/O. Event loop manage execution. Single-threaded nhưng concurrent qua cooperative multitasking.

Câu 19: “Race condition trong threading – cách phòng tránh?”. Khung: Dùng Lock, RLock, Semaphore, Queue thread-safe. Atomic operations như Counter. Tránh shared state khi có thể.

Câu 20: “ThreadPoolExecutor vs ProcessPoolExecutor?”. Khung: Thread – chia sẻ memory, GIL block CPU work. Process – isolated memory, IPC qua pickle, true parallel CPU. Process tốt cho image processing, ML training; Thread cho I/O.

Tham khảo các vị trí Python Developer đang tuyển tại chuyên mục CNTT – Phần mềm trên CareerLink để hiểu rõ scope yêu cầu của từng công ty.

“Tôi luôn hỏi ‘List comprehension vs generator’ và ‘is vs ==‘ trong vòng đầu Python. Hai câu này đơn giản nhưng phân biệt rõ ứng viên thực sự code Python với người chỉ biết syntax cơ bản. 90% ứng viên fresher trả lời sai 1 trong 2.” – Tech Lead Python tại 1 fintech VN.

5. Nhóm Pythonic best practices

Câu hỏi Điểm trọng tâm
Type hints có quan trọng không? Tăng readability, IDE support, static checking với mypy. Bắt buộc trong codebase > 10K LOC
Virtual env – venv vs poetry vs uv? venv – built-in basic. poetry – dependency resolver tốt + packaging. uv (2024) – Rust-based, nhanh hơn 10–100x
PEP 8 chính là gì? Style guide chính thức – snake_case cho variable/function, PascalCase cho class, 4 spaces indent, line ≤ 79 chars
Linter và formatter nên dùng? ruff (fastest, replace flake8/black 2024+), mypy cho type check, pylint cho deeper analysis
Test framework phổ biến? pytest (most popular), unittest (built-in), hypothesis (property-based), pytest-cov cho coverage

6. Câu hỏi coding live phổ biến

Đa số phỏng vấn có 1–2 bài coding live (30 phút–1 tiếng). 5 dạng dưới đây xuất hiện nhiều nhất.

Bài 1 – Two Sum: Cho list số và target, tìm 2 số có tổng = target. Solution: dict O(n).

Bài 2 – Reverse Linked List: Đảo ngược linked list. Solution: iterative với 3 pointer hoặc recursive.

Bài 3 – Valid Parentheses: Check string parentheses balanced. Solution: stack.

Bài 4 – Merge Two Sorted Lists: Merge 2 sorted linked list. Solution: dummy head + iterate.

Bài 5 – Word Frequency: Đếm tần suất từ trong text. Solution: Counter(text.lower().split()).

Lỗi phổ biến khi phỏng vấn Python:

– Dùng == None thay vì is None – không Pythonic.

– Quên Big-O complexity khi giải coding – cần explain ngay.

– Không dùng built-in (Counter, defaultdict) – tự code lại lâu và buggy.

– Mutable default argument: def func(arr=[]): – arr persist giữa các call. Dùng arr=None rồi check.

– Nhầm lẫn list copy: a = b chỉ assign reference. Dùng a = b[:] hoặc list(b) hoặc copy.deepcopy.

– Quên handle edge cases: empty list, single element, duplicates, very large input.

7. Top framework Python được hỏi nhiều nhất 2026

Framework Lĩnh vực Khi nào dùng
FastAPI Web API REST API hiện đại, async, auto-doc Swagger
Django Web full-stack Batteries-included, admin panel, ORM mạnh
Flask Web micro App nhỏ, prototype, microservice
Pandas + NumPy Data Analysis DataFrame, time series, statistical computing
PyTorch Deep Learning Research, model flexibility, dynamic graph
Scikit-learn Classical ML Tabular data, pipeline, model selection

Tham khảo thêm bài viết về lập trình viên là gì – công việc và lộ trình để hiểu thêm về lộ trình phát triển ngành CNTT tại VN.

Lời khuyên chuẩn bị phỏng vấn Python:

– Practice 50+ bài LeetCode (Easy–Medium) trước phỏng vấn lớn.

– Đọc kỹ “Fluent Python” (Luciano Ramalho) cho cấp Mid+ – cuốn must-read.

– Build 1–2 project portfolio thực tế (REST API + database + deploy Docker).

– Học type hints + mypy – tăng đáng kể chất lượng code và phỏng vấn.

– Cập nhật Python 3.12+ features (PEP 695 type alias, exception groups, faster CPython).

8. Câu hỏi thường gặp

1. Sinh viên trái ngành (Toán, Vật lý) có thể vào Python Developer không?

Có. Toán/Vật lý/Kinh tế có nền tảng tư duy logic tốt – dễ học Python. Path: hoàn thành 1 khoá Python online (Coursera Python for Everybody, Codecademy), build 2–3 portfolio project (web API, data analysis), apply Junior Python Developer hoặc Junior Data Analyst (lương 14–18 triệu khởi điểm).

2. Python Developer có lương cao hơn Java/Node.js Developer không?

Tương đương cấp Junior–Mid (14–45 triệu). Cao hơn 10–20% cấp Senior+ nhờ liên quan đến AI/ML/Data (Senior Python ~70–95 triệu vs Senior Java ~65–85 triệu). Python ML Engineer có thể đạt 100–150 triệu/tháng – cao nhất ngành dev tại VN. Tuy nhiên Java có nhiều cơ hội ở banking/fintech enterprise lương ổn định.

3. Nên học Python framework nào trước cho fresher?

FastAPI cho web/API development – modern, fast learning curve, đang trend tại VN. Pandas + Scikit-learn cho data path. Django nếu hướng full-stack. Tránh học quá nhiều framework cùng lúc – chọn 1 master rồi mở rộng. Sau 1 năm Junior FastAPI, có thể học PostgreSQL, Redis, Docker để full-stack hơn.

Chuẩn bị tốt cho câu hỏi ngôn ngữ lập trình Python hay gặp nhất đòi hỏi đầu tư cho 5 nhóm: cú pháp built-in, data structures, OOP, concurrency, và Pythonic best practices. Practice 50+ bài LeetCode, đọc “Fluent Python”, và build 2–3 portfolio project thực tế là 3 nền tảng cốt lõi. Một ứng viên solid Python với code clean theo PEP 8 và hiểu sâu async/threading sẽ tạo lợi thế trong vòng phỏng vấn cuối tại các công ty top như VNG, MoMo, FPT, Be Group.

Minh An

Bài viết mang tính chất tham khảo, không thay thế tư vấn nghề nghiệp chuyên sâu từ chuyên gia ngành CNTT/AI.

Về Tác Giả

CareerLink

Sao chép thành công