Câu hỏi phỏng vấn Data Engineer, theo từng vòng
Bởi Aaron Cao · Cập nhật

Vòng phỏng vấn data engineer gồm SQL nâng cao, mô hình hóa dữ liệu, thiết kế pipeline và ETL, xử lý phân tán, và vòng hành vi. Vòng thiết kế pipeline quyết định phần lớn kết quả: nó hỏi bạn xử lý dữ liệu đến trễ, chạy lại và lỗi ra sao, chứ không phải bạn thích công cụ nào.
Một vòng phỏng vấn data engineer gồm những gì?
Có thể bạn đang chuẩn bị giống hệt như cho vòng phỏng vấn software engineering và tự hỏi điều gì khác biệt. Phần này liệt kê các vòng mà những cuộc phỏng vấn này tái sử dụng, để bạn dồn thời gian vào hai vòng thực sự phân biệt ứng viên. Bộ lọc kỹ thuật hiếm khi là nơi mất offer.
- SQL. Window function, khử trùng lặp, và hiệu năng truy vấn, thường làm trực tiếp.
- Mô hình hóa dữ liệu. Thiết kế bảng cho một mô tả kinh doanh, và bảo vệ grain đã chọn.
- Thiết kế pipeline và ETL. Một vòng thiết kế hệ thống mở, giới hạn ở việc di chuyển dữ liệu.
- Xử lý phân tán. Một framework thực sự thực thi job của bạn ra sao, và vì sao nó chậm.
- Lập trình. Python hoặc Scala, thường nhẹ hơn vòng software engineering.
- Hành vi. Sự cố trực on-call, dashboard hỏng, và stakeholder muốn có số liệu từ hôm qua.
Các chức danh chồng lấn nhiều với analytics engineering và vai trò nền tảng, nên tổ hợp câu hỏi thay đổi. Kho câu hỏi theo vai trò liên quan nằm ở hub câu hỏi phỏng vấn theo vai trò.
Những câu hỏi SQL và mô hình hóa dữ liệu nào xuất hiện?
SQL
- Khử trùng lặp một bảng, chỉ giữ lại dòng mới nhất theo từng khóa.
- Viết một truy vấn trả về số phiên của mỗi người dùng, dùng khoảng nghỉ không hoạt động 30 phút.
- Tính tổng lũy kế và mức thay đổi theo tháng trong một truy vấn duy nhất.
- Tìm các dòng có trong snapshot hôm qua nhưng không có trong snapshot hôm nay.
QUALIFYlàm gì, và nếu không có nó bạn sẽ viết thế nào?- Truy vấn này quét một tỷ dòng và mất hai mươi phút. Bạn chẩn đoán nó ra sao?
- Giải thích khác biệt giữa partitioning và clustering, và khi nào mỗi cách hữu ích.
Mô hình hóa dữ liệu
- Thiết kế các bảng cho lịch sử đơn hàng của một marketplace trực tuyến. Grain của bảng fact là gì?
- Giải thích star schema, và khi nào bạn cố tình denormalise thêm nữa.
- Slowly changing dimension là gì, và bạn triển khai type two ra sao?
- Một stakeholder muốn báo cáo lịch sử phản ánh vùng hiện tại của khách hàng. Cái gì sẽ hỏng?
- Bạn sẽ mô hình hóa một event stream đến không theo thứ tự ra sao?
- Khi nào bạn chọn một bảng rộng thay vì một mô hình chuẩn hóa?
Vòng mô hình hóa thưởng cho việc cam kết với một grain và bảo vệ nó. Ứng viên mô tả ba thiết kế khả dĩ mà không chọn cái nào sẽ bị điểm thấp hơn ứng viên chọn một thiết kế hợp lý và nêu ra điểm yếu của nó.
Những câu hỏi pipeline và xử lý phân tán nào xuất hiện?
Thiết kế pipeline và ETL
- Thiết kế một pipeline nạp giao dịch hằng ngày vào warehouse để báo cáo.
- Nguồn upstream gửi lại dữ liệu hôm qua. Điều gì xảy ra với job của bạn?
- Bạn làm cho một pipeline idempotent bằng cách nào, và vì sao điều đó quan trọng với việc chạy lại?
- Bạn sẽ backfill hai năm dữ liệu lịch sử mà không làm gián đoạn tải hằng ngày ra sao?
- Dữ liệu đến trễ xuất hiện ba ngày sau khi partition đã đóng. Bạn làm gì?
- Bạn sẽ phát hiện một pipeline chạy thành công nhưng cho ra dữ liệu sai ra sao?
- Bạn giám sát cái gì, và cái gì gọi ai đó dậy lúc ba giờ sáng?
Xử lý phân tán và streaming
- Điều gì gây ra shuffle, và vì sao nó tốn kém?
- Job của bạn chạy chậm và một task mất lâu hơn hẳn phần còn lại. Chuyện gì đang xảy ra?
- Giải thích data skew và hai cách xử lý nó.
- Khi nào bạn chọn streaming thay vì một batch job theo lịch?
- Xử lý exactly once thực sự đảm bảo điều gì, và ở đâu nó không đúng?
- Watermark xử lý các sự kiện đến không theo thứ tự trong một windowed aggregation ra sao?
Hãy để ý xem có bao nhiêu câu trong số này thực sự yêu cầu bạn nêu tên một công cụ. Nêu tên một công cụ chỉ là phần mở đầu của câu trả lời, không phải câu trả lời. Câu hỏi tiếp theo luôn là tại sao, và cái gì sẽ hỏng.
Bạn nên luyện tập những điều này thế nào?
Đọc những danh sách này tạo ra sự quen thuộc. Các vòng thiết kế kiểm tra một thứ khác: giữ cả một hệ thống trong đầu trong khi ai đó ngắt lời bạn bằng một tình huống lỗi. Điều đó chỉ đến từ việc nói to các thiết kế ra.
- Vẽ và thuyết minh một pipeline trong mười lăm phút. Nguồn, landing, transform, serve, cộng với cách mỗi giai đoạn có thể hỏng.
- Tự tấn công thiết kế của chính bạn. Sau mỗi lần luyện tập, hãy hỏi điều gì xảy ra khi chạy lại, khi dữ liệu đến trễ, và khi schema thay đổi.
- Chuẩn bị sẵn một con số về quy mô. Số dòng mỗi ngày, kích thước, ngân sách độ trễ. Nêu quy mô giả định của bạn trước tiên sẽ được tính điểm.
- Viết SQL bằng tay. Các vòng trực tiếp thường dùng một trình soạn thảo trơn, không autocomplete, không thực thi.
- Luyện kỹ một câu chuyện sự cố. Cái gì hỏng, bạn phát hiện ra sao, bạn đã thay đổi gì để nó không tái diễn.
Một nữ data engineer với sáu năm kinh nghiệm trên batch pipeline đã chuẩn bị bằng cách ôn lại nội bộ framework, rồi khựng lại ở câu "nguồn upstream gửi lại tệp hôm qua" vì cô chỉ từng xử lý việc đó bằng tay, chưa bao giờ giải thích nó. Kiến thức đã có sẵn; câu trả lời nói ra thì không. Luyện vòng thiết kế kèm câu hỏi tiếp theo chính là điều chế độ mock interview được tạo ra để làm.
Câu hỏi thường gặp
Phỏng vấn data engineer khác phỏng vấn software engineer ở điểm nào?
Tôi có cần biết cụ thể Spark, hay chỉ cần hiểu khái niệm là đủ?
Những cuộc phỏng vấn này kiểm tra mô hình hóa dữ liệu đến mức nào?
Lý do phổ biến nhất khiến ứng viên trượt vòng phỏng vấn data engineer là gì?
Làm sao để tự luyện vòng thiết kế một mình?
Câu hỏi liên quan
- Phỏng vấn data scientist thường hỏi những câu hỏi gì?
- Phỏng vấn Data Analyst thường hỏi những câu gì?
- Phỏng vấn Product Manager thường hỏi những câu gì?
- Lập trình viên bị hỏi những gì về Copilot và trợ lý lập trình AI trong phỏng vấn?
- Vòng phỏng vấn thứ hai thường hỏi những câu hỏi gì?
- Phỏng vấn AI hỏi những câu hỏi gì?