1.2.5SlAM岗面经汇总
小米
小米-高精地图与定位算法工程师-一面
1、五分钟自我介绍
2、简历上项目深挖
3、代码部分面试官表示比较喜欢出专业相关的,因此题目是c++判断点的投影是否在线段上,属于计算机几何的知识
4、此外还问了一些SLAM相关的问题,比如在IMU预积分部分,优化后bias更新了如何处理这种很细节的知识点理解考察
5、反问环节
小米-高精地图与定位算法工程师-二面
二面跟一面流程差不多,在一面基础上也出了一道计算机几何的题目,c++判断一个点是否在三角形内部,分别构造三角形并计算面积,求和看是否等于原三角形面积即可
科大讯飞
科大讯飞-AI研究算法工程师-视觉/激光SLAM算法方向-一面
1、五分钟自我介绍
2、简历上项目深挖
3、SLAM相关问了很多很细致的知识点,比如常见的特征点提取方法及原理,描述子匹配方法及原理,对极几何概念介绍,三角测量实现原理,重投影残差推导,进行IMU预积分的原因
4、八股问了线程锁有哪些实现方式,纯虚函数跟虚函数有什么异同,C++多态有哪些实现方式(运算符重载等)
5、此外还问了一些transformer结构,交叉注意力等网络相关,但我其实只对神经网络有一些浅薄的了解,所以回答不太上来
6、反问环节
旷视
旷视-Learning-based V-SLAM-一面
1、五分钟自我介绍
2、简历上项目深挖
3、由于简历中提到了矢量化相关的工作,因此面试官出的题目是给定一组二维点拟合直线,但指定函数方程为ax+by+1=0,使用最小二乘实现函数功能即可,可以使用eigen库
此外还问了一道概率题:A和B先后掷骰子,谁先掷出6谁赢,求A赢的概率
其实就是在每一轮赢的概率总和,无限等比数列的求和公式是 数列的第一项 除以 (1减去等比数列的公比)
4、反问环节
旷视-Learning-based V-SLAM-二面
二面的代码题非常多,首先是在一面的基础上升级了三维点拟合平面,这里也用svd分解就行;
此外还拓展了一道位姿插值,其中旋转部分要用四元数的球面插值,用slerp函数,平移部分就用线性插值即可;
以及手写一个简单的EKF系统,这里我没太理解怎么简单。然后写了一个我简历中提到的EKF,比较复杂,写到一半面试官换了一道题;换了理财产品购买的题,其实就是一个01背包问题,求一定本金最多有多少收益
旷视-Learning-based V-SLAM-三面
三面没有手撕,主要是项目提问,深入问了我简历里提到的线的重投影残差构建,以及雅各比推导;还有VINS边缘化、初始化相关的SLAM八股
旷视-Learning-based V-SLAM-四面
四面也是主要进行项目提问,以及简单介绍一下VINS系统,为什么要使用点的逆深度优化
手撕了一道仰视二叉树,这题很新颖,可以把root节点视为坐标0点,左右子树层次遍历时分别在父节点基础上坐标-1、+1,然后用Unordered_map每次遇到新坐标就覆盖,最终得到的就是仰视结果元戎启行-SLAM算法工程师-一面
1、解释VINS进行边缘化的原因和原理
2、介绍非线性最小二乘的方法
3、C++11新特性有哪些,举例说明使用过哪些
4、手动实现一个vector类,最好使用模板类
5、vector的底层实现是什么,reserve和resize有什么区别
6、虚函数的原理,在项目中如何使用
7、public, protected, private三种继承方式的访问属性
8、智能指针的作用,在项目中如何使用
9、C++会默认给类构造那些默认函数
10、unique_ptr如何实现所有权独占
在 C++11 之前,unique_ptr通过把赋值构造和拷贝构造声明为私有函数实现独有所有权;c++11之后,可以使用 delete 关键字来显式地禁止编译器生成特定的函数,unique_ptr 将拷贝构造函数和拷贝赋值运算符都声明为删除的,除非通过移动构造函数或移动赋值运算符(它们是允许的),否则无法复制一个 std::unique_ptr
影石
影石-视觉算法工程师-笔试
影视的笔试很神奇,是开卷的全景拼接,限时5个小时【基本就是不限时】,私以为这种笔试形式比大类招生混着考单选多选好很多,也更有针对性
题目给了鱼眼相机全景拼接的映射表,还有鱼眼图像原图,要求拼成一张全景,中间还涉及视角重叠部分的处理和自行实现resize,很专业!这里我实现的比较简单,重叠部分直接两张图片上的像素颜色取平均了,导致模糊过渡时会有重影;resize就是比较常规的双线性插值
影石-视觉算法工程师-一面
1、五分钟自我介绍
2、简历上项目深挖
3、一些SLAM八股,但我回答的比较宽泛,面试官可能想要更详细的解释,包括光流法的实现原理、SfM的实现原理、全景拼接有哪些需要注意的事项、如何提高效率等,还问了我会不会nerf
4、反问环节,我问面试官对校招生是会更看重专业对口还是知识基础但是挽尊失败,面试官委婉的表达更想要专业对口的,于是面完就待定了ε=(´ο`*)))唉
高德SLAM算法工程师-一面
投的是SLAM/三维重建/图文多模态算法工程师-视觉团队的岗位
1、五分钟自我介绍
2、简历上项目深挖
3、由于简历中提到了矢量化相关的工作,因此面试官出的题目是给定一组二维点拟合直线,使用最小二乘实现函数功能即可,可以使用eigen库
4、反问环节
一些碎碎念
其实整体面下来我可以感受到面试官应该是做感知出身的,至于为什么会安排专业不太对口的面试官来面我也不太理解
今年SLAM岗位真的很少,大部分都是跟感知合并在一起招聘,导致我经常在面试过程中跟做感知的面试官大眼瞪小眼;有一些面试官不理解但尊重还好,最怕一部分不理解但不尊重的面试官,认为SLAM在目前重感知轻地图的大方向下已经无足轻重了,还感叹我现在转方向也来不及了,就很难受
也有朋友咨询我SLAM相关的问题,但我建议大家选研究方向还是谨慎,SLAM的岗位一年比一年少,VR/AR岗位更是凤毛麟角了,这并不是一个很好的选择,或许可以多往感知方向靠一靠,4D标注或者三维重建相关的岗在今年秋招我倒是遇到很多,现在也就是L4高精地图、L2自动标注和部分记忆泊车的岗位在收留我了
百度
百度-SLAM算法工程师-笔试
啊度子。。不知道该怎么表达我的复杂心情,大概就是被各个部门简历共享踢来踢去,捞起来三次又给摁人才公海里的爱恨交织吧,家人们谁懂啊,光笔试就笔试了三次
暑期实习的笔试,30道选择(KMP算法复杂度、pandas数据结构、图像处理、森林转二叉树、无向图邻接矩阵、KNN/boosting和stacking、继承、友元函数、内联函数、矩阵压缩、LINUX命令、循环队列、网站默认端口80、硬件同步TestAndSet、概率论)+两道编程(字符串、动态规划),反正就是选择题很多不会,编程倒是过了,但还是笔试挂
秋招的笔试,都懒得记笔记了,反正是单选+多选+编程,编程是动态规划+二分法,比较简单
百度-SLAM算法工程师-面试
1、五分钟自我介绍
2、简历上项目深挖
3、扩展提问了简历上提到的EKF框架和VINS框架的结构
4、八股问了inline/constexpr关键字的作用,const/static关键字的区别
5、手撕一组二维点拟合直线,个人感觉答得挺好的,但一面完半个小时就给我挂了
6、反问环节
地平线
地平线-SLAM算法工程师-一面
1、五分钟自我介绍
2、简历上项目深挖
3、由于简历中提到了矢量化相关的工作,因此面试官出的题目是给定一组二维点拟合直线,使用最小二乘实现函数功能即可,可以使用eigen库
4、反问环节
地平线-SLAM算法工程师-二面
跟一面的流程几乎相同,面试官出的题目是仍然是二维点拟合直线,但不同于一面的是还需要考虑外点,因此使用RANSAC方法迭代拟合
地平线-SLAM算法工程师-三面
三面没有手撕环节,全程介绍简历项目并提问
地平线-SLAM算法工程师-HR面
交流职业规划、用三个词语形容自己等常规问题
华为
华为-SLAM算法工程师-一面
华子其实没有专门的slam岗,因此我投的是车bu下的自动驾驶算法工程师
面试是线下的,前一天下午发短信约了第二天早上的面试,时间有点紧张;手撕是用笔在A4纸上写;一面过了约二面,可以直接一天走完流程
1、五分钟自我介绍
2、简历上项目深挖
3、力扣原题,浮点数开根号
4、反问环节
华为-SLAM算法工程师-二面
面试官出的题目是二维数组最大子矩阵和,也是力扣原题,但很难,我没做出来,因此申请做了一维简单版本,也就是最大子数组和,然后口述了二维的思路
华为-SLAM算法工程师-三面
三面没有手撕环节,全程介绍简历项目并提问,面试官似乎很在意我不是科班出身的,机械狗也很无奈,问我会不会转高斯克吕格投影坐标系,但我一个做地库记忆泊车的哪儿懂这个原理。。但是最后还是给我过了
图森
图森-高精地图开发工程师-一面
图森今年没有开放SLAM算法岗,所以楼主投了一个最相关的工程开发岗,岗位描述里三个方向中有一个是比较对口的;而且面试下来感觉图森的氛围真的很好!
【约一面的时候竟然安排了一个半小时】
1、五分钟自我介绍
2、简历上项目深挖
3、手撕环节,两道题,是非经典数据结构的题,我用贪心/模拟做出来的,整体耗时但不难
1# 题目描述 给定 n 个算法训练任务,每个任务都要独占机器 1 小时。原来第 i 个任务应在第 i 小时开始做。由于突发情况停电了 k 小时,所有任务都要推迟,即时间区间从原来的 [1,n] 改为 [1+k,n+k] 小时。但是第 i 个任务每推迟一小时就会损失 cost[i]。现在要对这 n 个任务重新调度顺序,要求不能比原来开始时间更早,求最小的损失。
bool get_min_loss(int n, int k, vector<int> &cost)
2# 题目描述 有一个 2 行 n 列且元素值为 0 或 1 的矩阵,第一行的和记做 upper,第二行的和记做 lower,每列之和构成的长度为 n 的数组,记做 colsum,请依据这三个信息重构原来的矩阵。可能有多个答案,返回任意一个即可,也可能没有合法答案,此时返回空列表.
vector<vector<int>> reconstructMatrix(int upper, int lower, vector<int>& colsum)
4、反问环节
图森-高精地图开发工程师-二面
二面也安排了一个半小时,但是其实没有手撕,全程都在问项目,后面也问了一些C+八股:
C++面向对象的三大特性?
多态有哪些实现方式?
C++11新特性?
C++编译过程步骤?
有哪些熟悉的STL?
const关键字的作用?
static关键字的作用?
图森-高精地图开发工程师-三面
三面同样没有手撕,应该是一位做定位算法的同事,问了我一些激光SLAM相关的知识:
知道哪些点云匹配方法(ICP、PL-ICP、NDT等)
了解哪些滤波器算法(KF、EKF、ESKF、IESKF)
后续也问了几个开放性问题:
在重复性很高的场景中如何定位?
如何防止路标关联错误?
对于柱子(电线杆、红绿灯等)如何添加残差?
图森-高精地图开发工程师-HR面
三个特质形容自己、挑工作看重哪些因素、询问期望薪资和工作地点等常规问题
蔚来
蔚来-SLAM算法工程师面经-一面
感觉蔚来招聘的要求还是挺高的,同时蔚来也是我暑期实习投递的第一家公司,前前后后都有四个流程终止的志愿了,还好正式批走到了最后,心怀感恩地泡池子O(∩_∩)O
1、自我介绍
2、提问项目
3、手撕力扣原题旋转图像,不断优化时间复杂度,最终实现一次遍历就得到旋转结果
4、八股问了一些很经典的虚函数实现原理、编译时多态和运行时多态有哪些、CMake编译过程
5、反问环节
蔚来-SLAM算法工程师面经-二面
跟一面的流程几乎相同,面试官出的题目是实现一个函数,输入二维点,使用RANSAC方法迭代拟合直线,输出直线参数
蔚来-SLAM算法工程师面经-三面
三面又有了手撕环节,题目是经典的股票买卖问题,考了只能买入卖出一次的情况和可以买入卖出两次的两道
蔚来-SLAM算法工程师面经-HR面
问了一下挑工作看重哪些因素等
黑芝麻
黑芝麻-自动驾驶开发工程师-一面
1、自我介绍
2、简历项目
3、手撕代码部分出了两道题目
一道是力扣上有原题的最大的K个数,写完之后分析时空复杂度、能否继续优化
一道是牛顿法解方程,类似于浮点数开根号,使用牛顿迭代法即可
4、反问环节
黑芝麻-自动驾驶开发工程师-HR交流
我也没太搞懂这个流程,怎么一面完就HR面了,但是也只是打电话交流一下,当时刚睡醒,HR问期望薪资,脑子一抽报的太高了。一方面期望薪资要根据对面的薪资构成来报,最好报年包,结果我第一次没经验报了月薪;一方面我这个可能是个开发岗,所以不如算法岗开的高;再者可能是一面表现没有达到对面期望,后续就挂了
菜鸟
菜鸟-建图定位算法工程师-一面
菜鸟其实是一个师兄推荐我投递的,阿里达摩院做智能驾驶的一部分员工应该是去了菜鸟,所以整体面试下来感觉面试官技术都很优秀,研究方向也很不错!
1、自我介绍
2、提问项目
3、SLAM/C++八股:正交矩阵性质、正定矩阵性质、如何求解方程Ax=b、FAST角点如何选取、基础矩阵/本质矩阵的秩是多少、自由度是多少、C++如何实现线程安全等
4、手撕代码环节是经典的买卖股票问题系列
5、反问环节
菜鸟-建图定位算法工程师-二面
跟一面的流程几乎相同,手撕部分是自定义稀疏矩阵的结构体,并且实现稀疏矩阵乘法
这种类型的问题之前我没有遇到过,在自定义稀疏矩阵表达方式的时候找面试官要了一些提示,但其实也是改了好几版,最终实现了一个复杂度不够优秀的结果,后来看了看网上常用的表达方式才知道该怎么设计【捂脸
其实比较常用且高效的是下面这种定义方式
struct CSRMatrix {
std::vector<double> values; // 存储非零元素的值
std::vector<int> columns; // 存储非零元素的列索引
std::vector<int> row_ptr; // 存储每一行中非零元素在 values 和 columns 数组中的起始位置和结束位置
int rows; // 矩阵的行数
int cols; // 矩阵的列数
};
菜鸟-建图定位算法工程师-三面
三面没有手撕环节,全程介绍简历项目并提问
菜鸟-建图定位算法工程师-HR面
评价自己、挑工作看重哪些因素等常规问题
智元机器人
智元机器人-SLAM算法工程师-一面
智元机器人就是稚晖君创业的公司啦,看到发布会上的人形机器人感觉很震撼,所以激情投递简历
1、自我介绍
2、项目提问,这里最好做一个PPT,可以用图表直观地展示所做的工作,也能把握住面试的节奏
3、由于简历中提到了矢量化相关的工作,因此面试官出的题目是给定一组二维点拟合直线,其中会有外点。因此需要先用RANSAC方法迭代,每次随机选两个点构成直线,判断内点,再对所有内点用最小二乘得到直线参数,可以使用eigen库
4、反问环节,询问主要负责的业务,被告知是商业清洁机器人产品线o(╥﹏╥)o,不过也可以理解,毕竟人形机器人还不能盈利,需要先做能落地的,但是楼主本身对清洁机器人不是很感兴趣,所以后续放弃面试了;不过后来我也有看到投递SLAM岗位的同学是在别的产线,也有可能当时面试官回答的只是他自己所在部门的业务?整体面试下来其实还是不错的,有兴趣的同学也可以尝试一下这家初创公司~
智驾
智驾-SLAM算法工程师-笔试
智驾科技(MAXIEYE)也是一家师兄挺推荐的公司~提供自动驾驶解决方案
单选+多选+编程,笔试是很专业的SLAM方向的题目,不像其他公司把多个方向混一起考察的
单选考查了一些欧拉角转旋转矩阵,纯虚函数,基于优化和滤波的开源VIO系统的了解等等,编程两道题分别是模拟和动态规划
单选还考察了一个我完全没接触过的知识点,在这里备忘一下:水平失准角的对准误差取决于加速度计的等效水平测量误差;方位失准角的对准误差取决于陀螺的等效东向测量误差
智驾-SLAM算法工程师-一面
1、自我介绍
2、项目提问,我简历上会有基于EKF的和基于优化的项目,面试官一般会引申出去问一些两者相关的问题
3、C++八股,动态内存如何管理,常量指针和指针常量的区别,条件变量如何保证线程安全,数组、栈和队列的底层分别是什么,unordered_map和map的底层是什么
4、反问环节,询问主要负责的业务等
禾赛
禾赛-算法工程师-一面
其实楼主是做视觉的,跟禾赛不是特别的对口,但是还是投递试试,是个3D视觉方向的岗位,提前批和正式批两次机会都投了这个岗
1、自我介绍
2、简历项目
3、手撕了一道excel表列名称
4、反问环节
禾赛-算法工程师-笔试
很神奇的是,一面完估计是经历/背景不满足提前批要求,所以没通过,但是反而转笔试了
笔试有一道循环右移二叉树比较复杂,牛客上有这道原题,当时做了好久没做出来
禾赛-算法工程师-二面
笔试完提前批就挂掉了,但是后续正式批HR问我要不要复活【神奇】,所以志愿又复活了,参加二面
二面面试官技术很专业,项目相关问的很深入,手撕是一道计算机图形学的经典问题,在不知道给出的顶点是顺时针还是逆时针顺序的情况下,如何判断凸多边形
整体流程走下来,感觉面试官和HR都很专业,也很细心负责,但是可能二面表现也不太好,所以就没有后续的通知了
特别鸣谢:内容来源@Arrendelle
本刊征集了多位24届以及往届牛友的求职经验&通关技巧,以及校招热点问题解决方案,最后由牛客官方汇编而成。适合25/26届&24届春招的软开/机械类牛友查阅学习~