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 (Business Analyst, 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.
01Bạn viết một user story và acceptance criteria như thế nào? Ví dụ cho chức năng quên mật khẩu.Business Analyst · Junior
Gợi ý trả lời
Ôn thêm câu hỏi Business Analyst →Dùng mẫu "Là [ai], tôi muốn [làm gì], để [đạt được gì]", kèm acceptance criteria dạng Given/When/Then để dev và tester hiểu giống nhau.
Ví dụ:
- Là người dùng đã đăng ký, tôi muốn đặt lại mật khẩu qua email, để đăng nhập lại khi quên mật khẩu.
- AC1: Given email đã đăng ký, When tôi gửi yêu cầu, Then hệ thống gửi link đặt lại có hiệu lực trong khoảng thời gian quy định.
- AC2: Given email chưa đăng ký, When tôi gửi yêu cầu, Then hệ thống hiện cùng một thông báo chung (không lộ việc email có tồn tại hay không).
- AC3: Link đã dùng hoặc hết hạn thì không dùng lại được.
- AC4: Mật khẩu mới phải theo quy tắc độ mạnh đã thống nhất.
Người phỏng vấn muốn nghe: story đủ nhỏ, có giá trị cho người dùng, và AC bao cả trường hợp lỗi, không chỉ happy path.
02Bạn đã dùng những sơ đồ nào (UML, BPMN, flowchart…)? Khi nào dùng loại nào?Business Analyst · Junior
Gợi ý trả lời
Ôn thêm câu hỏi Business Analyst →Chọn sơ đồ theo câu hỏi cần trả lời và người đọc.
- BPMN / flowchart: mô tả quy trình nghiệp vụ có nhiều vai trò, nhánh rẽ; hợp để trao đổi với khách hàng (dùng swimlane theo phòng ban).
- Use case diagram: ai dùng hệ thống để làm gì, phạm vi tổng quan.
- Activity diagram: luồng xử lý của một chức năng.
- Sequence diagram: tương tác giữa người dùng, hệ thống, hệ thống bên ngoài theo thời gian; hữu ích khi tích hợp API, cổng thanh toán.
- State diagram: đối tượng có nhiều trạng thái (đơn hàng, khoản vay, hồ sơ duyệt).
- ERD: dữ liệu và quan hệ, khi làm việc với dev về database.
Công cụ hay dùng: draw.io, Lucidchart, Figma/FigJam, PlantUML.
Hay sai: vẽ thật nhiều cho đủ bộ nhưng không ai đọc. Nên kể một sơ đồ bạn đã dùng để chốt được một vấn đề cụ thể.
03Khách hàng đưa yêu cầu rất chung chung, ví dụ 'làm cho tôi một app quản lý kho'. Bạn bắt đầu như thế nào?Business Analyst
Gợi ý trả lời
Ôn thêm câu hỏi Business Analyst →Đi từ mục tiêu kinh doanh xuống chi tiết, đừng nhảy vào màn hình ngay.
- Hỏi bối cảnh: vấn đề hiện tại là gì (sai lệch tồn kho, chậm xuất hàng, báo cáo thủ công?), mục tiêu đo bằng gì, ai sẽ dùng, đang dùng công cụ gì.
- Xác định stakeholder và người dùng: thủ kho, kế toán, quản lý, chi nhánh.
- Vẽ quy trình hiện tại (as-is), tìm điểm đau, đề xuất quy trình mới (to-be).
- Liệt kê nhóm chức năng, ưu tiên bằng MoSCoW hoặc chia MVP và các giai đoạn sau.
- Làm rõ ràng buộc: ngân sách, thời hạn, tích hợp với phần mềm kế toán/ERP có sẵn.
- Xác nhận lại bằng tài liệu hoặc wireframe trước khi team estimate.
Người phỏng vấn muốn nghe: bạn đặt câu hỏi "tại sao" và giúp khách hàng thu hẹp phạm vi, thay vì ghi lại mọi mong muốn.
04Transaction là gì? Giải thích ACID.SQL & Database · Junior
Gợi ý trả lời
Ôn thêm câu hỏi SQL & Database →Transaction là một nhóm thao tác được thực hiện như một đơn vị: hoặc tất cả thành công (
COMMIT), hoặc không có gì xảy ra (ROLLBACK).- Atomicity: không có trạng thái làm dở dang.
- Consistency: sau transaction dữ liệu vẫn thoả ràng buộc (khoá ngoại, unique, check).
- Isolation: các transaction chạy đồng thời không thấy dữ liệu dở dang của nhau, mức độ tuỳ isolation level.
- Durability: đã commit thì không mất dù server sập (nhờ write-ahead log / redo log).
BEGIN; UPDATE accounts SET balance = balance - 500 WHERE id = 1; UPDATE accounts SET balance = balance + 500 WHERE id = 2; COMMIT;Người phỏng vấn muốn nghe: một ví dụ thực tế như chuyển tiền hoặc trừ tồn kho, và bạn biết giữ transaction ngắn, không gọi API bên ngoài khi đang mở transaction.
05Composite index (index nhiều cột) hoạt động ra sao? Thứ tự cột có quan trọng không?SQL & Database
Gợi ý trả lời
Ôn thêm câu hỏi SQL & Database →Có. Composite index sắp xếp theo cột đầu, rồi đến cột thứ hai trong cùng giá trị cột đầu, v.v. Vì vậy nó chỉ dùng hiệu quả khi query dùng các cột từ trái sang (leftmost prefix).
Với
INDEX (status, created_at):WHERE status = 'paid' AND created_at > ...: dùng tốt.WHERE status = 'paid' ORDER BY created_at DESC: dùng cho cả lọc lẫn sắp xếp.WHERE created_at > ...(không có status): thường không dùng được.
Nguyên tắc chọn thứ tự: cột so sánh bằng (
=) đặt trước, cột so sánh khoảng hoặc sắp xếp đặt sau. Nếu index chứa đủ mọi cột query cần (covering index) thì DB không phải đọc lại bảng.Hay sai: tạo riêng index cho từng cột rồi nghĩ rằng chúng sẽ kết hợp hiệu quả như một composite index.
06Giữa sprint, khách hàng muốn thay đổi yêu cầu (change request). Bạn xử lý thế nào?Business Analyst
Gợi ý trả lời
Ôn thêm câu hỏi Business Analyst →Tiếp nhận nhưng không nhận ngay vào làm; đánh giá tác động rồi để người có thẩm quyền quyết định.
- Ghi lại thay đổi và lý do: nhu cầu mới hay requirement cũ hiểu sai?
- Phân tích ảnh hưởng cùng dev/tester: phần nào phải sửa, effort, rủi ro, có ảnh hưởng tới phần đã xong không.
- Trao đổi với PM/PO và khách hàng về lựa chọn: đưa vào sprint sau, đổi lấy một hạng mục khác cùng độ lớn, hoặc tính thêm chi phí/thời gian (dự án fixed-price thường cần CR chính thức).
- Khi đã thống nhất: cập nhật tài liệu, backlog, thông báo cho cả team, lưu lịch sử thay đổi.
Hay sai: gật đầu với khách rồi nhờ dev "làm thêm chút". Việc đó gây scope creep, trễ tiến độ và mất lòng team.
07Hai stakeholder đưa ra yêu cầu mâu thuẫn nhau. Bạn làm gì?Business Analyst
Gợi ý trả lời
Ôn thêm câu hỏi Business Analyst →Mục tiêu là làm lộ ra mâu thuẫn và đưa về mục tiêu chung, không phải tự chọn phe.
- Gặp riêng từng bên để hiểu nhu cầu thật phía sau yêu cầu (thường hai bên muốn kết quả khác nhau vì KPI khác nhau).
- Trình bày mâu thuẫn bằng dữ liệu: ảnh hưởng tới quy trình, chi phí, người dùng của mỗi phương án.
- Tìm phương án dung hoà: cấu hình theo vai trò, chia giai đoạn, hoặc một giải pháp thứ ba.
- Vẫn chưa thống nhất thì đưa lên người có quyền quyết (sponsor, PO) và ghi lại.
Ví dụ ngắn: "Phòng kinh doanh muốn duyệt đơn nhanh, phòng tài chính muốn kiểm tra hạn mức kỹ. Em đề xuất tự duyệt đơn dưới một hạn mức, đơn lớn hơn mới qua tài chính; hai bên đồng ý."
Người phỏng vấn muốn nghe: bạn trung lập, có cấu trúc và biết khi nào cần escalate.
08Bạn làm gì để dev và tester hiểu đúng yêu cầu, tránh làm xong mới phát hiện sai?Business Analyst
Gợi ý trả lời
Ôn thêm câu hỏi Business Analyst →Làm rõ sớm và thường xuyên, không chỉ ném tài liệu sang rồi thôi.
- Tham gia refinement/grooming: giải thích bối cảnh, trả lời câu hỏi, cùng tách story.
- Acceptance criteria rõ ràng, có ví dụ dữ liệu cụ thể và trường hợp lỗi.
- Có wireframe/mockup, sơ đồ luồng cho phần phức tạp.
- Mời tester review AC trước khi dev bắt đầu; dev có thể "kể lại" cách hiểu để kiểm tra.
- Có mặt khi dev làm: trả lời nhanh, demo sớm phần đã xong để phát hiện lệch hướng.
- Giữ tài liệu là nguồn chính xác duy nhất, cập nhật khi có thay đổi.
Hay sai: chốt trong chat riêng với một dev mà không cập nhật ticket, khiến tester test theo bản cũ.
09Các isolation level là gì? Dirty read, non-repeatable read, phantom read khác nhau thế nào?SQL & Database
Gợi ý trả lời
Ôn thêm câu hỏi SQL & Database →Isolation level quyết định một transaction thấy được bao nhiêu thay đổi của transaction khác; mức càng cao càng an toàn nhưng càng dễ tranh chấp.
- Dirty read: đọc dữ liệu transaction khác chưa commit.
- Non-repeatable read: đọc lại cùng một dòng thấy giá trị đã đổi.
- Phantom read: chạy lại cùng điều kiện thấy thêm hoặc mất dòng.
Bốn mức chuẩn: Read Uncommitted, Read Committed, Repeatable Read, Serializable. Mặc định của PostgreSQL, SQL Server, Oracle là Read Committed; MySQL InnoDB là Repeatable Read.
Thực tế các DB dùng MVCC nên hành vi có khác lý thuyết: Repeatable Read của PostgreSQL dùng snapshot nên không gặp phantom, còn InnoDB dùng gap lock cho câu đọc có khoá.
Người phỏng vấn muốn nghe: bạn biết DB mình dùng mặc định ở mức nào và đã từng xử lý lost update, vd. bằng
SELECT ... FOR UPDATEhoặc optimistic locking.10Vì sao bạn chọn ứng tuyển vào công ty chúng tôi?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á →Câu này kiểm tra bạn có tìm hiểu không hay chỉ rải CV. Nối ba thứ: công ty, vị trí, và bạn.
- Tìm hiểu trước: sản phẩm, khách hàng, công nghệ, tin tức gần đây, đánh giá của nhân viên cũ và hiện tại.
- Chọn một hai điểm cụ thể bạn thật sự quan tâm: sản phẩm bạn từng dùng, bài toán kỹ thuật, quy mô người dùng, văn hoá làm việc.
- Nối với kinh nghiệm hoặc mục tiêu của bạn.
Câu mẫu: "Em có dùng ứng dụng của bên mình và thấy phần thanh toán rất mượt. Trong JD có nói team đang mở rộng hệ thống xử lý giao dịch, đúng mảng em đã làm hai năm. Em nghĩ mình đóng góp được ngay và cũng học được nhiều ở quy mô lớn hơn."
Hay sai: "Vì công ty lớn, lương tốt" hoặc khen chung chung áp vào công ty nào cũng được.
Bạn đã phỏng vấn ở FPT IS?
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