Việc làm

17/09 · Hồ Chí Minh · Tại văn phòng

Head of AI & Data

HD Securities Corporation · Manager

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 (Data Engineer & Data Analyst, SQL & Database, System Design & Kiến trúc). 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. 01Mộ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

    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.

    Ôn thêm câu hỏi Data Engineer & Data Analyst →
  2. 02Doanh 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

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

    1. 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.
    2. 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.
    3. 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.
    4. 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.
    5. Đố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.

    Ôn thêm câu hỏi Data Engineer & Data Analyst →
  3. 03Bạ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

    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 MERGE theo khoá, không INSERT nối thêm mù quáng.
    • Tham số hoá job theo ngày logic (ví dụ data_interval_start trong 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.

    Ôn thêm câu hỏi Data Engineer & Data Analyst →
  4. 04Chuẩn hoá (normalization) là gì? Khi nào nên denormalize?SQL & Database

    Gợi ý trả lời

    Chuẩn hoá là tách dữ liệu để mỗi thông tin chỉ lưu ở một chỗ, tránh dư thừa và sai lệch khi cập nhật.

    • 1NF: mỗi ô một giá trị nguyên tử, không lưu danh sách trong một cột.
    • 2NF: cột không khoá phụ thuộc vào toàn bộ khoá chính, không chỉ một phần.
    • 3NF: cột không khoá không phụ thuộc bắc cầu qua cột không khoá khác.

    Denormalize khi đọc nhiều hơn ghi rất nhiều và JOIN trở thành điểm nghẽn: lưu sẵn comment_count trong bảng bài viết, chép customer_name vào đơn hàng để giữ đúng tên tại thời điểm đặt, hoặc dựng bảng báo cáo riêng.

    Hay sai: denormalize mà không có cơ chế đồng bộ (trigger, job, event) nên số liệu lệch dần. Hãy nói rõ cái giá phải trả là logic ghi phức tạp hơn.

    Ôn thêm câu hỏi SQL & Database →
  5. 05Deadlock trong database xảy ra thế nào và xử lý ra sao?SQL & Database · Senior

    Gợi ý trả lời

    Deadlock là khi hai transaction giữ khoá mà bên kia cần và chờ nhau mãi. DB tự phát hiện, chọn một transaction làm nạn nhân và rollback nó.

    Ví dụ: T1 khoá dòng A rồi muốn B, cùng lúc T2 khoá B rồi muốn A.

    Cách giảm deadlock:

    • Luôn khoá tài nguyên theo cùng một thứ tự (vd. sắp xếp theo id trước khi update nhiều dòng).
    • Giữ transaction ngắn, không chờ I/O bên ngoài khi đang giữ khoá.
    • Có index phù hợp để câu UPDATE/DELETE không khoá quá nhiều dòng.
    • Ứng dụng bắt lỗi deadlock và retry có giới hạn.

    Khi điều tra: MySQL dùng SHOW ENGINE INNODB STATUS, PostgreSQL xem log (deadlock được ghi kèm câu lệnh) và pg_locks.

    Người phỏng vấn muốn nghe: bạn coi retry là bình thường nhưng vẫn tìm gốc rễ ở thứ tự khoá.

    Ôn thêm câu hỏi SQL & Database →
  6. 06Thiết kế rate limiter cho API. Bạn chọn thuật toán nào và đặt ở đâu?System Design & Kiến trúc

    Gợi ý trả lời

    Rate limiter bảo vệ hệ thống khỏi lạm dụng và quá tải, thường đặt ở API gateway hoặc middleware, đếm theo user, API key hoặc IP.

    Thuật toán:

    • Fixed window: đơn giản nhưng bị dồn request ở ranh giới hai cửa sổ.
    • Sliding window (log hoặc counter): mượt hơn, tốn bộ nhớ hơn.
    • Token bucket: cho phép burst ngắn trong giới hạn tốc độ trung bình, được dùng phổ biến.

    Khi chạy nhiều instance, bộ đếm phải dùng chung, thường là Redis. Thao tác kiểm tra và tăng phải atomic (INCR kèm EXPIRE, hoặc Lua script).

    Trả về HTTP 429 kèm header Retry-After.

    Người phỏng vấn muốn nghe: bạn quyết định được khi Redis lỗi thì cho qua (fail-open) hay chặn (fail-closed) và giải thích lý do, đồng thời biết giới hạn riêng cho endpoint đắt như đăng nhập, gửi OTP.

    Ôn thêm câu hỏi System Design & Kiến trúc →
  7. 07Bạ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

    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.

    Ôn thêm câu hỏi Data Engineer & Data Analyst →
  8. 08Khi 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

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

    Ôn thêm câu hỏi Data Engineer & Data Analyst →
  9. 09Sả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

    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.

    Ôn thêm câu hỏi Data Engineer & Data Analyst →
  10. 10Điểm yếu của bạn là gì?Câu hỏi hành vi & văn hoá

    Gợi ý trả lời

    Chọn điểm yếu thật, không chí mạng với vị trí, và cho thấy bạn đang cải thiện.

    Cấu trúc: điểm yếu, ảnh hưởng đã gặp, việc bạn đang làm để khắc phục, tiến bộ đến nay.

    Câu mẫu: "Trước đây em hay ngại hỏi khi bị kẹt, tự loay hoay quá lâu, có lần làm trễ task. Giờ em tự đặt giới hạn: kẹt quá một hai giờ mà không có hướng thì em hỏi đồng đội, kèm những gì đã thử. Từ khi làm vậy em xong việc đúng hạn hơn và học được nhanh hơn từ người khác."

    Ví dụ khác có thể dùng: chưa quen nói trước đám đông, tiếng Anh nói chưa trôi chảy, hay ôm việc.

    Hay sai: "Điểm yếu của em là quá cầu toàn" (nghe như né câu hỏi), hoặc nêu điểm yếu là kỹ năng cốt lõi của vị trí.

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

Bạn đã phỏng vấn ở HD Securities Corporation?

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