← 返回博客列表 WeRide 文远知行 OA 真题解析:SDE 岗位算法面经|一亩三分地
WeRide

WeRide 文远知行 OA 真题解析:SDE 岗位算法面经|一亩三分地

2026-05-12

WeRide(文远知行)是全球领先的 L4 级自动驾驶公司,总部位于广州,在硅谷、北京等地设有研发中心。其 SDE 岗位 OA 题目融合了自动驾驶场景经典算法,考察候选人在实际工程问题中的建模与编码能力。本文基于一亩三分地最新面经,系统梳理 WeRide OA 的核心考点。

WeRide OA 概览

维度 详情
平台 HackerRank / 自研平台
时长 60-90 分钟
题量 2-3 道编程题
难度 Medium
考察重点 图算法、贪心、模拟、DP

题型一:图像处理调度(Image Processing Scheduling)

题目描述

自动驾驶系统需要对摄像头采集的图像进行多种滤镜处理。每张图像有指定的处理时间窗口 [start, end],每种滤镜有不同的处理成本。需要设计一个调度策略,在满足时间约束的前提下,最小化总处理成本。

返回最小成本对 (10^9 + 7) 取模的结果。

解题思路

这是一个区间调度 + 贪心/DP 问题:

  1. 将图像按截止时间排序
  2. 对每张图像,选择成本最低的可用滤镜
  3. 使用优先队列维护当前可用的处理资源

Python 解法

import heapq

MOD = 10**9 + 7

def min_processing_cost(images, filters):
    """
    images: [(start, end, filter_requirements)]
    filters: [(cost, processing_time)]
    """
    # 按截止时间排序
    images.sort(key=lambda x: x[1])
    
    total_cost = 0
    available = []  # min-heap by cost
    
    for start, end, req in images:
        # 找到满足时间窗口且成本最低的滤镜
        valid_filters = []
        for cost, proc_time in filters:
            if proc_time <= end - start:
                valid_filters.append(cost)
        
        if valid_filters:
            total_cost = (total_cost + min(valid_filters)) % MOD
        else:
            return -1  # 无法完成处理
    
    return total_cost

题型二:最短路径规划(Shortest Route Planning)

题目描述

给定一个城市路网图,节点代表路口,边代表道路(带权重表示通行时间)。自动驾驶车辆需要从起点到终点,但部分道路会动态变化(如交通管制)。需要找到考虑动态变化后的最短路径。

解题思路

这是 Dijkstra + 动态边权 的变体:

  1. 使用改进的 Dijkstra 算法
  2. 在松弛操作中考虑时间依赖的边权变化
  3. 使用优先队列优化

Python 解法

import heapq
from collections import defaultdict

def shortest_path_dynamic(n, edges, changes, start, end):
    """
    n: 节点数
    edges: [(u, v, weight)]
    changes: [(time, u, v, new_weight)] 道路变化
    start, end: 起终点
    """
    graph = defaultdict(list)
    for u, v, w in edges:
        graph[u].append((v, w))
        graph[v].append((u, w))
    
    # 预处理道路变化
    change_map = {}
    for time, u, v, new_w in changes:
        change_map[(min(u,v), max(u,v), time)] = new_w
    
    # Dijkstra with time-dependent weights
    dist = [float('inf')] * n
    dist[start] = 0
    pq = [(0, start)]
    
    while pq:
        d, u = heapq.heappop(pq)
        if d > dist[u]:
            continue
        if u == end:
            return d
        
        for v, w in graph[u]:
            # 检查是否有动态变化
            edge_key = (min(u,v), max(u,v))
            current_time = d
            
            # 查找在当前时间点是否有边权变化
            effective_w = w
            for (eu, ev, t), nw in change_map.items():
                if (eu, ev) == edge_key and t <= current_time:
                    effective_w = nw
            
            new_dist = d + effective_w
            if new_dist < dist[v]:
                dist[v] = new_dist
                heapq.heappush(pq, (new_dist, v))
    
    return dist[end] if dist[end] != float('inf') else -1

时间复杂度:O((V + E) log V)
空间复杂度:O(V + E)

题型三:传感器数据融合

题目描述

自动驾驶车辆配备多个传感器(LiDAR、Camera、Radar),每个传感器以不同频率产生数据帧。需要设计一个数据融合算法,将时间戳最接近的多传感器数据帧配对,使得总时间偏差最小。

解题思路

这是一个双指针 / 排序 + 贪心问题:

def sensor_fusion(lidar_ts, camera_ts, radar_ts):
    """
    将三种传感器的时间戳进行最优配对
    返回配对方案使得总时间偏差最小
    """
    lidar_ts.sort()
    camera_ts.sort()
    radar_ts.sort()
    
    pairs = []
    i, j, k = 0, 0, 0
    
    while i < len(lidar_ts) and j < len(camera_ts) and k < len(radar_ts):
        # 找到时间戳最接近的三元组
        max_diff = max(lidar_ts[i], camera_ts[j], radar_ts[k]) - \
                   min(lidar_ts[i], camera_ts[j], radar_ts[k])
        pairs.append((lidar_ts[i], camera_ts[j], radar_ts[k], max_diff))
        
        # 推进时间戳最小的指针
        min_val = min(lidar_ts[i], camera_ts[j], radar_ts[k])
        if lidar_ts[i] == min_val:
            i += 1
        elif camera_ts[j] == min_val:
            j += 1
        else:
            k += 1
    
    return sum(p[3] for p in pairs)

WeRide 面试准备建议

技术栈要求

面试流程

  1. OA(1-2 周内完成)
  2. 技术电话面(1 轮,45 分钟)
  3. 现场面试(3-4 轮,含系统设计)
  4. 团队匹配

FAQ

WeRide OA 考什么类型的题?

WeRide OA 主要考察图算法(最短路径、BFS/DFS)、贪心调度、动态规划等。题目通常会包装成自动驾驶相关的场景,如路径规划、传感器数据处理、图像处理调度等。

WeRide 面试用什么语言?

OA 阶段支持多种语言(Python、C++、Java),但后续技术面试更偏向 C++,因为自动驾驶系统对性能要求极高。如果你主要使用 Python,OA 阶段没有问题。

WeRide 和其他自动驾驶公司(Waymo、Cruise)的面试有什么区别?

WeRide 的面试更注重工程实现能力和对自动驾驶全栈的理解,题目难度相对 Waymo 略低,但对系统设计和实时性的考察更深入。同时 WeRide 有中文面试选项。

WeRide 的 OA 通过率大概是多少?

根据一亩三分地的面经反馈,WeRide OA 通过率约 40-50%,题目难度中等偏上。关键是要在限定时间内写出正确且高效的代码。


正在准备 WeRide 面试?

oavoservice 提供专业的自动驾驶公司 OA/VO 辅助服务,覆盖 WeRide、Waymo、Cruise、Pony.ai 等头部公司。我们的团队熟悉自动驾驶领域的算法面试特点。

👉 立即添加微信:Coding0201获取真题与辅助方案


联系方式

Email: [email protected]
Telegram: @OAVOProxy