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 (Data Engineer & Data Analyst, SQL & Database, Business Analyst). 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.
01Window function là gì? Viết truy vấn lấy đơn hàng gần nhất của mỗi khách hàng.Data Engineer & Data Analyst · Junior
Gợi ý trả lời
Ôn thêm câu hỏi Data Engineer & Data Analyst →Window function tính toán trên một nhóm dòng liên quan mà không gộp mất dòng như
GROUP BY. Hay dùng:ROW_NUMBER,RANK,LAG/LEAD, tổng luỹ kếSUM() OVER.SELECT * FROM ( SELECT o.*, ROW_NUMBER() OVER ( PARTITION BY customer_id ORDER BY created_at DESC ) AS rn FROM orders o ) t WHERE rn = 1;ROW_NUMBERcho số duy nhất;RANKcho cùng hạng khi bằng nhau và nhảy số;DENSE_RANKkhông nhảy số.LAGđể so sánh với kỳ trước, ví dụ doanh thu tháng này so với tháng trước.
Hay sai:
ORDER BYkhông xác định duy nhất khiến kết quả thay đổi giữa các lần chạy.02ETL khác ELT thế nào? Vì sao ELT phổ biến hơn với data warehouse hiện đại?Data Engineer & Data Analyst · Junior
Gợi ý trả lời
Ôn thêm câu hỏi Data Engineer & Data Analyst →ETL biến đổi dữ liệu trước khi nạp vào kho; ELT nạp dữ liệu thô vào kho trước rồi biến đổi ngay trong kho bằng SQL.
ELT phổ biến vì:
- Warehouse/lakehouse trên cloud (BigQuery, Snowflake, Databricks) tính toán mạnh và co giãn.
- Giữ được dữ liệu thô, khi đổi logic có thể chạy lại.
- Biến đổi viết bằng SQL, quản lý bằng công cụ như dbt có version, test, tài liệu.
ETL vẫn hợp khi phải loại bỏ dữ liệu nhạy cảm trước khi vào kho, hoặc nguồn quá lớn cần lọc bớt.
Người phỏng vấn muốn nghe: tổ chức theo lớp (raw, staging, mart hoặc bronze, silver, gold).
03Star schema là gì? Phân biệt bảng fact và bảng dimension.Data Engineer & Data Analyst
Gợi ý trả lời
Ôn thêm câu hỏi Data Engineer & Data Analyst →Star schema là mô hình dữ liệu cho phân tích: một bảng fact ở giữa nối với nhiều bảng dimension xung quanh, giúp truy vấn đơn giản và nhanh.
- Fact: ghi các sự kiện đo đếm được (đơn hàng, lượt xem), chứa số đo (số tiền, số lượng) và khoá ngoại tới dimension. Thường rất nhiều dòng.
- Dimension: mô tả ngữ cảnh (khách hàng, sản phẩm, ngày, cửa hàng), ít dòng, nhiều cột thuộc tính.
- Phải xác định rõ grain: mỗi dòng fact là gì (một đơn hay một dòng sản phẩm trong đơn).
Hay sai: trộn nhiều grain trong một bảng fact, dẫn đến cộng trùng khi tổng hợp.
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.
06Khá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.
07Slowly Changing Dimension (SCD) là gì? So sánh SCD Type 1 và Type 2.Data Engineer & Data Analyst
Gợi ý trả lời
Ôn thêm câu hỏi Data Engineer & Data Analyst →SCD là cách xử lý khi thuộc tính của dimension thay đổi theo thời gian, ví dụ khách hàng chuyển thành phố hoặc đổi hạng thành viên.
- Type 1: ghi đè giá trị cũ. Đơn giản nhưng mất lịch sử; báo cáo quá khứ hiển thị theo giá trị mới.
- Type 2: thêm dòng mới cho mỗi thay đổi, kèm
valid_from,valid_to,is_currentvà surrogate key. Giữ được lịch sử, fact trỏ đúng phiên bản tại thời điểm phát sinh.
Chọn Type 2 khi nghiệp vụ cần phân tích theo trạng thái lúc xảy ra (doanh thu theo hạng khách hàng lúc mua).
Hay sai: join fact với dimension Type 2 mà quên điều kiện thời gian hoặc
is_current, làm nhân bản dòng.08Một job Spark chạy rất chậm, vài task chạy mãi không xong. Bạn chẩn đoán và xử lý thế nào?Data Engineer & Data Analyst
Gợi ý trả lời
Ôn thêm câu hỏi Data Engineer & Data Analyst →Vài task chậm hơn hẳn phần còn lại thường là data skew: một khoá chiếm phần lớn dữ liệu, dồn vào một partition.
Chẩn đoán qua Spark UI: xem stage chậm, so sánh thời gian và dung lượng shuffle giữa các task, có spill ra đĩa không.
Cách xử lý:
- Bật Adaptive Query Execution (mặc định bật ở Spark 3.2+) để tự tách partition bị lệch.
- Broadcast bảng nhỏ khi join để tránh shuffle.
- Thêm salt vào khoá nóng rồi gộp lại.
- Lọc dữ liệu và chọn cột sớm, tránh
collect()về driver. - Điều chỉnh số partition; xử lý vấn đề quá nhiều file nhỏ.
Người phỏng vấn muốn nghe: đo bằng Spark UI trước, không tăng tài nguyên một cách mù quáng.
09Doanh thu hôm nay giảm 30% so với hôm qua. Bạn phân tích nguyên nhân thế nào?Data Engineer & Data Analyst
Gợi ý trả lời
Ôn thêm câu hỏi Data Engineer & Data Analyst →Trước tiên kiểm tra dữ liệu có đúng không, rồi mới phân tích nghiệp vụ.
- Dữ liệu: pipeline có chạy đủ không, dữ liệu đến trễ, có thay đổi tracking hay định nghĩa chỉ số không.
- So sánh hợp lý: cùng thứ trong tuần trước, có ngày lễ, khuyến mãi hôm qua không.
- Phân rã chỉ số: doanh thu = số người dùng × tỷ lệ chuyển đổi × giá trị đơn trung bình; xem thành phần nào giảm.
- Cắt lát: theo kênh, nền tảng, khu vực, sản phẩm, phiên bản app để khoanh vùng.
- Đối chiếu sự kiện: deploy mới, lỗi thanh toán, đối thủ, chiến dịch quảng cáo dừng.
Người phỏng vấn muốn nghe: cách tiếp cận có cấu trúc và kết luận đi kèm đề xuất hành động.
10Bạn phản ứng thế nào khi nhận góp ý tiêu cực về công việc của mình?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 tách góp ý khỏi cảm xúc cá nhân và biến nó thành hành động.
- Lắng nghe hết, hỏi lại để hiểu ví dụ cụ thể và kỳ vọng.
- Cảm ơn, kể cả khi chưa đồng ý hoàn toàn; nếu có góc nhìn khác, trao đổi bằng thông tin, không phòng thủ.
- Lên kế hoạch cải thiện và chủ động xin phản hồi lại sau một thời gian.
Câu mẫu: "Có lần lead góp ý code review của em quá dài, khó review. Lúc đầu em hơi chột dạ, nhưng em hỏi anh muốn chia thế nào cho dễ. Từ đó em tách pull request nhỏ theo từng thay đổi, thời gian review của team giảm hẳn và em cũng ít bị yêu cầu sửa lại hơn."
Hay sai: nói "em luôn vui vẻ đón nhận mọi góp ý" mà không có ví dụ.
Bạn đã phỏng vấn ở Mcredit?
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