自动驾驶slam算法面经汇总
【2024元戎校招投递地址】
点我,投递的同学,在下方回复:名字简称+地址方便确认是否投递成功,例如:xyz + 深圳
或进入招聘官网直接投递,记得填上内推码:NTAEFzR
元戎启行
23.8.19 出自
一个小时主要聊了聊项目
项目就不说了,主要问了问标定和实习项目
问了slam几个八股题
求dRP/dR的扰动模型还是啥,这部分没仔细看过直说不会
写重投影误差公式uv-KTcwPw
一个曲线拟合的问题,让写残差,就和14讲上的差不多
存在误匹配错误点啥的怎么办
1.鲁棒核函数
2.ransac
3.多次优化根据重投影误差晒出外点
说这个问题答的还比较全面
21.10.14出自
缺陷是什么
kd-tree当维度很大时怎么办?
我看你还学过矩阵分析,你知道哪些矩阵分解的方法?
特征值的意义是什么?为什么要做特征值分解?
奇异值分解的意义是什么?
你说一下优化算法吧,牛顿法和G-N区别是啥?L-M的pipeline是什么?
你了解到的视觉slam系统有哪些?
计算点云的协方差矩阵
你说一下方差是怎么算的吧?
注释:点云协方差矩阵是要去中心化的。。来计算均值。。大意了
21.07.21 出自
面试体验极佳,一共用时一小时,面试官准时到
所有项目简单过了一遍,没有着重于深挖某一个项目,主要check自己是否做过简历里面写的项目
没有coding,有公式推导。
然后大约十几分钟聊他们的业务以及业务难点
公式推导
经过旋转矩阵变换后的点对旋转矩阵的偏导数,使用扰动模型的右乘进行求解
自己就差最后一步没有推导出来,可惜有点
滴滴
23.8.9出自
一面
简单聊一聊项目
H矩阵的稀疏性和边缘化操作
编程实现vector的增删改查
二面
深挖项目,直击灵魂
编程实现第一象限两个射线夹几个圆的最优解
只写出一种情况,没考虑到斜线
图森未来
23.6.15出自
1 自我介绍
2 问上一段实习做了什么,再深入提问。
算法评估过程中,你用过什么slam算法对自己的数据做验证。如何评判他们之间的优劣性。
如何对传感器精度做验证,你们怎么知道自己数据的ground true。
具体说说你完成的框架融合,包括融合初始化,跟踪等细节
上一段实习发表的专利细节。
imu为什么要做预积分,如果你要观测,其实直接积分可以得到(我给他列举了好几个点,加某些论文和算法中的具体实现细节)
个人论文细节提问。包括算法优势,创新点
神经辐射场的发展有了解吗,根据你的了解谈一谈。(从nerf经典论文谈起,他的思想方法,以及发展到如今的思想方法,存在的可用方向。(神经辐射场是一个从隐式转向显示加速的发展过程))
项目环节提问。包括粒子滤波,神经辐射场结合粒子滤波定位。动态slam场景的处理方式等等。一些优化器的使用方法。
2 面 (coding 面)
不是力扣题,是面试官自己想的,是一个开发组的老负责人,不会算法(这里的算法不是说的数据结构那些)。所以二面主要围绕c++功底,然后做了两个题(我直接秒了)。印象最深的是要我推vector中push_back的每次操作平均复杂度。
3面 ,评估后不3面,直接发offer了。
19.10.2出自
一面技术,二面工程,三面还是技术
### 一面(50min) - 实习做了什么? - 长廊问题怎么办? - 为什要选用yolo这个模型? - 动态SLAM的思路?与基础矩阵分割相比有什么区别?什么是三角剖分?与深度学习方法相比的优势? - 霍夫变换的原理? 单应矩阵为什么只有8个自由度? - RANSAC - ORBSLAM的初始化步骤 - 怎么用H的稀疏性加速? - 滑动窗口中的边缘化?
- R的性质,李群
### 二面(60min) - 纯代码面,手撕两道编程题。记得其中一道与flood fill类似。 - git的基本原理以及相关操作
- 还有一些C++基本知识
### 三面(60min) - PnP求解最少需要几个点?(4个,3个求解,1个验证)只有一个点的自由度是多少?两个点呢? - 二维码恢复相对位置,六个自由度,哪个自由度上对噪声比较敏感? - 怎么用EKF融合多传感器信息? - 单目视觉如何测量深度? - 相机内参K的单位。
- 如何通过光流一致性剔除动态物体?
毫末智行
23.3.4出自
一面
- 自己对loam系列算法的改进
- 实际部署loam系列算法遇到的问题
- 部署激光slam算法的误差精度
- 雷达异常点的处理
- fast-lio与loam系列的不同,imu的处理方法
反问
- 正式产品落地中,导航定位部分与ros平台的amcl这类定位方法的区别在哪?
- 外地实习会有房补吗?
二面(复试)
面试官是项目总负责人,类似产品经理,不是预想的工程师,提问的专业性和深度一般,聚焦于我对实际项目和工程经验的把握与认知,碰巧我提到的一些关于点云处理改进方法与面试官的项目有交叉,面试整体比较顺利,20min不到就开始问我具体的意愿,以及什么时候到岗。
工程经验
- lego-loam改进:①地面点云优化处理;②双向边界去除动态噪点
- 传感器使用经验:GPS和激光雷达、IMU、轮式里程计
项目介绍
- 道路车道线点云标注和静态障碍物的激光SFM
- 室内地下停车场的视觉SFM
零跑汽车
22.10.12出自
一面
一、自我介绍
二、 深挖项目、主要负责哪块?
三、ICP流程
四、C++掌握如何
五、对ORBSLAM2的理解
六、了解激光SLAM吗
七、深度学习模型做了什么?
八、约了第二天的手撕代码。。。。哎。。。终归是我不配了,一个一面都好难啊
蔚来
22.9.21出自
开头项目
问在上家公司中orb3的slam框架,如何存储关键帧,地图点及其数据结构;
1. 描述一下关键帧是什么?有什么用?如何选择关键帧?
关键帧相当于slam的骨架,是在局部一系列普通帧中选出一帧作为局部帧的代表,记录局部信息。举例来说,摄像头放在原处不动,普通帧还是要记录的,但关键帧因为总看到原场景,所以不会增加。 三角化需要一定程度的共视区域,所以普通帧每2帧之间会存在大量的信息冗余,如果所有帧全部参与计算,不仅浪费了算力,对内存也是极大的考验,这一点在前端VO递归处理方式中表现不明显,但在后端优化里是一个大问题,所以关键帧主要作用是面向后端优化的算力与精度的折中。此外,关键帧选择时还会对图片质量、特征点质量等进行考察,一定程度上也发挥了滤波的作用,防止无用的或错误的信息进入优化过程而破坏定位建图的准确性。选择关键帧主要从关键帧自身和关键帧与其他关键帧的关系2方面来考虑。一方面,关键帧自身质量要好,例如不能是非常模糊的图像、特征点数量要充足、特征点分布要尽量均匀等等;另一方面,关键帧与其他关键帧之间的关系,需要和局部地图中的其他关键帧有少量的共视关系,但大部分特征点是新特征点,以达到既存在约束,又尽量少的信息冗余的效果,例如局部地图点投影到此帧的点数低于一个阈值或前一个关键帧的特征点在此帧里已经有90%观测不到等等。在关键帧的运用上,orbslam做的非常好,尤其是在回环检测中使用了以关键帧为代表的帧“簇”的概念,回环筛选中有一步将关键帧前后10帧为一组,计算组内总分,以最高分的组的0.75为阈值,滤除一些组,再在剩下的组内各自找最高分的一帧作为备选帧,这个方法非常好地诠释了“关键帧代表局部”的这个理念。
2. ORB-SLAM初始化的时候为什么要同时计算H矩阵和F矩阵?
3. 什么是ORB特征,ORB特征的旋转不变性是如何做的,BRIEF算子是怎么提取的。如何均匀化的?
特征点由关键点和描述子组成,关键点是该特征点在图像中的位置,有些还包括方向、大小等信息,描述子是用来描述该关键点周围像素的一种描述方法。ORB使用Oriented FAST特征点和改进的BRIEF描述子(一种二进制描述子),尺度不变性由构建图像金字塔,并在金字塔每层检测焦点;旋转式用灰度质心描述ORB使用四叉树均匀分布特征点,保证鲁棒性
4. ORB-SLAM的共视图是什么结构?内部如何存储的?
参考答案链接共视图和生成树结构。父关键帧和子关键帧,父关键帧为共视程度最高的那个关键帧。增删关键帧采用最小生成树算法中的加边法重新构建生成树结构: 每次循环取权重最高的候选边建立父子连接关系,并将新加入生成树的子节点到加入候选父节点集合
算法与数据结构问题
随便出题(并不,如果多看面经的话这个是经典题目了),问了个最优化方法解开根号,最后用二分法做了。
牛顿法
一阶情况链接 这个是牛顿法,用切线做,每次找切线的x轴点,如果相邻点y差足够小停止迭代。虽然是求y=根号x,但是可以反过来求f(x) = x² - a,存在x,f(x) < 1-e7,那么x就是开根号后的值。这样目标函数就可以求斜率了,切线公式 y - xi² + a = 2xi * (x - x); 则与x轴交点为(0.5 * (xi + a / xi), 0).迭代函数初值x0 = a / 2, 停止条件是 abs(f(x)) < 1-e7, 返回值是 xi+1 = 0.5 * (xi + a / xi);二阶情况链接 海塞矩阵
高斯牛顿法
高斯-牛顿法(Gauss–Newton algorithm)是牛顿法的特例,它是牛顿法的修改版,用于寻找函数的最小值。只能用于解决最小二乘问题。优点是,不需要二阶导数。
小马智行
21.10.8出自
#小马智行#十一国庆节前的最后一天,终于拿到小马意向,2022秋招终于结束啦~分享面经希望能帮到后面的小伙伴~
先说下个人情况吧,985本硕非科班,暑期有一段阿里的实习经历。
自我介绍
做自动驾驶车时候MPC控制的过程,目标函数,方法等
Coding:
- 忘记了,应该不难
- 和为偶数的子数组个数(O(n)的复杂度)
- 做得快加道附加题:和为偶数的子序列个数(O(n)的复杂度)
自我介绍
做自动驾驶车时候所用planning的方法
Coding:
lc 1139 最大的以 1 为边界的正方形,要求用 动态规划的方向来求解
自我介绍
做自动驾驶车时候所用的SLAM算法等
Coding:
与 lc 剑指offer 26 树的子结构 相似,判断A树中是否存在与B树相同的树结构
例如
给定的树 A:
3
/ \
4 5
/ \
1 2
给定的树 B:
3
/ \
1 2
则B是A的子树,具有相同的子结构
基础知识:
A,B~U(0,1),E(max(A,B))是多少?
没做出来,面试官又出了几个相关的数学题,还好基本都答上了。
自我介绍
项目介绍,挖的非常细,每个项目每个技术细节都会问
自我介绍
实习,项目经历
谈谈入职的工作内容,以及一些对自动驾驶行业的理解
说实话小马的面试考察是全方面的,尤其注是coding能力,但同时面试体验也是最佳的,能很明显的感受到面试官能力很强,很平和自如地提醒解题方案。
大疆
19.10.2出自
整体来说,大疆面试官的水平还是非常高的。一面项目技术,二面工程,三面价值观、综合能力。 一面(50min) - 你实习做了些什么? - 谈了谈自己的项目相关 - ORBSLAM的哪个部分最耗时?后端H矩阵求解的算法复杂度是多少?如何去加速后端求解? - 如何求解线性方程Ax=b?SVD和QR分解哪个更快? 二面(30min) - ORBSLAM怎么克服尺度漂移问题?回环原理讲一下,要估计哪些量? - 做了一道题,嵌入式编程相关,设计位运算。 - 嵌入式方面,DRAM和SRAM的区别,速度差多少? - 因为项目用了TX2,问到TX2有哪些模块? - 对大疆产品有什么看法?
三面(30min) - 介绍自己最自豪的一个项目 - 团队合作中有什么困难?如何去解决? - 你对未来无人机的畅想,如果进入大疆,你希望无人机做成什么样子? - 阐述一下对SLAM未来的看法,在大疆有哪些应用?
- 阐述一下个人性格的优缺点?
华为
19.10.2出自
华为的面试体验非常好,面试官都非常nice
### 一面(30min) - 做了哪些项目,一个一个讲,讲了很多,主要考察项目有没有做过。
- 做了一道编程题,全排列相关。
### 二面(30min) - 聊一聊做过的项目,里面遇到了哪些工程问题?基本也是顺着项目问。 - STL中的内存管理相关。
- 做了一道编程题,字符串相关。
### 三面(30min) - 做过的最自豪的项目是什么?项目设计架构图?无人机与无人驾驶相比,架构上有什么异同点?
- 你对无人驾驶的未来有什么看法?为什么要选择来华为?
海康
19.10.2出自
一面电话面,二面现场面,三面HR
### 一面(30min) - 做了哪些项目,多传感器融合了解吗? - 跑过哪些开源算法,是否做过对比,各有什么优劣? - 对于光照明暗变化、动态场景,视觉SLAM如何去解决?
- 视觉SLAM的行业应用有哪些,阐述一下语义SLAM的未来应用优势与劣势?
### 二面(50min) - 做了哪些项目,问得非常细,会抠项目的细节问。 - 你做的项目未来还有什么改进点? - 项目合作中,你担任什么角色?如何当好负责人?
- 一道编程题,位运算相关。
### 三面(15min) - 项目合作细节,如何处理项目成员之间的关系 - 个人有什么比较黑暗的时期,讲一讲
- 未来职业规划
地平线
19.10.2出自
一面项目,二面代码,三面问得很细
### 一面(60min) - 聊项目 - 光流原理 - 矩阵求逆的复杂度?矩阵分解有哪些方法,复杂度是多少?工程上哪种方法最通用,为什么? - H和F矩阵的自由度。 - IMU预积分了解吗?
- MLE和MAP的关系。
### 二面(60min) - 三道代码题,hashmap,动态规划相关。 - C++11如何有效防止内存泄***r /> - 智能指针,weak_ptr讲一下 - array和数组有什么区别?
- C++如何高效管理动态内存(关于这个问题我真的很迷)
### 三面(60min) - 会顺着项目问。 - opencv、eigen、PCL库了解吗?PCL库里bug挺多,你说说有哪些bug。 - ORBSLAM的代码有哪些需要改进的地方? - BA中,海塞矩阵的求逆有哪些可以加速的方法,除了边缘化和GPU,有哪些数值计算的方式能够加速? - ceres库的自动求解雅克比的原理?
- ROS中,node属于多进程,如何把两个node放在一个进程中?
Momenta
19.10.2出自
实习面试,一面项目,二面工程,三面综合,面试官人都非常nice,面试体验极佳。
### 一面(60min) - 介绍项目,项目思想,展开讨论 - 选一个最熟悉的开源框架讲讲 - 当你写BA的时候, 如果发现问题,你一般怎么debug
- ORBSLAM还有什么改进的空间 除了回环检测之外,orbslam怎么消除累计误差
### 二面(40min) - 问项目中的code - 讲一下lamda函数 - 虚函数表 - 两道代码题,一道是用类来实现一个计时器。另一道是动态规划题。
- 根据编程中的知识点问一些问题,类的生存周期,类的内存储存在哪?
### 三面(30min) - 基本上是顺着项目问 - 未来职业规划
- 对momenta有什么看法?
滴滴
19.10.2出自
自动驾驶部门,总共四面,一面简历面,剩下三面都是代码+项目。
### 一面(60min) - 聊项目 - roslaunch和rosrun的区别
- 多个有序链表合并成一个有序链表,写代码。
### 二、三面(90min) - 项目+代码
- 高精地图的建图步骤有哪些?
### 四面(60min) - 如何设计一个视觉+IMU+RTK+Lidar的定位系统? - 特征点匹配中,如何避免误匹配? - 后端BA中,如何存在outlier一般怎么解决? - 如果给你一个不连续函数,如何求导? - 代码,手写KD-Tree
#自动驾驶##slam算法##秋招##面经##校招#