Việc làm

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

Senior Data Engineer Freelancer (6 months contract)

Onpoint · Data Engineer

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 (Cloud (AWS, Azure, GCP), Data Engineer & Data Analyst, Python). 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. 01IAM role khác IAM user thế nào? Vì sao không nên để access key trong code?Cloud (AWS, Azure, GCP)

    Gợi ý trả lời

    User đại diện cho một người hoặc ứng dụng với credential dài hạn; role là tập quyền được "đội" tạm thời và cấp credential ngắn hạn tự hết hạn.

    • Ứng dụng chạy trên cloud nên dùng role gắn vào máy ảo, container, function (instance profile, managed identity, service account).
    • CI/CD ngoài cloud dùng OIDC federation để lấy token ngắn hạn, không cần key cố định.
    • Áp dụng least privilege: chỉ cấp đúng action trên đúng resource.
    • Bật MFA cho người dùng, hạn chế dùng tài khoản root.

    Access key trong code dễ lộ qua Git, log, image; một khi lộ thì dùng được tới khi bị thu hồi.

    Người phỏng vấn muốn nghe: policy cụ thể, tránh "Action": "*".

    Ôn thêm câu hỏi Cloud (AWS, Azure, GCP) →
  2. 02Khi nào bạn chọn serverless (Lambda, Azure Functions, Cloud Run) thay vì container hay VM?Cloud (AWS, Azure, GCP)

    Gợi ý trả lời

    Serverless hợp với tải không đều, xử lý theo sự kiện, đội nhỏ không muốn vận hành server; trả tiền theo lượng dùng.

    Hợp:

    • Xử lý file khi upload, webhook, cron job, API lưu lượng thấp hoặc thất thường.

    Cân nhắc:

    • Cold start làm tăng độ trễ request đầu.
    • Giới hạn thời gian chạy, bộ nhớ, kích thước gói.
    • Tải cao và đều thì container/VM thường rẻ hơn.
    • Kết nối DB: nhiều instance mở nhiều connection, cần connection pooler hoặc proxy.
    • Khó debug và test cục bộ hơn.

    Người phỏng vấn muốn nghe: quyết định dựa trên đặc điểm tải và chi phí, không chọn vì "đang hot".

    Ôn thêm câu hỏi Cloud (AWS, Azure, GCP) →
  3. 03Load balancer tầng 4 và tầng 7 khác nhau thế nào? Khi nào dùng loại nào?Cloud (AWS, Azure, GCP)

    Gợi ý trả lời

    Load balancer tầng 4 phân phối theo IP/port (TCP/UDP), không đọc nội dung; tầng 7 hiểu HTTP nên định tuyến được theo path, host, header.

    • L7 (ALB, Application Gateway, HTTP(S) LB): định tuyến /api và /web tới các nhóm khác nhau, kết thúc TLS, gắn WAF, hợp web/API.
    • L4 (NLB, Azure Load Balancer): độ trễ thấp, thông lượng cao, giao thức không phải HTTP (game, MQTT, DB proxy), cần IP tĩnh.
    • Cả hai đều có health check để loại máy hỏng.

    Hay sai: health check trỏ vào trang nặng hoặc phụ thuộc DB, khiến LB loại hết máy khi DB chậm.

    Ôn thêm câu hỏi Cloud (AWS, Azure, GCP) →
  4. 04Slowly Changing Dimension (SCD) là gì? So sánh SCD Type 1 và Type 2.Data Engineer & Data Analyst

    Gợi ý trả lời

    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_current và 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.

    Ôn thêm câu hỏi Data Engineer & Data Analyst →
  5. 05Mộ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 →
  6. 06Trong Django ORM, lỗi N+1 query là gì? Phân biệt select_related và prefetch_related.Python

    Gợi ý trả lời

    N+1 là khi lấy danh sách bằng 1 query, rồi mỗi phần tử truy cập quan hệ lại sinh thêm 1 query. Ví dụ duyệt 50 bài viết và in post.author.name sẽ thành 51 query.

    • select_related: dùng SQL JOIN, cho quan hệ trỏ tới một object (ForeignKey, OneToOne).
    • prefetch_related: chạy query riêng rồi ghép trong Python, cho quan hệ nhiều (ManyToMany, reverse ForeignKey).
    posts = (Post.objects
             .select_related("author")
             .prefetch_related("tags"))
    

    Phát hiện bằng Django Debug Toolbar, hoặc assertNumQueries trong test.

    Hay sai: gọi .filter() trên quan hệ đã prefetch bên trong vòng lặp. Lệnh đó tạo query mới và bỏ qua dữ liệu prefetch; dùng Prefetch(..., queryset=...) để lọc ngay từ đầu.

    Ôn thêm câu hỏi Python →
  7. 07Hoá đơn cloud tháng này tăng gấp đôi. Bạn tìm nguyên nhân và tối ưu chi phí thế nào?Cloud (AWS, Azure, GCP)

    Gợi ý trả lời

    Bắt đầu từ dữ liệu chi phí, không đoán: xem Cost Explorer/Cost Management theo dịch vụ, region, tag và theo ngày để tìm điểm tăng.

    Thủ phạm hay gặp:

    • Tài nguyên quên tắt: máy dev, ổ đĩa, snapshot, IP tĩnh không gắn máy.
    • Data transfer: traffic ra Internet, qua NAT Gateway, giữa AZ/region.
    • Log và metric ghi quá nhiều, giữ quá lâu.
    • Auto scaling không co lại.

    Tối ưu: right-sizing, Savings Plans/Reserved cho tải nền ổn định, spot cho việc chịu ngắt quãng, lifecycle policy chuyển dữ liệu cũ sang lớp lưu trữ rẻ.

    Người phỏng vấn muốn nghe: gắn tag bắt buộc và đặt budget alert để phát hiện sớm.

    Ôn thêm câu hỏi Cloud (AWS, Azure, GCP) →
  8. 08Thiết kế hạ tầng cho một web app cần chịu tải cao và sẵn sàng 99.9% trên cloud.Cloud (AWS, Azure, GCP) · Senior

    Gợi ý trả lời

    Trình bày theo luồng request và nói rõ điểm lỗi đơn được loại bỏ ở đâu.

    • Biên: DNS, CDN cho nội dung tĩnh, WAF.
    • Ứng dụng: load balancer L7 trước nhóm container/VM stateless trải nhiều AZ, auto scaling theo CPU hoặc số request.
    • Dữ liệu: DB quản lý sẵn Multi-AZ, read replica cho đọc nhiều, Redis làm cache và session.
    • Bất đồng bộ: queue cho việc nặng (gửi mail, xử lý ảnh).
    • Vận hành: IaC, backup tự động có thử khôi phục, giám sát và alert theo SLO.

    Người phỏng vấn muốn nghe: đánh đổi chi phí. 99.9% thường đủ với một region nhiều AZ; multi-region đắt và phức tạp hơn nhiều.

    Ôn thêm câu hỏi Cloud (AWS, Azure, GCP) →
  9. 09RTO và RPO là gì? Trình bày các chiến lược disaster recovery trên cloud.Cloud (AWS, Azure, GCP) · Senior

    Gợi ý trả lời

    RPO là lượng dữ liệu tối đa chấp nhận mất (tính theo thời gian); RTO là thời gian tối đa để khôi phục dịch vụ. Hai con số này do nghiệp vụ quyết định và định giá chiến lược.

    Từ rẻ đến đắt:

    • Backup & restore: sao lưu sang region khác, dựng lại khi cần; RTO hàng giờ.
    • Pilot light: dữ liệu được replicate liên tục, chỉ phần lõi chạy sẵn.
    • Warm standby: bản thu nhỏ chạy sẵn ở region khác, scale lên khi failover.
    • Active-active: nhiều region cùng phục vụ; RTO/RPO gần 0, phức tạp nhất.

    Hay sai: có backup nhưng chưa bao giờ thử khôi phục. Kế hoạch DR phải được diễn tập định kỳ.

    Ôn thêm câu hỏi Cloud (AWS, Azure, GCP) →
  10. 10Kể về một thất bại hoặc sai lầm của bạn và bài học rút ra.Câu hỏi hành vi & văn hoá

    Gợi ý trả lời

    Chọn sai lầm thật, có hậu quả vừa phải, nhận trách nhiệm rõ ràng, và nhấn mạnh việc bạn đã thay đổi sau đó.

    Cấu trúc: chuyện gì xảy ra, phần lỗi của bạn, bạn khắc phục ngay thế nào, bài học và thay đổi lâu dài.

    Câu mẫu: "Có lần em deploy một thay đổi cấu hình lên production vào chiều thứ Sáu mà không kiểm tra kỹ trên staging, làm một tính năng lỗi khoảng một giờ. Em báo ngay cho lead, rollback và viết báo cáo sự cố. Sau đó em đề xuất checklist trước deploy và quy ước hạn chế deploy cuối tuần; team áp dụng tới giờ."

    Hay sai: kể một "thất bại" thực ra là khoe, đổ lỗi cho người khác, hoặc nói mình chưa từng thất bại.

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

Bạn đã phỏng vấn ở Onpoint?

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