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

Bản gốc: https://fdetimes.net/vi/bach-khoa/phong-van-fde-google-cloud/

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.

```python
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.

```python
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.

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.

**Điểm mấu chốt:** Hãy cho người phỏng vấn thấy agent của bạn làm gì khi hỏng, không chỉ lúc nó chạy đúng.

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

**Thử ngay tuần này:**

- Mở tin tuyển dụng FDE Applied AI của Google Cloud. Với mỗi dòng yêu cầu, viết một câu chuyện dự án có thật của bạn, mỗi câu chuyện không quá 5 câu.
- Bấm giờ 20 phút để giải một bài chuyển đổi định danh, vừa giải vừa nói to cách nghĩ. Sau đó trả lời câu hỏi 'làm sao áp dụng cho cả repo' hai lần: một bản 1 phút và một bản 5 phút.
- Viết một bản thiết kế agent dài một trang cho bài toán chăm sóc khách hàng, trong đó có giới hạn số bước, phát hiện vòng lặp và cách bạn sẽ trace, giám sát nó trong production.

## Nguồn

- [Forward Deployed Engineer, Applied AI, Google Cloud @ Google | anitab.org Job Board](https://jobs.anitab.org/companies/google-24698/jobs/85932848-forward-deployed-engineer-applied-ai-google-cloud)

- [Google Forward Deployed Engineer (FDE) Interview Guide | Sample Questions (2026)](https://www.aced.io/guides/google-forward-deployed-engineer-interview)

- [Google Forward Deployed Engineer Interview Experience | Interview Experiences - Blind](https://www.teamblind.com/post/google-forward-deployed-engineer-interview-experience-tvnq1sl4)

- [Google Customer Engineer vs Forward Deployed Engineer: What's the Difference?](https://fde.academy/blog/google-customer-engineer-vs-forward-deployed-engineer)

- [Google Forward Deployed Engineer Interview Questions](https://fde.academy/blog/google-forward-deployed-engineer-interview-questions)

- [Google Forward Deployed Engineer: Role, Interview & Salary Guide](https://www.scaler.com/topics/google-forward-deployed-engineer-role-interview-salary-guide/)

- [What Is a Forward Deployed Engineer?](https://www.doit.com/blog/forward-deployed-engineer)
