WeRide(文遠知行)是國內首批拿到 Robotaxi 商業化牌照的自駕車公司,近兩年在矽谷辦公室也大幅擴招 SDE / MLE。一畝三分地最近的 WeRide 面經裡,OA 題目帶有非常明顯的「自駕車味道」:感測器融合、點雲聚類、最短路徑規劃。本文按高頻度排序拆解題型,並補充 VO代面 / VO輔助 的實際準備路徑。
WeRide OA 概覽
| 維度 | 詳情 |
|---|---|
| 平台 | CodeSignal / HackerRank(不同職位有差異) |
| 時長 | 70-90 分鐘 |
| 題量 | 3 題(1 簡單 + 2 中等-中等偏難) |
| 難度 | LC Medium 為主,少量 Hard |
| 考察方向 | 圖論、模擬、幾何、字串 |
題型一:感測器資料滑動視窗去噪
題目描述
LiDAR / IMU 串流資料帶有突發雜訊。給定資料流 data[] 和視窗長度 k,請輸出每個長度為 k 的視窗的「截尾中位數」(去掉最大/最小後求均值)。
思路
- 維護一個滑動視窗的有序結構(
SortedList) - 每次視窗右移:插入 1 個、刪除 1 個
- 截尾後求和需要 O(1),所以用「總和 − 最大 − 最小」即可
Python 解法
from sortedcontainers import SortedList
def trimmed_mean_window(data, k):
if len(data) < k:
return []
sl = SortedList(data[:k])
window_sum = sum(data[:k])
res = [(window_sum - sl[0] - sl[-1]) / (k - 2)]
for i in range(k, len(data)):
sl.remove(data[i - k])
window_sum -= data[i - k]
sl.add(data[i])
window_sum += data[i]
res.append((window_sum - sl[0] - sl[-1]) / (k - 2))
return res
時間複雜度:O(n log k) 空間複雜度:O(k)
題型二:高精地圖最短路徑(帶充電約束)
題目描述
Robotaxi 在城市圖中跑單。節點 = 路口;邊 = 道路(帶耗電量 cost)。車輛電池容量 B,特定節點可充電(瞬時回滿)。求起點到終點的最少道路代價路徑,沿途任意時刻電量 ≥ 0。
思路
- 狀態:
(節點, 當前電量) - 在該狀態空間上跑 Dijkstra
- 充電站節點:訪問後電量直接置為
B
Python 解法
import heapq
def min_cost_with_battery(graph, n, src, dst, B, chargers):
# graph[u] = [(v, cost, energy_drop)]
pq = [(0, src, B)]
visited = {}
while pq:
cost, u, e = heapq.heappop(pq)
if (u, e) in visited and visited[(u, e)] <= cost:
continue
visited[(u, e)] = cost
if u == dst:
return cost
for v, w, drop in graph[u]:
ne = e - drop
if ne < 0:
continue
if v in chargers:
ne = B
heapq.heappush(pq, (cost + w, v, ne))
return -1
時間複雜度:O(B · E log(B · V))
題型三:點雲連通分量計數
題目描述
二維格網 grid 上有 0/1 表示障礙物的佔據情況;回傳連通分量個數(4-鄰接)。這是 LeetCode 200 的變體,但 WeRide 通常要求支援後續動態新增 / 刪除點。
思路
- 靜態部分:BFS / DFS 即可
- 動態部分:並查集(路徑壓縮 + 按秩合併)
- 注意:刪除點時不能輕易回滾 DSU;常見做法是「時間旅行並查集」或者重建
Python 解法(靜態)
def count_clusters(grid):
if not grid:
return 0
R, C = len(grid), len(grid[0])
seen = [[False] * C for _ in range(R)]
cnt = 0
for i in range(R):
for j in range(C):
if grid[i][j] == 1 and not seen[i][j]:
cnt += 1
stack = [(i, j)]
while stack:
x, y = stack.pop()
if 0 <= x < R and 0 <= y < C and grid[x][y] == 1 and not seen[x][y]:
seen[x][y] = True
stack.extend([(x+1,y),(x-1,y),(x,y+1),(x,y-1)])
return cnt
一畝三分地高頻題速查
| 題型 | 頻率 | 關鍵技巧 |
|---|---|---|
| 感測器去噪 / 滑動視窗 | ★★★★ | SortedList |
| 圖最短路徑(帶約束) | ★★★★★ | Dijkstra + 狀態擴展 |
| 點雲聚類 / 連通分量 | ★★★★ | BFS / DSU |
| 字串日誌解析 | ★★★ | 正則 / 狀態機 |
| 幾何(凸包、最近點對) | ★★ | 分治 |
VO 流程與 VO代面 / VO輔助
WeRide 北美 VO 通常 4-5 輪:
- 演算法面:LeetCode Medium-Hard
- 系統設計:感知 / 規劃 / 控制中的一個子系統
- C++ / Python 深度:記憶體模型、移動語意、ROS 經驗
- 行為面:跨組協作、debug 高壓情境
- HM / 團隊匹配
oavoservice 的 VO代面 + VO輔助 一體化服務
針對 WeRide 這種 4-5 輪、多領域(演算法 + 系統設計 + C++/ROS + 行為)的 VO,oavoservice 提供完整套餐:
- VO輔助 / mock:把一畝三分地最近 6 個月 WeRide VO 帖整理成「問題集」,mentor 按真實節奏出題 + 提示,結束後錄影複盤
- VO代面 / 即時輔助:面試當天提供即時答題輔助與思路核對,特別針對感知 / 規劃 / 控制類系統設計題
- 行為面劇本:根據 WeRide 團隊風格客製 STAR 故事
- 白板回放:mentor 針對系統設計表達漏洞,逐句打磨
具體方案與報價,加微信 Coding0201 溝通。
6 天衝刺方案
| 天數 | 任務 |
|---|---|
| D1 | 一畝三分地 WeRide 帖按題型分桶(圖、滑動視窗、幾何) |
| D2 | Dijkstra / Bellman-Ford / SPFA 各 1 題,狀態空間擴展練習 |
| D3 | LeetCode 200 / 695 / 547 + 動態版變體 |
| D4 | 系統設計:感知 → 規劃 → 控制管線 |
| D5 | C++ / ROS 基礎回顧,必要時拿出舊專案 |
| D6 | 行為面 STAR:上線事故、跨組配合各 2 例 |
FAQ
WeRide 一畝三分地的 OA 帖能直接背嗎?
不能直接背。WeRide 題庫每個 batch 都會換 30% 左右,但主題(圖演算法 + 滑動視窗 + 模擬)非常穩定。背模板和思路比背題面更高效。
WeRide SDE 和 MLE 的 OA 有什麼區別?
SDE 偏經典資料結構(圖、字串、堆疊/堆);MLE 偏機器學習 pipeline、點雲處理與簡單機率題。兩者都會出至少一道帶「自駕車味道」的場景題。
沒有自駕車背景能投 WeRide 嗎?
可以。WeRide 北美職位主要看通用 SDE 能力,自駕車領域知識可以透過 KITTI / Apollo / Autoware 等開源專案快速補;面試官更看重你能否用熟悉的工具解決新問題。
WeRide OA 沒過冷卻期多長?
一般 6 個月。換職位(例如從 Infra 改投 Perception)通常不算同一池子,可以更早再投。
正在準備 WeRide SDE OA / VO?
oavoservice 長期追蹤 WeRide / Cruise / Waymo / Pony.ai 等自駕車公司的 OA + VO 真題。我們的 mentor 來自一線自駕車團隊,可提供題型分桶、限時模擬、系統設計複盤、行為面錄影回饋等 VO輔助 服務。
👉 立即加入微信:Coding0201,獲取 WeRide 高頻題與 VO輔助方案。
聯絡方式
Email: [email protected]
Telegram: @OAVOProxy