Việc làm

Hôm qua · Hà Nội · Tại văn phòng

Manual Test (Chuyên viên kiểm thử)

Công Ty Cổ Phần Giải Pháp Phần Mềm Tài Chính (FSSC) · Manual Tester

Xem mô tả & ứng tuyển trên ITviecMô tả công việc, lương và ứng tuyển nằm ở ITviec.

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, SQL & Database). 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.

  1. 01Bạn chọn framework automation (Selenium, Playwright, Cypress…) dựa trên tiêu chí nào?Tester / QA · Senior

    Gợi ý trả lời

    Không có framework tốt nhất, chỉ có cái hợp với sản phẩm và team.

    • Loại ứng dụng: web, mobile (Appium hoặc framework native), desktop, API.
    • Ngôn ngữ của team: nên trùng với dev để họ cùng review và viết test.
    • Trình duyệt cần hỗ trợ, có cần nhiều tab/domain, iframe, file upload.
    • Tốc độ và độ ổn định: auto-wait, chạy song song, retry, trace khi lỗi.
    • Tích hợp CI/CD, báo cáo, chạy trên container.
    • Cộng đồng, tài liệu, khả năng tuyển người.

    Ví dụ: "Dự án web mới, team dùng TypeScript, em chọn Playwright vì auto-wait giảm test chập chờn, chạy song song sẵn, có trace viewer để debug. Selenium vẫn hợp với dự án Java có sẵn nhiều script."

    Hay sai: chọn vì "đang hot" mà không có lý do gắn với dự án.

    Ôn thêm câu hỏi Tester / QA →
  2. 02Test automation của bạn hay bị flaky (lúc pass lúc fail). Bạn xử lý thế nào?Tester / QA · Senior

    Gợi ý trả lời

    Flaky test làm team mất niềm tin vào automation, nên cần xử lý có hệ thống chứ không chỉ bấm chạy lại.

    Nguyên nhân thường gặp:

    • Chờ bằng sleep cứng thay vì chờ điều kiện (element hiển thị, API trả về).
    • Locator dễ vỡ (XPath dài, phụ thuộc thứ tự); nên dùng data-testid hoặc role.
    • Dữ liệu test dùng chung, test phụ thuộc thứ tự chạy.
    • Môi trường test không ổn định, dịch vụ bên thứ ba.

    Cách làm:

    • Theo dõi tỷ lệ fail từng test, cách ly test flaky khỏi pipeline chặn release cho tới khi sửa.
    • Mỗi test tự tạo và dọn dữ liệu của mình; mock dịch vụ ngoài khi phù hợp.
    • Lưu screenshot, video, trace khi fail để tìm nguyên nhân.

    Hay sai: cấu hình retry thật nhiều để che lỗi.

    Ôn thêm câu hỏi Tester / QA →
  3. 03Nế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

    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ả.

    Ôn thêm câu hỏi Tester / QA →
  4. 04Bảng có hàng trăm triệu dòng, query ngày càng chậm. Bạn dùng partitioning, sharding hay read replica?SQL & Database · Senior

    Gợi ý trả lời

    Mỗi kỹ thuật giải một vấn đề khác nhau, nên cần xác định điểm nghẽn là đọc, ghi hay kích thước dữ liệu.

    • Read replica: giảm tải đọc. Phải chấp nhận replication lag; luồng vừa ghi xong đọc lại nên đọc từ primary.
    • Partitioning (trong một DB): chia bảng theo khoảng thời gian hoặc theo key. Query có điều kiện trên partition key chỉ quét phần liên quan, xoá dữ liệu cũ bằng DROP PARTITION rất nhanh.
    • Sharding (nhiều DB): khi một máy không chịu nổi lượng ghi hoặc dung lượng. Đổi lại phải chọn shard key cẩn thận, query xuyên shard và transaction phân tán rất khó.

    Thứ tự hợp lý: tối ưu query và index, archive dữ liệu cũ, thêm replica và cache, partition, cuối cùng mới shard.

    Hay sai: chọn shard key gây hot spot, vd. theo ngày tạo khiến mọi lượt ghi dồn vào một shard.

    Ôn thêm câu hỏi SQL & Database →
  5. 05Làm sao migrate schema (thêm cột, đổi kiểu, thêm index) trên bảng lớn mà không downtime?SQL & Database · Senior

    Gợi ý trả lời

    Chia thay đổi thành nhiều bước tương thích ngược để phiên bản code cũ và mới chạy song song được (expand rồi contract).

    1. Expand: thêm cột mới cho phép NULL hoặc có default; tránh câu lệnh viết lại cả bảng.
    2. Code mới ghi vào cả cột cũ và mới.
    3. Backfill dữ liệu cũ theo từng lô nhỏ, có nghỉ giữa các lô để không gây lag replica.
    4. Chuyển code sang đọc cột mới, kiểm tra kỹ.
    5. Contract: bỏ cột cũ ở một lần deploy sau.

    Index trên bảng lớn: PostgreSQL dùng CREATE INDEX CONCURRENTLY; MySQL dùng online DDL hoặc công cụ như gh-ost, pt-online-schema-change.

    Người phỏng vấn muốn nghe: bạn biết DDL có thể giữ lock khiến mọi query xếp hàng, nên đặt lock_timeout và luôn có kế hoạch rollback.

    Ôn thêm câu hỏi SQL & Database →
  6. 06QA 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

    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".

    Ôn thêm câu hỏi Tester / QA →
  7. 07Bạ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

    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.

    Ôn thêm câu hỏi Tester / QA →
  8. 08Mộ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

    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.

    Ôn thêm câu hỏi Tester / QA →
  9. 09Phân biệt INNER JOIN, LEFT JOIN, RIGHT JOIN và FULL OUTER JOIN. Khi nào dùng LEFT JOIN?SQL & Database · Junior

    Gợi ý trả lời

    JOIN quyết định giữ lại những dòng nào khi ghép hai bảng theo điều kiện.

    • INNER JOIN: chỉ giữ dòng khớp ở cả hai bảng.
    • LEFT JOIN: giữ mọi dòng bảng trái; bảng phải không khớp thì cột thành NULL.
    • RIGHT JOIN: ngược lại với LEFT, ít dùng vì có thể đổi chỗ bảng.
    • FULL OUTER JOIN: giữ tất cả dòng của cả hai (MySQL không hỗ trợ trực tiếp, phải UNION hai LEFT JOIN).

    Ví dụ tìm khách chưa từng đặt hàng:

    SELECT c.id, c.name
    FROM customers c
    LEFT JOIN orders o ON o.customer_id = c.id
    WHERE o.id IS NULL;
    

    Hay sai: đặt điều kiện lọc bảng phải trong WHERE (vd. WHERE o.status = 'paid') làm LEFT JOIN biến thành INNER JOIN; điều kiện đó phải để trong ON.

    Ôn thêm câu hỏi SQL & Database →
  10. 10Vì sao bạn muốn rời công ty hiện tại?Câu hỏi hành vi & văn hoá

    Gợi ý trả lời

    Trả lời thật nhưng hướng về phía trước: nói điều bạn đang tìm kiếm, không kể xấu nơi cũ.

    Lý do chấp nhận được: muốn thử thách mới, muốn làm sản phẩm, dự án kết thúc, công ty tái cấu trúc, thu nhập chưa tương xứng (nói khéo).

    Câu mẫu: "Em đã làm 2 năm ở dự án outsourcing, học được nhiều về quy trình và làm việc với khách nước ngoài. Giờ em muốn gắn bó lâu dài với một sản phẩm để thấy được tác động của những gì mình làm, và vị trí bên mình đúng hướng đó."

    Hay sai: chê sếp, chê đồng nghiệp, kể chuyện drama. Người phỏng vấn sẽ nghĩ bạn cũng sẽ nói về công ty họ như vậy. Nếu nhảy việc nhiều, chuẩn bị lời giải thích cho từng lần.

    Ôn thêm câu hỏi Câu hỏi hành vi & văn hoá →

Bạn đã phỏng vấn ở Công Ty Cổ Phần Giải Pháp Phần Mềm Tài Chính (FSSC)?

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