FDE PulseViệc làm FDE đang mở 618Mới trong 7 ngày 33Công ty đang tuyển 94Nhận làm từ xa 24%Lương trung vị (Mỹ) $209kTuyển nhiều nhất Databricks 121
EN

Tờ báo của nghề Forward Deployed Engineer

Bách khoa

Phỏng vấn FDE ở Google Cloud: vòng code, vòng thiết kế agent và cái bẫy Customer Engineer

Đọc kỹ tin tuyển dụng, bạn đoán được phần lớn các vòng sẽ hỏi gì, trừ vòng code thuật toán: vòng này phải luyện theo cách khác.

Kỹ sư ngồi viết code trên laptop, hoặc ứng viên giải bài tại bảng trắng trong buổi phỏng vấn kỹ thuật.
Ảnh: Shamin Haky / Unsplash
Chia sẻLinkedInFacebookX

Tóm tắt nhanh

  • Quy trình chưa cố định, chỉ là mẫu ứng viên kể lại. Tổng số vòng xấp xỉ một buổi onsite chuẩn của Google, nhưng hãy hỏi lại recruiter.
  • Vòng code là bài cấu trúc dữ liệu và giải thuật có giới hạn thời gian, có nguồn cho rằng thiên về dữ liệu và API. Vòng thiết kế chủ yếu bàn về xây và mở rộng hệ agent, trong đó có chuyện agent bị kẹt.
  • Customer Engineer thành công khi chốt được deal. FDE thành công khi hệ thống chạy ổn định trong production và được khách hàng dùng thật.
Bảng ba vòng phỏng vấn FDE Applied AI ở Google Cloud. Vòng code được tô màu cam: tin tuyển dụng không báo trước, cần luyện thuật toán có bấm giờ. Vòng thiết kế agent: tin tuyển dụng có báo trước, luyện eval, trace và chặn vòng lặp. Vòng hành vi: có báo trước, luyện kể về sự cố production và chuẩn bị cho việc đi công tác.
Đọc tin tuyển dụng để chuẩn bị cho vòng thiết kế và vòng hành vi. Vòng code thì phải luyện theo cách khác. Nguồn: tin tuyển dụng FDE Applied AI của Google Cloud, Aced, FDE Academy, Scaler Topics và một ứng viên trên Blind, theo tổng hợp trong bài.

Tin tuyển dụng Forward Deployed Engineer, Applied AI của Google Cloud có một dòng gần như báo trước vòng thiết kế: xây eval pipeline hiệu năng cao và khung observability cho các agentic workload phức tạp. Nhưng không dòng nào trong tin tuyển dụng báo trước vòng code.

Aced (trước đây là Exponent) mô tả vòng code là bài cấu trúc dữ liệu và giải thuật chuẩn, giải trong giới hạn thời gian. FDE Academy, trong một bài riêng về câu hỏi phỏng vấn, cũng mô tả như vậy.

Vì thế bạn cần hai cách chuẩn bị: đọc tin tuyển dụng cho các vòng thiết kế và hành vi, và luyện thuật toán theo kiểu cũ cho vòng code.

Cũng đừng coi thứ tự các vòng là cố định. Scaler Topics nhấn mạnh đây chỉ là mẫu ứng viên kể lại, không phải quy trình chính thức. Aced cho rằng tổng số vòng vẫn xấp xỉ một buổi onsite chuẩn của Google, nhưng khuyên bạn hỏi lại recruiter vì quy trình còn mới.

Ngoài các vòng đó còn một cái bẫy ít người nhắc đến. Nếu bạn trả lời như một Customer Engineer, tức là nói về demo và chốt deal, bạn đang cho thấy mình hợp với một công việc khác.

Bạn có thể làm hết phần luyện tập dưới đây trong một buổi tối. Bạn cần Python 3, một editor, một đồng hồ bấm giờ và tin tuyển dụng mở sẵn trên màn hình. Mọi đoạn code trong bài là bản rút gọn để luyện, không phải đề thi thật.

Bước 1: đọc tin tuyển dụng như đọc đề thi

Mỗi dòng trong tin tuyển dụng gợi ý một câu hỏi. Dòng về eval pipeline và observability là thứ vòng thiết kế sẽ đào sâu. Mục kinh nghiệm ưu tiên nhắc đến hệ multi-agent dùng các framework như ReAct và self-reflection.

Hai dòng khác thuộc về vòng hành vi và khách hàng, không phải vòng thuật toán: kinh nghiệm xử lý sự cố trên hệ thống đang chạy, và khả năng đi công tác tới 50% thời gian. Hãy chuẩn bị câu trả lời thật cho cả hai, nhất là dòng thứ hai, vì đó là điều kiện về lối sống, không phải kỹ năng.

Nếu bạn chưa từng làm hệ multi-agent, đừng bỏ qua vị trí này. ReAct và self-reflection nằm ở mục ưu tiên, không phải điều kiện bắt buộc, và phần luyện ở Bước 3 cho bạn một điểm khởi đầu.

Việc cần làm trước tiên: tô đậm từng dòng yêu cầu, rồi viết bên cạnh mỗi dòng một câu chuyện có thật từ công việc của bạn. Dòng nào chưa có câu chuyện đi kèm thì đó là chỗ cần luyện thêm.

Bước 2: vòng code là bài nhỏ, nhưng có thể bị hỏi tiếp

Mô tả về vòng code chưa thống nhất: Aced và FDE Academy gọi đó là bài cấu trúc dữ liệu và giải thuật chuẩn, còn Scaler Topics cho rằng nó thiên về xử lý dữ liệu và tích hợp API, với code phải đủ sạch để người khác tiếp quản.

Cách an toàn là luyện cả hai kiểu bài. Một ứng viên kể trên Blind rằng sau khi làm rõ yêu cầu, phần code của họ khá đơn giản: một bài nhỏ về chuyển đổi định danh (identifier).

Thử hình dung đề bài là chuyển tên biến từ camelCase sang snake_case. Hãy bấm giờ, vừa giải vừa nói to từng quyết định, kể cả các trường hợp biên như chữ viết tắt.

def camel_to_snake(name: str) -> str:
    out = []
    for i, ch in enumerate(name):
        if ch.isupper() and i > 0:
            prev_lower = name[i - 1].islower()
            next_lower = i + 1 < len(name) and name[i + 1].islower()
            if prev_lower or next_lower:
                out.append("_")
        out.append(ch.lower())
    return "".join(out)

assert camel_to_snake("userId") == "user_id"
assert camel_to_snake("HTTPServer") == "http_server"
assert camel_to_snake("getHTTPResponse") == "get_http_response"

Kiểm tra: cả ba assert phải chạy qua mà không báo lỗi. Nếu HTTPServer cho ra h_t_t_p_server, bạn đã quên xử lý chữ viết tắt. Lần sau, hãy nêu trường hợp này ra trước khi bắt tay viết code.

Cũng ứng viên đó kể rằng sau bài code, cuộc trò chuyện chuyển sang tình huống migration trên toàn bộ repo: tìm các chỗ cần đổi tên trong một codebase lớn.

Đó mới là trải nghiệm của một người, chưa phải mẫu chung. Nhưng chuẩn bị cho nó không tốn nhiều, và câu hỏi mở kiểu này rất dễ khiến bạn sa vào chi tiết hoặc trả lời quá sơ sài.

Vì vậy, hãy chuẩn bị sẵn hai bản. Bản một phút gồm bốn ý: liệt kê mọi chỗ cần đổi, dùng công cụ tự động sửa code, để test bắt lỗi, và triển khai theo từng đợt.

Bản năm phút nói thêm về rollback và về những chỗ code gọi tên biến qua chuỗi ký tự. Bắt đầu bằng bản ngắn, rồi hỏi người phỏng vấn muốn bạn đào sâu phần nào.

Bước 3: vòng thiết kế hỏi cả lúc agent hỏng

Aced mô tả vòng system design là nơi kiểm tra cách bạn thiết kế hệ thống thông minh kết hợp machine learning với các thành phần agent ở quy mô lớn. FDE Academy cho biết vòng này chấm cách bạn lập luận về orchestration, tool calling và xử lý lỗi trong một quy trình agent nhiều bước.

Ứng viên trên Blind kể rằng vòng này chủ yếu là thảo luận về xây dựng và mở rộng hệ agent. Xử lý agent bị kẹt hay rơi vào vòng lặp vô hạn chỉ là một trong các chủ đề, bên cạnh các đánh đổi khi vận hành.

Thử hình dung khách hàng cần một agent chăm sóc khách hàng biết tra cứu đơn hàng và xử lý hoàn tiền. Hãy vẽ happy path trước, rồi cho người phỏng vấn thấy agent tự dừng đúng lúc khi có sự cố. Đoạn dưới đây là bản rút gọn của một vòng lặp kiểu ReAct, có chặn số bước và phát hiện lặp lại.

def run_agent(plan_step, act, max_steps=8):
    seen, trace = set(), []
    for step in range(max_steps):
        action = plan_step(trace)      # mô hình chọn bước tiếp theo
        if action["tool"] == "finish":
            return {"status": "done", "trace": trace}
        key = (action["tool"], repr(action["args"]))
        if key in seen:                 # gọi lại y hệt một tool
            return {"status": "loop", "trace": trace}
        seen.add(key)
        trace.append((action, act(action)))
    return {"status": "max_steps", "trace": trace}

Kiểm tra: viết một hàm plan_step giả, lần nào cũng trả về cùng một lời gọi tool. Hàm run_agent phải trả về loop ở bước thứ hai, chứ không chạy cho đến khi hết ngân sách.

FDE Academy khuyên bạn chủ động nói cách mình sẽ giám sát, trace và debug hệ thống trong production. DoiT, khi viết về FDE nói chung, cho rằng công cụ observability quan trọng ngang với chính hạ tầng.

Ba trạng thái done, loop và max_steps là chỗ để bắt đầu: đếm tỷ lệ của từng trạng thái trên một bộ hội thoại mẫu, lưu trace để tìm nguyên nhân, và chuyển cho người thật khi agent rơi vào loop.

Nếu còn thời gian, hãy nhắc đến self-reflection, kỹ thuật mà tin tuyển dụng ghi ở mục ưu tiên. Một cách làm đơn giản là cho agent tự đọc lại trace của nó trước khi thử lại.

Bước 4: “khác Customer Engineer ở đâu?”

Hai chức danh này dễ bị nhầm. FDE Academy phân biệt rõ: Customer Engineer hỗ trợ quá trình bán Google Cloud, còn FDE xây và chịu trách nhiệm hệ thống production ngay trong môi trường của khách hàng. DoiT cũng định nghĩa FDE là kỹ sư làm việc nhúng trong môi trường khách hàng.

Customer Engineer

  • Hỗ trợ quá trình bán hàng
  • Thành công khi deal được chốt
  • Gợi ý nếu bạn ứng tuyển vị trí này: kể về demo hay proof of concept đã giúp khách quyết định

FDE Applied AI

  • Xây và chịu trách nhiệm hệ thống production tại chỗ khách
  • Thành công khi hệ thống chạy, được dùng và ổn định
  • Gợi ý khi phỏng vấn FDE: kể về sự cố production đã xử lý và eval đã xây

Hãy luyện một câu trả lời dài 60 giây. Mở đầu bằng thước đo thành công của FDE: một hệ thống thật đang chạy, được dùng và ổn định trong production của khách. Sau đó kể một lần bạn tự xử lý sự cố khi hệ thống đã chạy thật.

Những lỗi nên tránh dù bạn code giỏi

Ở vòng code, đừng im lặng giải bài. Bài nhỏ dễ khiến bạn chủ quan, trong khi người phỏng vấn chỉ thấy được cách nghĩ của bạn qua lời bạn nói. Code cũng phải sạch như sắp bàn giao, vì đó là tiêu chí Scaler Topics nhắc đến.

Ở vòng thiết kế, đừng vẽ một sơ đồ agent đẹp mà không có chỗ nào để đo. Một bản thiết kế không có eval, không có trace và không có cách phát hiện vòng lặp sẽ giống một bản demo hơn là một hệ thống sẵn sàng cho production.

Kỹ năng này dùng thế nào ở site khách hàng?

Bài chuyển đổi định danh trông như bài tập cho người mới. Nhưng thử hình dung phiên bản thật của nó: đổi tên hàng loạt trên codebase lớn của khách, nơi bạn phải báo cáo cùng một việc ở nhiều mức chi tiết cho từng người nghe.

Hàm chặn vòng lặp cũng là thứ bạn sẽ cần khi xử lý sự cố trên một hệ thống đang chạy, kinh nghiệm mà tin tuyển dụng nhắc đến. Trace bạn lưu hôm nay là thứ giúp bạn tìm ra lỗi khi agent kẹt lúc khách đang dùng.

Về CV, hãy viết mỗi dòng kinh nghiệm theo một công thức: hệ thống gì, chạy trong production bao lâu, đo bằng eval nào, và bạn đã sửa sự cố gì. Nếu từng làm hệ multi-agent hay vòng lặp kiểu ReAct, hãy ghi rõ cạnh tên dự án.

Đến ngày phỏng vấn, đừng dồn sức vẽ agent đẹp nhất. Hãy kể được agent của bạn từng kẹt ở đâu, và bạn đã làm gì để nó không kẹt lại lần nữa.

Bài này có hữu ích không?

Dùng cùng trợ lý AIHỏi Claude ↗Hỏi ChatGPT ↗
7 nguồn
Đọc tiếp trên lộ trình · Chặng 7: Dẫn dắtTuyển FDE đầu tiên: bắt đầu với hai người và một ranh giới code rõ ràngChọn sai người FDE đầu tiên không chỉ tốn một suất tuyển: deployment nào cũng sẽ thành một dự án làm riêng, và không ai viết ra cách làm cho lần sau.