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). 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.
01Khi 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.
02QA và QC khác nhau thế nào? Tester trong team của bạn đang làm phần nào?Tester / QA · Junior
Gợi ý trả lời
Ôn thêm câu hỏi Tester / QA →QA (Quality Assurance) lo quy trình để lỗi ít xảy ra ngay từ đầu; QC (Quality Control) kiểm tra sản phẩm để tìm lỗi đã xảy ra. Testing là một hoạt động chính của QC.
- QA: review requirement, đặt chuẩn Definition of Done, checklist review code, quy trình release.
- QC: viết và chạy test case, log bug, verify fix, regression.
- Thực tế ở Việt Nam, chức danh "QA" thường làm cả hai, nhưng phần lớn thời gian là QC.
Người phỏng vấn muốn nghe: bạn hiểu khái niệm và kể được việc cụ thể mình làm, ví dụ "Em tham gia review user story từ sprint planning để hỏi rõ acceptance criteria, rồi mới viết test case".
03Bạn sẽ viết test case như thế nào cho màn hình đăng nhập (email + mật khẩu)?Tester / QA · Junior
Gợi ý trả lời
Ôn thêm câu hỏi Tester / QA →Chia theo nhóm để không sót, rồi áp dụng kỹ thuật thiết kế test.
- Chức năng: đúng email/mật khẩu; sai mật khẩu; email chưa đăng ký; để trống từng trường.
- Phân vùng tương đương & giá trị biên: độ dài mật khẩu ở min-1, min, max, max+1; email sai định dạng.
- Bảo mật: khoá tài khoản sau N lần sai, mật khẩu bị che, thông báo lỗi không tiết lộ email có tồn tại hay không, thử ký tự đặc biệt/SQL injection cơ bản.
- UI/UX: nhấn Enter để submit, tab order, hiện/ẩn mật khẩu, thông báo lỗi rõ ràng.
- Khác: "Ghi nhớ đăng nhập", session hết hạn, nhiều trình duyệt/thiết bị.
Hay sai: chỉ liệt kê case happy path, hoặc liệt kê lan man không có nhóm. Nên nói thêm mỗi test case gồm: tiền điều kiện, các bước, dữ liệu, kết quả mong đợi.
04Phân biệt list, tuple, set và dict. Kiểu nào mutable, kiểu nào immutable và vì sao điều đó quan trọng?Python · Junior
Gợi ý trả lời
Ôn thêm câu hỏi Python →listlà dãy có thứ tự, sửa được.tuplecó thứ tự nhưng bất biến.setlà tập không trùng lặp.dictlà cặp key-value, giữ thứ tự chèn từ Python 3.7.- Mutable:
list,dict,set. Immutable:tuple,str,int,frozenset. - Key của
dictvà phần tử củasetphải hashable, nên dùng đượctuplenhưng không dùng đượclist. - Kiểm tra
x in my_settrung bình O(1), cònx in my_listlà O(n). Cần tra cứu nhiều lần thì đổi sang set.
seen = set() for item in items: if item.id in seen: continue seen.add(item.id)Người phỏng vấn muốn nghe: bạn chọn cấu trúc dữ liệu theo thao tác cần làm, không theo thói quen.
- Mutable:
05Đoạn code
def add(item, items=[])có vấn đề gì?Python · JuniorGợi ý trả lời
Ôn thêm câu hỏi Python →Giá trị mặc định được tạo một lần khi định nghĩa hàm, không phải mỗi lần gọi. Mọi lần gọi không truyền
itemssẽ dùng chung một list, nên dữ liệu bị cộng dồn qua các lần gọi.def add(item, items=None): if items is None: items = [] items.append(item) return items- Áp dụng cho mọi giá trị mặc định mutable:
[],{},set(). - Với dataclass, dùng
field(default_factory=list). - Với Django model field, truyền hàm chứ không truyền object:
default=list, không phảidefault=[].
Hay sai: dùng
if not items:thay choif items is None:. Khi caller truyền vào list rỗng có chủ đích, hàm lại tạo list mới và caller không nhận được kết quả.- Áp dụng cho mọi giá trị mặc định mutable:
06Một bug report tốt cần có những gì? Severity và Priority khác nhau ra sao?Tester / QA · Junior
Gợi ý trả lời
Ôn thêm câu hỏi Tester / QA →Bug report tốt giúp dev tái hiện được ngay mà không cần hỏi lại.
- Tiêu đề ngắn, nói rõ chỗ lỗi và hiện tượng.
- Môi trường: build/version, trình duyệt hoặc thiết bị, tài khoản test.
- Các bước tái hiện, kết quả thực tế, kết quả mong đợi.
- Bằng chứng: ảnh, video, log, request/response.
- Severity, Priority, tần suất (luôn xảy ra hay thỉnh thoảng).
Severity là mức ảnh hưởng kỹ thuật (crash, mất dữ liệu là Critical). Priority là mức gấp cần sửa theo góc nhìn business. Ví dụ: logo sai màu ở trang chủ có severity thấp nhưng priority cao trước buổi demo khách hàng; app crash ở một màn hình gần như không ai dùng có severity cao nhưng priority có thể thấp hơn.
Hay sai: tự đặt Priority thay cho PO/PM mà không trao đổi.
07Smoke test, sanity test và regression test khác nhau thế nào?Tester / QA · Junior
Gợi ý trả lời
Ôn thêm câu hỏi Tester / QA →Ba loại này khác nhau ở mục đích và phạm vi.
- Smoke test: chạy nhanh các luồng chính ngay khi có build mới để quyết định build có đủ ổn để test tiếp không. Rộng nhưng nông.
- Sanity test: sau khi sửa một bug hay thay đổi nhỏ, kiểm tra nhanh đúng chỗ đó và vùng liên quan. Hẹp nhưng sâu.
- Regression test: kiểm tra lại các chức năng đã chạy đúng để chắc thay đổi mới không làm hỏng chúng. Phạm vi lớn nhất, hợp để automation.
Ví dụ trả lời: "Ở dự án trước, mỗi build lên môi trường test em chạy bộ smoke khoảng 20 case trong 15 phút. Fix bug thì sanity phần liên quan. Trước release cả team chạy regression, phần lặp lại đã được automation."
Người phỏng vấn muốn nghe: ví dụ thực tế từ dự án của bạn, không chỉ định nghĩa.
08Requirement 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."
09What would you say is your greatest strength?Phỏng vấn tiếng Anh
Gợi ý trả lời
Ôn thêm câu hỏi Phỏng vấn tiếng Anh →"I'd say my greatest strength is ownership. When I take on a task, I make sure it works end to end, not just that the code is merged. For example, after releasing a new feature, I usually check the logs and metrics for the first few days. Last year this helped me catch a data issue early, before it affected many users."
Mẹo: một điểm mạnh kèm một ví dụ ngắn là đủ. Các từ hay dùng: "ownership", "attention to detail", "problem-solving", "fast learner". Nói "I'd say…" nghe tự nhiên hơn "My strong point is…".
10Điểm mạnh lớn nhất của bạn là gì?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á →Chọn một hai điểm mạnh liên quan tới vị trí, và chứng minh bằng ví dụ thật, không liệt kê tính từ.
Cấu trúc: điểm mạnh, ví dụ ngắn, kết quả, liên hệ với công việc mới.
Câu mẫu: "Điểm mạnh của em là chủ động tìm nguyên nhân gốc. Ở dự án trước, hệ thống thỉnh thoảng bị timeout mà không ai tái hiện được. Em tự đọc log, thêm theo dõi ở các điểm nghi ngờ và tìm ra một truy vấn bị khoá bảng vào giờ cao điểm. Sau khi sửa, lỗi đó không còn xuất hiện. Em nghĩ điều này hữu ích với vị trí bên mình vì hệ thống có lượng truy cập lớn."
Hay sai: "Em chăm chỉ, ham học hỏi, chịu được áp lực" mà không có ví dụ. Ai cũng nói vậy nên không đọng lại gì.
Bạn đã phỏng vấn ở SSI?
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