10 câu hỏi có thể gặp khi phỏng vấn
Chọn theo kỹ năng và cấp của tin (Tester / QA, Python, Project Manager & Product Owner). Gợi ý trả lời do Drama Công Ty biên soạn để bạn ôn nhanh, không phải đề của công ty.
01Nếu được giao xây dựng quy trình QA cho một team chưa có tester, bạn bắt đầu từ đâu?Tester / QA · Senior
Gợi ý trả lời
Ôn thêm câu hỏi Tester / QA →Bắt đầu từ hiểu hiện trạng và rủi ro, rồi cải thiện từng bước thay vì áp nguyên một quy trình nặng.
- Tuần đầu: tìm hiểu sản phẩm, luồng nghiệp vụ chính, lịch sử bug sau release, cách team đang làm việc.
- Nền tảng: thống nhất quy trình bug (template, severity, vòng đời ticket), Definition of Done có bước test, môi trường test tách khỏi production.
- Shift-left: tham gia refinement để làm rõ acceptance criteria trước khi code.
- Phủ test: bộ smoke cho luồng quan trọng, sau đó automation dần (ưu tiên API), đưa vào CI.
- Đo lường: số bug lọt ra production, thời gian xử lý bug, độ phủ regression, để chứng minh hiệu quả.
Người phỏng vấn muốn nghe: bạn biết ưu tiên, làm việc với dev chứ không đứng ngoài "bắt lỗi", và đo được kết quả.
02Requirement còn mơ hồ hoặc chưa có tài liệu, bạn test như thế nào?Tester / QA
Gợi ý trả lời
Ôn thêm câu hỏi Tester / QA →Đừng đợi tài liệu hoàn hảo; chủ động làm rõ và ghi lại giả định.
- Đặt câu hỏi cụ thể cho BA/PO ngay từ lúc refinement, ưu tiên những chỗ ảnh hưởng tới acceptance criteria.
- Tham khảo nguồn khác: bản thiết kế UI, hệ thống cũ, sản phẩm tương tự, hỏi dev về logic đã code.
- Viết test scenario ở mức cao trước, ghi rõ giả định, gửi lại cho BA/PO xác nhận.
- Kết hợp exploratory testing theo session có mục tiêu và ghi chú.
- Chỗ chưa rõ thì log thành câu hỏi/ticket thay vì tự quyết là bug hay không.
Người phỏng vấn muốn nghe: bạn chủ động và minh bạch. Ví dụ: "Em gửi danh sách 8 câu hỏi kèm giả định, PO trả lời 6, 2 câu còn lại em đánh dấu là rủi ro trong test report."
03Dev nói bug bạn log 'không phải bug' hoặc 'không tái hiện được'. Bạn xử lý ra sao?Tester / QA
Gợi ý trả lời
Ôn thêm câu hỏi Tester / QA →Giữ bình tĩnh, dựa vào bằng chứng và requirement, không tranh cãi cảm tính.
- Kiểm tra lại: đúng build, đúng môi trường, đúng dữ liệu chưa? Có thể do cache hoặc tài khoản test khác nhau.
- Bổ sung video, log, request/response; nếu được thì ngồi tái hiện cùng dev.
- Nếu tranh luận là "đúng thiết kế hay không", dẫn chiếu acceptance criteria. Requirement không nói rõ thì kéo BA/PO vào quyết định.
- Bug thỉnh thoảng mới xảy ra: ghi tần suất, điều kiện nghi ngờ, giữ ticket mở để theo dõi.
Hay sai: đóng ticket cho xong chuyện, hoặc biến nó thành chuyện cá nhân. Câu trả lời tốt cho thấy bạn coi dev là đồng đội cùng bảo vệ chất lượng.
04Decorator hoạt động thế nào? Hãy viết một decorator đo thời gian chạy của hàm.Python
Gợi ý trả lời
Ôn thêm câu hỏi Python →Decorator là hàm nhận một hàm và trả về hàm mới bọc quanh nó.
@timerchỉ là cú pháp ngắn củafunc = timer(func).import functools, time def timer(func): @functools.wraps(func) def wrapper(*args, **kwargs): start = time.perf_counter() try: return func(*args, **kwargs) finally: print(func.__name__, time.perf_counter() - start) return wrapperfunctools.wrapsgiữ lại__name__, docstring của hàm gốc, quan trọng cho log và debug.- Decorator có tham số (ví dụ
@retry(times=3)) cần thêm một lớp hàm bên ngoài. - Ví dụ thực tế:
@app.getcủa FastAPI,@login_requiredcủa Django,@functools.lru_cache.
Hay sai: decorator viết kiểu đồng bộ bọc hàm
async def. Kết quả là đo thời gian tạo coroutine chứ không phải thời gian chạy.05GIL là gì? Vậy khi nào dùng threading, multiprocessing hay asyncio?Python
Gợi ý trả lời
Ôn thêm câu hỏi Python →GIL (Global Interpreter Lock) trong CPython chỉ cho một thread chạy bytecode Python tại một thời điểm. Vì vậy threading không tăng tốc tác vụ nặng CPU, nhưng vẫn hữu ích cho I/O vì GIL được nhả ra khi chờ mạng, đĩa.
- I/O, số lượng vừa phải, thư viện blocking:
threadinghoặcThreadPoolExecutor. - I/O rất nhiều kết nối đồng thời:
asynciovới thư viện async (httpx,asyncpg). - Nặng CPU:
multiprocessinghoặcProcessPoolExecutor, hoặc dùng thư viện viết bằng C như NumPy (nhả GIL khi tính toán).
Từ Python 3.13 có bản build free-threaded (không GIL) tuỳ chọn, nhưng chưa phải mặc định và còn phụ thuộc thư viện hỗ trợ.
Người phỏng vấn muốn nghe: bạn phân biệt được bài toán I/O-bound và CPU-bound trước khi chọn công cụ.
- I/O, số lượng vừa phải, thư viện blocking:
06Khách hàng liên tục thêm yêu cầu nhỏ (scope creep). Bạn kiểm soát thế nào?Project Manager & Product Owner
Gợi ý trả lời
Ôn thêm câu hỏi Project Manager & Product Owner →Mỗi yêu cầu "nhỏ" cộng lại thành trễ hạn. Cần quy trình tiếp nhận thay đổi rõ ràng từ đầu dự án.
- Chốt phạm vi bằng tài liệu hoặc backlog đã thống nhất, kèm định nghĩa hoàn thành.
- Mọi yêu cầu mới đi qua một kênh: ghi nhận, đánh giá effort và ảnh hưởng tới mốc bàn giao.
- Đưa lựa chọn cho khách: đổi lấy hạng mục khác, dời mốc, tính thêm chi phí, hoặc để giai đoạn sau.
- Dự án fixed-price: dùng change request có ký duyệt. Dự án time & material: minh bạch ảnh hưởng tới ngân sách.
- Dặn team không nhận yêu cầu trực tiếp từ khách mà không qua PM/PO.
Người phỏng vấn muốn nghe: bạn vẫn giữ được quan hệ tốt với khách. Nói "có, và đây là cái giá" thay vì chỉ nói "không".
07Bạn test một REST API như thế nào? Thường kiểm tra những gì?Tester / QA
Gợi ý trả lời
Ôn thêm câu hỏi Tester / QA →Test API là kiểm tra hợp đồng giữa client và server, không cần UI.
- Status code đúng từng trường hợp: 200/201, 400 khi dữ liệu sai, 401/403 khi thiếu quyền, 404, 409, 500.
- Response body: đúng schema, kiểu dữ liệu, trường bắt buộc, giá trị khớp DB.
- Validation: thiếu trường, sai kiểu, giá trị biên, chuỗi rất dài, ký tự đặc biệt.
- Phân quyền: user A có đọc/sửa được dữ liệu của user B không.
- Idempotency & trạng thái: gọi lại POST/PUT nhiều lần, thứ tự gọi API sai.
- Hiệu năng cơ bản: thời gian phản hồi, phân trang.
Công cụ hay dùng: Postman (collection, environment, script kiểm tra), sau đó đưa vào CI bằng Newman hoặc framework code như REST Assured, Playwright API.
Người phỏng vấn muốn nghe: bạn có test case phân quyền và lỗi, không chỉ gọi thử thấy 200 là xong.
08Khi nào nên automation, khi nào nên giữ manual?Tester / QA
Gợi ý trả lời
Ôn thêm câu hỏi Tester / QA →Automation đáng tiền khi chạy lặp lại nhiều và ổn định; manual hợp với thứ thay đổi liên tục hoặc cần cảm nhận người dùng.
Nên automation:
- Bộ regression và smoke chạy mỗi build/release.
- Test API, tính toán nghiệp vụ nhiều bộ dữ liệu (data-driven).
- Luồng chính ít thay đổi giao diện.
Nên giữ manual:
- Tính năng mới, UI còn thay đổi theo sprint.
- Exploratory, usability, kiểm tra trực quan.
- Case chỉ chạy một hai lần, hoặc chi phí dựng môi trường quá lớn.
Nên nhắc chi phí bảo trì: script hỏng vì locator thay đổi cũng tốn thời gian. Ưu tiên tầng API/unit trước UI theo mô hình test pyramid.
Hay sai: nói "automation hết cho nhanh". Người phỏng vấn muốn thấy bạn biết tính ROI.
09Dự án sắp release nhưng không đủ thời gian chạy hết regression. Bạn làm gì?Tester / QA · Senior
Gợi ý trả lời
Ôn thêm câu hỏi Tester / QA →Chuyển sang test theo rủi ro (risk-based testing) và minh bạch với team về phần chưa test.
- Xác định thay đổi trong bản release và vùng code bị ảnh hưởng (hỏi dev, xem danh sách commit/ticket).
- Ưu tiên: luồng tạo ra tiền hoặc dữ liệu quan trọng (thanh toán, đăng nhập, đặt hàng), chỗ hay có bug trong quá khứ, tính năng mới.
- Chạy bộ automation sẵn có, người tập trung vào phần automation chưa phủ.
- Báo cáo rõ: đã test gì, chưa test gì, rủi ro còn lại, đề xuất (release có điều kiện, feature flag, theo dõi sau release).
- Quyết định release là của PO/PM dựa trên thông tin bạn đưa.
Người phỏng vấn muốn nghe: bạn không âm thầm bỏ qua test, cũng không cố chặn release; bạn cung cấp thông tin để team quyết định. Về lâu dài, đề xuất tăng automation cho regression.
10Bạn làm việc thế nào khi áp lực cao hoặc deadline gấp?Câu hỏi hành vi & văn hoá
Gợi ý trả lời
Ôn thêm câu hỏi Câu hỏi hành vi & văn hoá →Cho thấy bạn có cách làm cụ thể, không chỉ nói "em chịu được áp lực".
- Chia nhỏ việc, ưu tiên phần quan trọng nhất cho mục tiêu.
- Báo sớm cho lead/PM nếu thấy không kịp, đề xuất cắt phạm vi hoặc xin hỗ trợ.
- Giữ chất lượng ở phần cốt lõi; ghi lại nợ kỹ thuật để xử lý sau.
- Giữ bình tĩnh, giao tiếp ngắn gọn, rõ ràng với team.
Câu mẫu theo STAR: "Trước buổi demo cho khách, team phát hiện lỗi tích hợp chỉ còn hai ngày. Em liệt kê các phần bị ảnh hưởng, cùng PM chọn luồng nào bắt buộc phải chạy cho demo, phần còn lại hẹn bàn giao tuần sau. Demo diễn ra suôn sẻ và khách đồng ý với lịch mới."
Hay sai: khoe thức trắng nhiều đêm. Người phỏng vấn muốn thấy bạn quản lý được áp lực, không chỉ chịu đựng.
Bạn đã phỏng vấn ở Pyramid Technical Vietnam?
Kể lại các vòng và câu hỏi đã gặp (ẩn danh) để người sau ôn đúng trọng tâm.
Chia sẻ kinh nghiệm phỏng vấn