← 返回博客列表 Zoox VO 2026 面试流程深度复盘|Robotaxi 全栈面试 5 大环节 + 真题分析
Zoox

Zoox VO 2026 面试流程深度复盘|Robotaxi 全栈面试 5 大环节 + 真题分析

2026-05-15

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)

题目描述

给定两路时间戳数据流:

要求实现一个 sync 函数:对每一个 LiDAR 包,找到时间戳最接近的 Camera 帧,要求时间差 ≤ 50 ms,否则跳过该 LiDAR 包。最终返回所有匹配对的列表。

数据可能乱序到达,需要在线(streaming)处理。

解题思路

这是一道典型 Zoox 风格题——表面看像 LC 牛 Two Pointer,但加了"流式""乱序""容忍窗口"三个真实工程约束。

  1. deque 维护 camera buffer:丢弃比当前 lidar 时间戳早 50 ms 的帧
  2. 对每个 lidar 包,等到出现一个比它的 camera 帧时再决定(看前一帧还是当前帧更近)
  3. 用 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()    # (ts, frame)
        self.lidar_q = []         # min-heap of (ts, packet)
        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):
        # drop camera frames older than window
        while self.cam_buf and now_ts - self.cam_buf[0][0] > self.window:
            self.cam_buf.popleft()
        # try to match lidar packets safe to commit
        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),W 为窗口内 camera 帧数 面试官追问:怎么用 segment tree / BST 把 _match_one 优化到 O(log W)?回答:SortedList 按 ts_c 索引,二分找 lower/upper bound 即可

Coding 真题 2:路径点平滑(Trajectory Smoothing)

题目描述

给定 Planner 输出的 waypoints 列表 [(x, y, t)],由于离散决策抖动,相邻点间速度可能突变。要求实现一个滑动窗口加权平滑

只能在线维护,每收到一个新 waypoint 输出一个平滑点。

解题思路

经典滑动窗口加权平均,但有 Zoox 的实务需求:

  1. 在线流式 → 用 deque 维护最近 k 个点
  2. 权重做归一化,避免边界处除数为 0
  3. 平滑必须保持单调时间戳,否则下游 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()
        # 三角窗权重:中心 = half+1,向外递减到 1
        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):
        # 边界:buffer 不满时用现有点 + 镜像填充
        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
离线 logging 系统如何回放 1TB/小时 数据 分片存储、时间索引、降采样
HD Map 更新如何在 fleet 内增量分发 Delta 同步、签名校验

建议白板上画清"actor + topic"——Zoox 内部就是 actor-based 框架(类似 LCM/ROS2),系统图用这套语言会非常加分。

ML / Perception 专项

Perception 候选人会有一轮纯 ML 理论 + 工程面试:

问得最细的是 evaluation metrics——mAP vs NDS(nuScenes),以及"为什么 NDS 加权重 5 个子指标"。

Behavioral / 价值观

Zoox 文化关键词:

  1. Customer Obsession(亚马逊 DNA)
  2. Earn Trust — 跨团队冲突如何解决
  3. Are Right, A Lot — 你做过哪个决策最后被证明是错的,怎么修正
  4. Frugality — 怎么用最小代价验证一个 risky idea

每个 BQ 控制在 STAR 结构 + 3 分钟内,留时间给面试官追问"如果当时另一种方案"。


FAQ

Q1:Zoox 和 Waymo / Cruise 的面试难度对比?

算法纯度:Waymo > Cruise > Zoox 工程实务:Zoox > Waymo > Cruise Zoox 的题更贴近"明天上车的代码",不太会出"LC 困难"。但系统设计 + ROS-style 框架理解要求高,做过纯 ML 研究的候选人可能在第 4 轮"卡"在工程化问题上。

Q2:Zoox 2026 是否还在 hiring freeze 后?

2026 Q1 Zoox 完成了 Foster City 商业化首发,目前 Perception / Planning / Vehicle Software 三个团队仍在积极招人,但 Mapping 和 Cloud 团队 headcount 收紧。建议申请前查 LinkedIn 看招聘状态。

Q3:onsite 全部是 Zoom 还是去 Foster City?

混合:Tech screen 全部线上,onsite 默认现场(Foster City),公司报销机票酒店。如果你住在偏远地区,可以协商 onsite 改为 Zoom,但接受率约 60%——hiring manager 会权衡是否需要看你"动手画白板"。

Q4:用什么语言写 coding 题?

Robotics / Perception / Planning 团队强烈推荐 C++——面试官就是用 C++ 写产品代码的。Cloud / Infra / Simulation 团队 Python 可以。ML Research 岗 PyTorch + Python 即可

Q5:如何准备 ROS / 自动驾驶基础?

如果完全没接触过:

  1. 读 ROS2 文档的 "Concepts" 章节(2 小时)
  2. 跑通 Autoware.Auto demo(半天)
  3. 读 Apollo 开源代码的 Planning 模块(1 周)
  4. 看 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 的自动驾驶面试?

自动驾驶面试同时考验"算法深度 + 系统工程感",纯刷题已经远远不够。我们整理了 Zoox / Waymo / Cruise / Aurora / Wayve 五家公司的2026 真题题库Perception / Planning / Embedded 三大方向的备考路径,欢迎联系交流。

立即添加微信 Coding0201获取 Robotaxi 面试真题包

联系方式

Email: [email protected] Telegram: @OAVOProxy