Zoox 是亞馬遜旗下的 Robotaxi 公司,2026 Q1 起在 Foster City 與 Las Vegas 已開放第一批 paid rides。這家公司在自動駕駛賽道有個非常特別的屬性:自研整車 + 自研全棧軟體——所以它的面試範圍比 Waymo / Cruise 更廣,C++ 嵌入式、ML perception、ROS-style 通訊框架都可能被問。
本文基於 2026 年三位候選人的 onsite 複盤(Perception SDE / Planning SDE / Embedded Systems),系統拆解 Zoox 的 5 個面試環節,並給出 2 道高頻 coding 真題的完整解法。
Zoox 面試流程總覽
| 階段 | 時長 | 內容 |
|---|---|---|
| 1. Recruiter Phone Screen | 30 min | 履歷、為什麼 Zoox、職缺匹配 |
| 2. Hiring Manager Chat | 45 min | 專案深挖 + 跨團隊協作經歷 |
| 3. Technical Phone Screen | 60 min | 1 道 C++/Python coding(CoderPad) |
| 4. Onsite Loop | 5 × 60 min | Coding × 2、系統/Robotics 設計、ML 專項、BQ |
| 5. Team Match | 1-2 週 | 不重新面,只是匹配團隊 |
Zoox 與 Waymo 最大差異:Coding 題偏向系統工程而非純演算法——例如「實作一個容忍 200ms 的感測器流時間對齊」,而不是 LeetCode 風格的「兩數之和」。
Coding 真題 1:感測器時間同步(LiDAR + Camera)
題目描述
兩路時間戳資料流:
- LiDAR 包:
(ts_l, point_cloud),10 Hz - Camera 幀:
(ts_c, image),30 Hz
對每一個 LiDAR 包,找到時間戳最接近的 Camera 幀,要求時間差 ≤ 50 ms,否則跳過該 LiDAR 包。最終回傳所有匹配對。
資料可能亂序到達,需要線上(streaming)處理。
解題思路
這是一道典型 Zoox 風格題——表面像 LC Two Pointer,但加了 streaming、reorder、tolerance 三個真實工程約束。
- 用 deque 維護 camera buffer:丟棄比目前 lidar 早 50 ms 的幀
- 對每個 lidar 包,等到出現一個比它晚的 camera 幀才決定
- 用 heap 處理亂序:緩衝 200ms 視窗後才 pop
Python 解法
from collections import deque
import heapq
class SensorSync:
def __init__(self, tolerance_ms=50, reorder_window_ms=200):
self.tol = tolerance_ms
self.window = reorder_window_ms
self.cam_buf = deque()
self.lidar_q = []
self.matched = []
def push_camera(self, ts, frame):
self.cam_buf.append((ts, frame))
self._gc(ts)
def push_lidar(self, ts, packet):
heapq.heappush(self.lidar_q, (ts, packet))
self._gc(ts)
def _gc(self, now_ts):
while self.cam_buf and now_ts - self.cam_buf[0][0] > self.window:
self.cam_buf.popleft()
while self.lidar_q and now_ts - self.lidar_q[0][0] > self.window:
ts_l, packet = heapq.heappop(self.lidar_q)
self._match_one(ts_l, packet)
def _match_one(self, ts_l, packet):
best = None
best_diff = self.tol + 1
for ts_c, frame in self.cam_buf:
diff = abs(ts_c - ts_l)
if diff <= self.tol and diff < best_diff:
best, best_diff = (ts_c, frame), diff
if best is not None:
self.matched.append((ts_l, packet, best[0], best[1]))
def flush(self, max_ts):
self._gc(max_ts + self.window + 1)
return self.matched
時間複雜度:每事件 O(W)
追問:怎麼把 _match_one 降到 O(log W)?答:用 SortedList 依 ts_c 索引,做 lower/upper bound 二分。
Coding 真題 2:路徑點平滑(Trajectory Smoothing)
題目描述
給定 Planner 輸出 waypoints [(x, y, t)],因離散決策抖動,相鄰點速度可能突變。要求滑動視窗加權平滑:
- 視窗大小 k(奇數)
- 中心點權重最大,向兩側線性遞減
- 邊界用最近點鏡像延伸
只能線上維護,每來一個 waypoint 輸出一個平滑點。
解題思路
經典加權平均,加上 Zoox 實務需求:
- 線上 → deque 維護最近 k 點
- 權重歸一化,避免邊界除以 0
- 平滑必須保持單調時間戳,否則下游 controller 會震盪
Python 解法
from collections import deque
class TrajectorySmoother:
def __init__(self, window=5):
assert window % 2 == 1
self.k = window
self.half = window // 2
self.buf = deque()
self.weights = [self.half + 1 - abs(i - self.half) for i in range(window)]
def push(self, x, y, t):
self.buf.append((x, y, t))
if len(self.buf) > self.k:
self.buf.popleft()
return self._smooth()
def _smooth(self):
pts = list(self.buf)
if len(pts) < self.k:
pad = self.k - len(pts)
left = pad // 2
right = pad - left
pts = [pts[0]] * left + pts + [pts[-1]] * right
wsum = sum(self.weights)
sx = sum(p[0] * w for p, w in zip(pts, self.weights)) / wsum
sy = sum(p[1] * w for p, w in zip(pts, self.weights)) / wsum
return (sx, sy, pts[self.half][2])
時間複雜度:每 waypoint O(k) Zoox 加分項:主動提到 B-spline、Savitzky-Golay 作為後續優化,會讓 Planner 團隊面試官眼前一亮。
Robotics 系統設計高頻題
| 題目 | 考察點 |
|---|---|
| 設計 Robotaxi E-Stop(緊急停止)鏈路 | 安全冗餘、雙通道仲裁 |
| 多 sensor 資料如何在 ROS-style topic 分發 | Pub/Sub、QoS、Back-pressure |
| 1TB/小時 log 回放系統 | 分片儲存、時間索引、降採樣 |
| HD Map fleet 內增量分發 | Delta 同步、簽章驗證 |
白板上畫「actor + topic」——Zoox 內部就是 actor-based 框架(LCM/ROS2 風格)。
ML / Perception 專項
Perception 候選人會有一輪純 ML 理論 + 工程:
- 3D Object Detection(PointPillars、CenterPoint、BEVFusion)原理
- 推理優化:TensorRT、量化、ONNX 轉換坑
- 資料增強:自動駕駛場景如何做「夜間合成」「下雨合成」
- Active Learning:億級 frame 中如何挑要標的樣本
問最細的是 evaluation metrics——mAP vs NDS(nuScenes),以及「為什麼 NDS 加權 5 個子指標」。
Behavioral / 價值觀
Zoox 文化關鍵字:
- Customer Obsession(亞馬遜 DNA)
- Earn Trust — 跨團隊衝突如何解決
- Are Right, A Lot — 哪個決策被證明錯誤、如何修正
- Frugality — 怎麼用最小代價驗證 risky idea
每個 BQ STAR 結構 + 3 分鐘內,留時間給面試官追問「如果換另一種方案」。
FAQ
Q1:Zoox 與 Waymo / Cruise 面試難度對比?
演算法純度:Waymo > Cruise > Zoox 工程實務:Zoox > Waymo > Cruise Zoox 的題更接近「明天上車的程式碼」。純 ML 研究背景的候選人,可能在第 4 輪工程化問題卡住。
Q2:Zoox 2026 還在 hiring freeze 後嗎?
2026 Q1 完成 Foster City 商業化首發,目前 Perception / Planning / Vehicle Software 三個團隊仍積極招人,但 Mapping 和 Cloud 名額收緊。申請前建議查 LinkedIn。
Q3:onsite 全部 Zoom 還是現場?
混合:Tech screen 全線上,onsite 預設現場(Foster City),公司報銷機票飯店。偏遠地區候選人可協商改 Zoom,但接受率約 60%。
Q4:用什麼語言寫 coding?
Robotics / Perception / Planning 強烈推薦 C++。 Cloud / Infra / Simulation 可用 Python。 ML Research 用 PyTorch + Python 即可。
Q5:如何準備 ROS / 自動駕駛基礎?
從零開始:
- 讀 ROS2「Concepts」章節(2 小時)
- 跑通 Autoware.Auto demo(半天)
- 讀 Apollo Planning 開源(1 週)
- 看 nuScenes / KITTI README(半小時)
之後就能聊 publisher/subscriber、TF tree、launch file,足以通過 Zoox 基本盤。
Q6:Zoox 招 new grad / intern 嗎?
招。整車工程 + Robotics 背景的 PhD 優先級最高,純 SWE new grad 主要進 Cloud / Tools / Simulation。Intern 每年約 30 人,2025 conversion rate 約 50%。
正在準備 Zoox / Waymo / Cruise 自動駕駛面試?
自動駕駛面試同時考演算法深度 + 系統工程感,純刷題已遠遠不夠。我們整理了五家公司 2026 真題題庫,與 Perception / Planning / Embedded 三大方向的備考路徑,歡迎聯繫。
加微信 Coding0201,取得 Robotaxi 面試真題包。
聯絡方式
Email: [email protected] Telegram: @OAVOProxy