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). 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.
01Star 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.
02Slowly 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.03Mộ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.
04Doanh 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.
05Bạn thiết kế pipeline dữ liệu thế nào để chạy lại an toàn (idempotent) và xử lý dữ liệu đến trễ?Data Engineer & Data Analyst · Senior
Gợi ý trả lời
Ôn thêm câu hỏi Data Engineer & Data Analyst →Idempotent nghĩa là chạy lại cùng một khoảng dữ liệu bao nhiêu lần cũng cho kết quả giống nhau, không trùng, không mất.
- Xử lý theo partition thời gian; ghi bằng ghi đè partition hoặc
MERGEtheo khoá, khôngINSERTnối thêm mù quáng. - Tham số hoá job theo ngày logic (ví dụ
data_interval_starttrong Airflow) thay vì dùng giờ hiện tại. - Dữ liệu đến trễ: lùi cửa sổ xử lý lại vài ngày gần nhất, hoặc dùng watermark với streaming.
- Khử trùng lặp theo khoá sự kiện.
- Hỗ trợ backfill có kiểm soát.
Hay sai: dùng
now()trong logic khiến chạy lại hôm khác ra kết quả khác.- Xử lý theo partition thời gian; ghi bằng ghi đè partition hoặc
06Bạn đảm bảo chất lượng dữ liệu (data quality) trong hệ thống thế nào?Data Engineer & Data Analyst · Senior
Gợi ý trả lời
Ôn thêm câu hỏi Data Engineer & Data Analyst →Chất lượng dữ liệu cần được kiểm tra tự động ở từng lớp và có người chịu trách nhiệm, không chỉ phát hiện khi dashboard sai.
- Test trong pipeline: not null, unique, giá trị hợp lệ, quan hệ khoá ngoại (dbt tests, Great Expectations).
- Giám sát: độ tươi (dữ liệu có cập nhật đúng giờ), số dòng bất thường, phân phối giá trị thay đổi đột ngột.
- Data contract với team nguồn: schema và ý nghĩa cột, thay đổi phải báo trước.
- Lỗi nghiêm trọng thì dừng pipeline, không đẩy dữ liệu sai xuống báo cáo.
- Lineage để biết lỗi ở nguồn ảnh hưởng tới bảng và dashboard nào.
Người phỏng vấn muốn nghe: ví dụ cụ thể bạn từng phát hiện và xử lý một lỗi dữ liệu.
07Khi nào cần xử lý streaming thay vì batch? Thiết kế pipeline real-time cần lưu ý gì?Data Engineer & Data Analyst · Senior
Gợi ý trả lời
Ôn thêm câu hỏi Data Engineer & Data Analyst →Chỉ chọn streaming khi nghiệp vụ thật sự cần độ trễ thấp (phát hiện gian lận, cảnh báo, cá nhân hoá tức thời); còn báo cáo theo giờ/ngày thì batch hoặc micro-batch rẻ và dễ vận hành hơn.
Lưu ý khi làm streaming (Kafka, Flink, Spark Structured Streaming):
- Ngữ nghĩa giao nhận: at-least-once phổ biến, cần sink idempotent để tránh trùng.
- Event time và watermark để xử lý sự kiện đến trễ, sai thứ tự.
- Quản lý state và checkpoint để khôi phục khi lỗi.
- Thay đổi schema có kiểm soát (schema registry).
- Giám sát consumer lag.
Người phỏng vấn muốn nghe: cân nhắc chi phí vận hành, không chọn streaming chỉ vì "hiện đại".
08Sản phẩm chạy A/B test, nhóm B có tỷ lệ chuyển đổi cao hơn. Bạn kết luận thế nào cho đúng?Data Engineer & Data Analyst · Senior
Gợi ý trả lời
Ôn thêm câu hỏi Data Engineer & Data Analyst →Không kết luận chỉ vì con số cao hơn; cần kiểm tra thiết kế thí nghiệm và ý nghĩa thống kê.
- Chỉ số chính và cỡ mẫu phải được định trước; không nhìn kết quả liên tục rồi dừng khi thấy đẹp (peeking).
- Kiểm tra sample ratio mismatch: tỷ lệ chia nhóm thực tế có khớp thiết kế không.
- Xem khoảng tin cậy và p-value, không chỉ chênh lệch trung bình.
- Chạy đủ chu kỳ (ít nhất trọn tuần) để tránh hiệu ứng ngày trong tuần, hiệu ứng mới lạ.
- Kiểm tra chỉ số bảo vệ (guardrail): doanh thu, tỷ lệ huỷ, tốc độ trang.
- Cẩn thận khi cắt quá nhiều phân khúc: dễ có kết quả "có ý nghĩa" do ngẫu nhiên.
Người phỏng vấn muốn nghe: phân biệt ý nghĩa thống kê với ý nghĩa kinh doanh.
09Các loại JOIN trong SQL khác nhau thế nào? Khi nào kết quả JOIN bị nhân bản dòng?Data Engineer & Data Analyst · Junior
Gợi ý trả lời
Ôn thêm câu hỏi Data Engineer & Data Analyst →INNER JOINchỉ giữ dòng khớp ở cả hai bảng;LEFT JOINgiữ mọi dòng bảng trái, phía phải không khớp thì NULL;FULL OUTER JOINgiữ tất cả;CROSS JOINghép mọi cặp.Dòng bị nhân bản khi khoá join không duy nhất ở một phía (quan hệ một-nhiều hoặc nhiều-nhiều). Ví dụ join
ordersvớipaymentskhi một đơn có nhiều lần thanh toán, rồiSUM(order_amount)sẽ bị cộng trùng.- Kiểm tra độ duy nhất của khoá trước khi join.
- Gộp (aggregate) bảng chi tiết trước rồi mới join.
Hay sai: đặt điều kiện lọc bảng phải trong
WHEREsauLEFT JOIN, vô tình biến nó thànhINNER JOIN; nên đặt trongON.10Bạn có câu hỏi gì cho chúng tôi không?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á →Luôn có câu hỏi. Đây là cơ hội thể hiện sự quan tâm và cũng là lúc bạn đánh giá công ty.
Câu hỏi nên chuẩn bị (chọn 2–3 câu hợp với người đang phỏng vấn):
- "Một ngày làm việc của vị trí này thường như thế nào? Team có bao nhiêu người, gồm những vai trò gì?"
- "Ba tháng đầu, anh/chị kỳ vọng người vào vị trí này làm được gì?"
- "Team đang gặp thách thức kỹ thuật hoặc quy trình nào lớn nhất?"
- "Quy trình release và code review của team ra sao?"
- "Công ty đánh giá hiệu suất và review lương theo chu kỳ nào?"
- "Vì sao vị trí này đang tuyển: mở rộng team hay thay người?"
Hay sai: "Dạ không ạ", hoặc chỉ hỏi về nghỉ phép, lương thưởng ngay ở vòng kỹ thuật. Chuyện chế độ nên hỏi kỹ với HR.
Bạn đã phỏng vấn ở Techcombank?
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