ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

速腾聚创感知算法岗笔试复盘:从点云处理到多传感器融合的核心考点

速腾聚创感知算法岗笔试复盘:从点云处理到多传感器融合的核心考点 2023年秋招那会儿速腾聚创的感知算法岗笔试算是激光雷达赛道里比较有代表性的。如果你准备投自动驾驶、机器人方向的感知算法这套题能帮你摸清企业对候选人的基础要求。我整理一下当时的笔试复盘从题型分布、核心考点到实操技巧都过一遍给后面要参加类似笔试的同学做个参照。我先说结论速腾的笔试不是那种纯刷题就能过的它对工程细节和感知领域的基础概念抠得比较细。选择题、编程题、简答题都有整体题量不算小120分钟大约需要做完60道左右的题目时间分配很关键。下面我按实际答题顺序和知识模块拆开讲。1. 笔试整体拆解题量、时间与复习方向先看整体结构。速腾聚创感知算法岗的笔试我当时拿到的卷子是三类题型混排的单选、多选和编程题。单选和多选占比大概七成剩下的是两道编程题和几道简答。所有题目在在线评测系统里完成需要开启摄像头所以环境要提前弄好。题量方面我数了一下大约有55道单选题、8道多选题、2道编程题和3道简答题。总时间120分钟算下来每道选择题只有1分半左右。这意味着一道题卡超过两分钟后面编程题就很危险。从这个题量能反推考察方向——它不是为了让你拿满分而是为了在有限时间内测试你对核心知识点的反应速度和基础扎实程度。所以复习的时候不要追求偏题怪题把高频考点吃透比什么都管用。我当时根据往届经验列了一个复习优先级优先级知识点模块预估题量分布推荐投入时间占比P0数据结构与算法基础15题 1道编程30%P0矩阵运算、线性代数10题15%P1点云处理与3D感知10题20%P1相机模型、多传感器融合8题15%P2C语言特性7题10%P2机器学习基础5题10%注意这只是我当时的估算每年题目会有浮动。但大方向不会变编程基础、几何基础和感知领域知识是三大支柱。2. 数据结构与算法编程题的实战解法编程题在笔试里分值高、区分度大是我当时最看重的部分。速腾的编程题不考特别难的设计题更偏向工程实现——给你一个场景让你用代码解决问题。2.1 高频考点二叉树与递归第一道编程题通常是二叉树相关。我印象很深刻题目大意是给定一棵二叉树的根节点要求返回所有从根到叶子节点的路径满足路径上节点值之和等于目标值。这类题本质上就是DFS深度优先搜索关键是处理好递归返回条件和路径回溯。我当时用的是C实现核心思路是这样void dfs(TreeNode* root, int targetSum, vectorint path, vectorvectorint res) { if (!root) return; path.push_back(root-val); targetSum - root-val; if (!root-left !root-right targetSum 0) { res.push_back(path); } else { dfs(root-left, targetSum, path, res); dfs(root-right, targetSum, path, res); } path.pop_back(); }有一个特别容易被忽略的点递归完要pop_back回溯。如果你忘了这一行路径会越积越长结果全错。这种错误在本地IDE里不容易发现但在在线评测里直接零分。递归题还有一个常见的优化——剪枝。比如上面这个题如果当前节点是叶子但targetSum还不为0可以直接return不用继续往下走。虽然二叉树场景下这个优化不明显但它能体现你写代码的思考深度。2.2 编程题里隐含的边界条件第二道编程题我记得是数组相关的。大意是给定一个排序数组和一个目标值找出目标值在数组中的起始位置和结束位置要求时间复杂度O(log n)。这道题考察二分查找的变体。很多人会卡在“找右边界”的处理上因为标准二分只能找一个位置。我当时用的方案是写两个二分函数一个找左边界一个找右边界最后判断是否存在。这里有一个我在实际笔试里踩过的坑边界条件判断时数组越界只发生在一个方向上。用left (right - left) / 2而不是(left right) / 2可以避免整数溢出。笔试环境用的是标准编译器不会让你栽在这种细节上但代码质量评价能看出来专业性。2.3 工程实现中的时间和空间取舍除了算法本身编程题还考察基本的工程素养。我记得在做二叉树题时我一开始用的是递归但后来想到如果树很深递归可能导致栈溢出所以又改成了显式栈迭代。这个取舍不是必须的但如果你在注释里简单提一句阅卷人会觉得你考虑问题全面。空间换时间也是一个思路。比如第二道数组题可以先二分找到任意一个等于target的位置然后向两侧线性扩展到边界。时间复杂度最坏是O(n)但平均情况很快而且代码量少很多。在笔试时间紧张的情况下这个方案更容易写对。我的建议是编程题优先保证正确性和可读性不要为了炫技写复杂的数据结构。笔试环境没有调试器你写的不容易出bug就赢了一半。3. 感知算法基础激光雷达与点云处理考点速腾聚创做激光雷达出身所以笔试里点云处理和3D感知的题量不小这也是和其他公司感知岗笔试拉开差距的地方。我建议大家重点复习体素滤波、地面分割、聚类、目标检测、点云配准这些方向。3.1 点云基础操作的高频问法选择题里经常考滤波和采样。比如给定一堆点云用体素滤波降采样时体素大小设置8厘米问的是原理还是效果这类题的实质是在考察你对体素滤波每个步骤的理解。体素滤波首先把空间划分成边长为L的立方体网格然后对每个网格内的点取重心或中心点来替代该网格所有点从而减少点数。再比如点云配准ICP迭代最近点是必考的。有一道多选题问ICP的缺点选项里有“对初始位置敏感”“容易陷入局部最优”“计算量大”“需要特征描述子”。答案是前三个。ICP确实不依赖特征描述子它直接用点的配准关系所以这个选项是干扰项。3.2 3D检测与BEV感知3D目标检测的题我当时也遇到了。选择题问BEV视角下目标检测的常用表示是什么选项包括栅格地图、俯视图特征图、透视投影图、鸟瞰图。正确答案是栅格地图和俯视图特征图。这个考点其实和速腾的主业强相关——激光雷达点云天然适合BEV表示因为它能直接提供物体在三维空间的位置。如果你看过CenterPoint、TransFusion这些经典3D检测方案会发现它们都在BEV空间里做目标检测和跟踪。所以复习时建议把点云转BEV的流程理清楚点云裁剪、离散化、特征编码、特征金字塔。还有一道题问的是Anchor-Based和Anchor-Free的3D检测方法哪个是CenterPoint的核心思想答案是Anchor-Free。这类题考的是你对最新感知方案的敏感度平时多看顶会论文和开源项目会有帮助。3.3 相机模型与多传感器融合虽然速腾做激光雷达但多传感器融合也是感知算法岗的重要工作内容。笔试里相机模型考了一道针孔相机模型中像素坐标(u, v)与相机坐标(X, Y, Z)的转换关系是什么这个考的是内参矩阵。公式是这样的Z * [u, v, 1]^T K * [X, Y, Z]^T其中K是3x3内参矩阵包含fx、fy、cx、cy。外参则是把世界坐标转到相机坐标的旋转平移矩阵。如果你把坐标变换的链路搞清楚了这类题基本不会丢分。多传感器融合还考了时间同步问题。问激光雷达和相机帧率不一致时常用处理方式有哪些选项包括时间戳拟合、插值对齐、丢弃不匹配帧、使用全局时钟。合理答案是时间戳拟合和插值对齐。这个在实际工程中非常常见比如激光雷达10Hz、相机30Hz要把两者对齐到同一时间戳才能做融合。3.4 激光雷达SLAM与定位如果是做自动驾驶或机器人的感知算法SLAM相关也值得复习。我记得有一道题问LIO-SAM里前端配准用的方法是什么。答案是NDT或ICP变体结合IMU预积分提供初始位姿。这个需要你了解激光惯性里程计的基本框架前端配准、后端优化、回环检测、因子图。LIO-SAM是当前比较流行的开源方案就算没有实际部署过至少要知道它的原理模块和输入输出数据类型。我当时在准备这部分的时候还专门把LOAM、LIO-SAM、FAST-LIO的主流方案对比了一遍整理了一个表格方案输入前端后端特点LOAM激光雷达特征点配准无回环经典但缺少回环LIO-SAM激光雷达IMU特征点IMU预积分因子图轻量、适合嵌入式FAST-LIO激光雷达IMU紧耦合迭代误差状态卡尔曼滤波快速、鲁棒笔试不一定会考到这么细但多一份准备遇到简答题时就能展开说给阅卷人留下好印象。4. 笔试实操复盘从刷题到代码风格的实战建议这一节我讲讲笔试现场的经验包括时间分配、编程环境准备和心态调整。这些实操层面的东西往往是你和同样基础的人拉开差距的关键。4.1 时间分配先做会做的再啃硬骨头我的建议是选择题控制在60分钟内完成编程题留40分钟简答题留20分钟。别按题目顺序做先快速扫描整套卷子标记出简单的题优先把确定性分数拿到手。我当时是先花50分钟做完了所有选择和大部分简答然后开始写编程题。因为选择题里有些计算量大的题目很浪费时间比如矩阵特征值计算我当时直接跳过等编程题写完了再回头算。最终两题都AC了选择题虽然有两三个拿不准但整体节奏没乱。有一个小技巧选择题里如果选项中有两个说法意思相近通常两个都是错的如果有一个选项明显和其他选项风格不同往往就是正确答案。这不是百分百准但在你不确定时可以辅助判断。4.2 编程环境的坑提前熟悉在线评测规则速腾用的在线评测系统我不太记得具体名字但有一个共同特点代码提交后可能不会返回具体错误信息只给你过没过。所以你不能依赖调试信息得自己写代码时格外小心。我建议你平时练习时就用标准输入输出写代码不要依赖IDE自动补全。笔试时的代码编辑器通常很朴素没有自动补全和语法高亮如果你平时习惯了IDE提示现场会非常别扭。我吃过这个亏第一次秋招笔试时因为不习惯裸编辑器一个简单的循环写错好几次。多练习手写代码特别是链表、二叉树、动态规划这些高频题型的类定义和头文件做到能默写。4.3 简答题把思路写清楚比堆术语更重要速腾的简答题不要求你写出一篇小论文但会考察思路是否清晰。我记得有一道题是如何从激光点云中提取地面点我当时的回答是三步先对点云进行体素滤波然后用平面拟合或栅格高度差法处理最后对非地面点做聚类。阅卷人更看重的是你有没有结构化的思路而不是是否记得某个具体算法的公式。所以我建议答题格式是先解释这个问题本质是什么比如地面提取本质是点云二分类再分步骤说明方法最后补充一两个注意事项比如斜坡场景怎么处理这个答题结构能体现你的逻辑能力也让阅卷人在一分钟内抓住你的水平。我在后面答题时基本都按这个格式来。5. 我当时踩过的坑和备考建议最后分享几个我在速腾以及其他感知算法岗笔试中踩过的坑希望能帮你们避开。5.1 坑一重刷题轻基础我身边很多同学准备秋招时疯狂刷leetcode但笔试时发现速腾的选择题考的是矩阵变换、相机内参、点云体素滤波这类工程基础leetcode上的算法题反而只占一部分。如果你只刷题不补充基础知识选择题会丢很多分。建议准备一个本子把常用公式和概念整理出来比如相机内参外参的矩阵形式旋转矩阵、四元数、欧拉角互转体素滤波、统计滤波、半径滤波的原理和优劣3D IoU计算和BEV框的转换NMS和Soft-NMS的实现点云配准ICP和NDT的流程这些不要求全部背熟但看到题目要能快速反应。5.2 坑二编程题上来就写代码我第二次笔试时编程题上来就冥思苦想直接写代码结果写了一堆逻辑又推翻浪费了十几分钟。后来我学会了先在草稿纸上画状态转移图或流程伪代码把核心逻辑理清楚再动手。即使在线笔试没有草稿纸也有在线记事本或者评论区域可以写。先写伪代码的好处是你把问题拆解成几个小步骤后写代码时思路会清晰很多不容易遗漏边界情况。5.3 坑三忽略C的现代特性现在的算法岗笔试C11/14/17已经是主流。选择题里考过auto、std::vector的emplace_back与push_back区别、智能指针shared_ptr的循环引用问题这些都是实际工程中常见的。如果你只熟悉C98这部分会很吃亏。建议复习一下std::shared_ptr和std::unique_ptr的区别lambda表达式捕获方式std::move和完美转发unordered_map底层原理并发编程中的mutex和condition_variable这些不一定会全考但考到的概率不小而且能体现你的工程能力。5.4 最后的方法建议用项目经验反哺笔试准备如果你有过激光雷达感知相关的项目经验无论是自动驾驶、机器人还是测绘项目都尽量在准备笔试时调出来看看。面试官不一定在笔试后马上看你的分数但如果你在简答题里能结合项目实例说明方法阅卷人会觉得你是真做过而不是背书的。我当时在速腾笔试前正好在做一个基于雷达点云的目标检测项目虽然只是用OpenPCDet跑了一个CenterPoint模型但对点云处理流程、检测流程、评价指标这些都有直观印象。遇到选择题时很多选项我一眼就能排除因为我知道实际跑模型时哪个参数是干这个的。备考笔试不只是一个应试过程其实是帮你系统梳理感知算法知识体系的机会。就算最后没拿到这个offer这套知识体系在你后面面试其他自动驾驶公司时都会用到。我现在回头看速腾那场笔试最难的不是某道题而是如何在有限时间内稳定输出。把基础打牢、重点突出、节奏稳住这个岗位的笔试并不会成为你秋招路上的拦路虎。
返回列表