美团4/10自动驾驶系统工程师一面凉经
第一志愿投的嵌软,和我目前做的(mcu和无人机)也比较契合,结果给我挂了。后面被自动车配送部的自动驾驶系统工程师捞了约面试。这个是我第三志愿,当时纯属看到里面有个传感器方向的比较偏硬件才选的,而且本身也没报多大希望,我也一直以为对方是kpi面所以基本没准备。好了直接开始。
面试官人挺热情的,上来先向我介绍他们部门主要的业务和具体的工作内容,主要是把其他算法部门设计的自动驾驶算法部署到实车上然后根据特定的场景做优化(比方说算法部门设计的算法是针对通用场景,但实际车跑的路可能没有红绿灯,也可能是土路所以甚至连交通指示线都没有,就需要对这些特定场景做优化)。
然后我稍微介绍了自己的情况。我做的项目是UWB定位在无人机上的应用,用的stm32和freertos,主要的内容还是偏硬件的,算法上就是复现了uwb的tdoa定位算法。然后面试官以为我是做的控制算法,我和他说了是做定位算法,他应该不熟这块,后面就再也没问我项目相关的内容了。
之后大部分都是问的C++的内容,C++11标准新加了哪些内容,我回答多加了几个智能指针、列表初始化更加通用、新加了一些数据结构之类的。
然后问我智能指针的作用,我回答了智能指针是用类对指针做封装,可以在作用域结束的时候自动调用析构函数释放内存从而避免内存泄漏。然后又问我新标准的智能指针有哪些,我没用过不知道。
之后问我堆和栈的有什么作用和他们的区别,这个我只知道堆用来存放动态申请的变量,栈用来存放临时变量和函数参数之类的。
问我new和malloc这些用得多吗,我在rtos上用队列之类的比较多,基本不用动态内存共享数据。
问了几个数据结构的问题,vector和array的区别,没用过array答不出来;queue和dqueue的区别,没用过dqueue但是瞎编了一些。
让我手动实现vector,我不会,之后就只让我实现int类型的vector,成员函数只让实现push_back(),写得磕磕绊绊,面试官一直提示我,就差手把手教我敲代码了,最后我还是犯了很多低级错误(数组边界溢出、内存泄漏)现场手撕代码确实心态很不一样,平时不会犯的错误全犯上了
之后问数据结构,我说vector、map和unordered_map这些用得比较多,就问我map和unordered_map区别和底层实现,一个排序一个不排序,map用红黑树,另一个用哈希表。然后问我红黑树插入一个值的时间复杂度,我说没了解过红黑树的具体实现不知道。
之后问我操作系统,进程和线程这些。我只把背的概念答上了,又问我有没有做过多线程编程。我说只用过rtos,里面任务的概念和linux的进程线程这些类似,面试官应该也不太懂freertos就没接着往下问了。
又问了我代码管理工具有没有用过,我就说用过gitbash,只会常用的几个简单的指令add、commit、reset、clone、push、checkout这些。面试官问我如果commit了一个有bug的版本,后面修复后不想重新commit,因为这样会把有bug的那个版本留在仓库里,这个时候要用什么指令,我没用过不会。问我merge的作用,我忘了就没答上来。
之后问我对深度学习熟不熟悉,我说本科时候做过一些图像识别之类的。之后问我python,我说以有写过一些脚本做数据处理之类的,但是已经好久没写过python了。就让我用python写使用迭代器访问一个数组,我凭着仅剩的记忆写的也不知道对不对。
最后我问了他们对应届生怎么培养的,他说他社招进的也不太清楚。然后我说我之前只做过mcu和rtos的嵌入式开发,基本没怎么用过linux,他说他们部门主要还是在linux上做开发所以还是需要掌握的。
总的来说,因为本身是想投mcu方向的嵌软,再加上这个时间约面基本都是kpi面,我就完全没有准备,而且也是我的第一场面试,最近老板催得紧,八股什么的也没怎么背。结果没想到面试官特别特别热情,我答得特别烂也会很耐心教我,完全没有说因为kpi面就随便草草了事,全程面了一个多小时(也许他当时想合理摸鱼不上班吧),让我产生他好像真的想把我招进去的错觉,不过我目前做的和他们可以说完全不对口所以本来也没抱啥希望
#美团23春招24实##美团##美团2023面经##美团一面#