前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试SLAM算法实习岗,我是怎么做的?

面试SLAM算法实习岗,我是怎么做的?

作者头像
AI研习社
发布2019-08-15 17:52:43
1.5K0
发布2019-08-15 17:52:43
举报
文章被收录于专栏:AI研习社AI研习社

作者:无能狂怒LIAM崔 著作权归作者所有。AI开发者获得授权转载,禁止二次转载。 https://zhuanlan.zhihu.com/p/76280626

注:封面图片来自网络

本人普通211研一在读(9月份开学研二),2019年1月开始接触SLAM,到昨天拿到某公司实习offer。闲话不说,大家更关心的是:

一. 面试机会如何得到?

二. 面试的流程?每一轮面试问题都是什么?

三. 提供一些面试的经验?最好具体到每一轮?

面试机会如何得到?

一切的一切还要从一本书和一门课和一个论坛说起。

高翔博士的《视觉SLAM十四讲》应该是耳熟能详的SLAM入门教材了。2019年3月份,在师兄的推荐下,我开始阅读这本书,两个月左右,啃完了这本书。但这之后我并不知道应该做些什么,甚至如果不能用到实践中,我根本不知道自己学完这本书之后,到底得到了什么。

机缘巧合,我的一个同学在朋友圈发了一门课程,叫做《从零开始手写VIO》,哪里的课程我也不说,免得有做广告的嫌疑,不过用了都说好,谁学谁知道。我报了第一期,就这样开始了进阶的学习之旅。学习之旅很艰难,工程实践经验的缺少,和数学公式的推导让我非常头痛。在这段期间,我遇到过很多问题,也几度因为代码调试不出来而感到挫败,但这毕竟是学习的一部分,也是我跨过SLAM入门这个门槛的一部分。期间,我认识了几个小伙伴能够共同学习,互相讨论,鼓励彼此,一点点把作业完成,积累自己的代码和公式推导经验。

就在课程进行了一个月左右的时候,我从一个人的朋友圈里又了解到,七月份,第二届SLAM论坛会在清华举行。

报名论坛之前,我有些忐忑,因为我知道这上面讲的东西不是只有几个月基础的我能听懂的,但我来这个论坛的目的有三:第一,了解巨佬们的开发经验以及项目过程中解决问题的方法,或许在以后的研究中会受益无穷;第二,想知道自己认真学了这几个月之后,到底达到了什么程度,和大佬们还有多少差距;第三,希望能够看到和认识更多优秀的人,跟他们多交流,给自己不断向前的动力。

课程进行到一个半月,已经接近尾声,这时候距离SLAM论坛也不久了,我马上也要放暑假了。这时候我非常慌张,我迫切地感觉到自己需要一份实习,把所学转化为所用,或者说在所用中延续所学。所以我就开始了第一轮的投简历之旅。

只要用心制作一份简历,上面如实填写项目和相关学习经历,那么得到面试机会不太难。切忌写SLAM无关内容,以及胡编,以及夸大其辞,如实写就好,做了什么,会什么即可。我简历上面只写了跟SLAM相关的两部分内容,一个是跟着师兄接触过的orb_slam相关项目,另一个就是自己的课程。在课程中学到多少东西,能踏踏实实拿出一些来,说出自己的理解并能够进行公式推导以及细化,就已经很优秀了。虽然略显单薄,但并不影响面试。因为单薄归单薄,但如果这里写的每一条都能展开很多,证明了解深入。

多投递,我在实习僧,BOSS直聘上都有制作简历并投递,可以看到HR查看简历的进度,以及作出的回应。一般如果觉得还行的话,HR会在看到之后三五个工作日内邮件或者打电话过来。不过也有特殊情况,我这个就是过了十八天才联系的,因为技术那边的人出差才回来。而且正好因为我人在北京,能直接面对面交流,所以比也算比较幸运。

拿到面试机会部分结束。

面试的流程?每一轮都问什么?

中国人喜欢欲扬先抑,我反着来吧,先说说通过的这家,然后再说没通过的。

我这次的面试很集中,从第一天下午四点接到电话,HR跟我确认大致意向,然后问了一些技术和项目方面的基础问题,就跟我约好了晚上七点进行第二轮技术面试。大概晚上九点左右知道第二轮通过之后,就让我扫码做了一个公司的性格测评,然后通知我第三轮在第二天早上十点开始,我就坐大概一个小时的地铁去公司,到了之后就填访问表,面试表,基本信息表(预留20分钟以上时间),然后就是上楼第三轮技术面试。面试谈妥了之后,第四轮HR面,大概谈一下薪资福利,工作时长及时间,同时也确认一下我简历上的信息都没问题,剩下就是聊聊天,测试一下性格是否开朗,与人打交道是否熟练,等等一些面试常见又难回答出新意的问题,如果我觉得我的回答不错,我就把答案写在下面,其他平平常常的回答我就略去。每一轮的问题整理如下。

第一轮:HR大致确认意向(只贴比较难回答的问题)。

  1. 你有了解过我们公司吗?说说公司的产品,它的亮点在哪里?(还好提前了解过)
  2. 逆自我介绍中提到跟着师兄做了orb-slam的项目,能说说你在项目中遇到的最大困难吗?(注意这里HR只问了困难,但他根本不关心困难,而关心你如何解决的,如果你只说了困难,他还会追问如何解决,最好能说说解决的流程和方法,是面试加分项)

第二轮:技术面试(电话面试)

  1. 你在ORB-SLAM项目中承担的角色以及做的贡献?
  2. 解释一下卡尔曼滤波?(没回答太好,但回答了基于滤波和基于优化的区别以及基于优化如何做)
  3. 相机和陀螺仪之间的外参如何标定?
  4. ORB用什么方法提取角点和描述子?
  5. 提取特征点的方法有几种?分别说说
  6. ORB中改进的FAST角点提取策略?(这里不是问FAST9的策略,他觉得这很基础)
  7. 你提到了四叉树原理,讲一下大概的步骤?
  8. ORB提取不到特征点的地方怎么办?
  9. 解释一下VINS-Mono的初始化部分以及大致框架。(这个问题我回答得很乱,因为确实没有形成体系,所以我直说了我不太懂,这也为我后面进入第三轮埋下了伏笔)
  10. 我没问题了,你还有什么问题吗?(我认为这个问题非常重要,重要性完全不次于技术问题,后面面经会说)

第三轮:技术面(一对一,大眼瞪小眼面试)

  1. "其实昨天聊了很多,你面试完回去有了解VINS-Mono的初始化流程以及框架吗?"
  2. "嗯,是下了点功夫,说一下VINS预积分分的推导过程吧,可以去那边写下来"
  3. "Marginalization的时候,信息矩阵如何维护?"(基本也是推导过程...我太难了)
  4. "我没什么问题了,你还有什么问题吗?"(重复问题,但还是很重要...)

第四轮:HR面试(一对一,性格测评+表达能力+是否能把复杂的问题用简单形象的语言表达出来)

  1. 你是做单目的哈,单目和双目有什么区别?(回答:跟我一起做个实验吧,咱们都伸出左手食指,然后闭上左眼,你坐过来我旁边,看我们能不能把食指对上。结果是真的对不上,再解释一下单目和双目的原理或者计算量区别即可)
  2. 说说大学的社团经历?有女朋友吗?
  3. 你是什么星座?(工作狂摩羯)
  4. 说说你人生目前为止遇到最大的一次挫折?(高考,此条回答对学霸不适用...)
  5. 为什么想来我们公司?你觉得最吸引你的地方是什么?(愿景,酷炫的产品等等,这个我提前查了他们家不少产品手册)

然后说说没通过的,不想看的可以直接跳到下一部分,面经。

我在之前投递简历的过程中,面试的结果都并不理想,我归结为以下几点原因:

  1. 没有针对自己简历中提到的算法和框架进行详细的阅读和整理,也就是准备不充分。
  2. 一些基础概念(如PnP/FAST角点的提取/ORB采用的算法/卡尔曼滤波/IMU和陀螺仪的参数标定,等等)只是大致明白,但不理解。
  3. 不够认真,对面试官的问题只听懂了浅层意思,而他真正想了解的是你对算法的深入理解程度以及你是否有宏观和微观的不同角度理解。
  4. 面试官问到一些问题的时候,不会就是不会,他可能只是为了测试你更偏向前端还是后端,并不是非要刁难,所以不必紧张,谁都有不会的东西。

来北京之前接到过两家电话面试。

第一家:盈迪曼德INDEMIND

问题:

  1. PnP的原理是什么?它是从几D到几D的?
  2. ORB-SLAM中的B是什么?如何得到的?
  3. 代码能力怎么样,自己写过工程吗?(工程实践能力确实很重要...可惜我也不多)
  4. 说说激光和视觉的区别?
  5. IMU和陀螺仪的方差都怎么标定?
  6. 对IMU噪声有没有更好的处理办法?
  7. 你对滑动窗口的理解?
  8. 边缘化之后的矩阵变稀疏了吗?
  9. 你还有什么问题吗?能实习多久?

第二家:四维图新(点云方向)

问题:

  1. 自己实现过什么SLAM算法?说说实现的原理
  2. SfM的原理和算法
  3. BA的流程?
  4. 了解激光点云吗?激光和视觉的区别

然后给了我一套C++的笔试题,全都是链表的操作。虽然网上能查到一些,但现学确实不太来得及。不过我还是硬着头皮做完了,跑出来结果也是对的,但发给他邮件之后再问就没有消息了。

就这两家。

贴出我面试这三家的时候,查阅过的一些连接。

https://www.zhihu.com/people/xiao-ma-kai/posts
https://zhuanlan.zhihu.com/p/67790046
https://www.cnblogs.com/buxiaoyi/p/8660854.html
https://www.cnblogs.com/gaoxiang12/p/5304272.html
https://blog.csdn.net/heyijia0327/article/details/52822104
https://zhuanlan.zhihu.com/p/28489469
https://blog.csdn.net/heyijia0327/article/details/17487467
https://zhuanlan.zhihu.com/p/66540565
https://zhuanlan.zhihu.com/p/67818202

面试流程及每一轮问题部分结束。

提供一些面试的经验?最好具体到每一轮?

第一轮:意向确认部分,最好说一下公司的产品,自我介绍,问题回答,自信点就好,一般都能进入下一轮。

第二轮:电话面试。如果是电话面试,可以查资料。你手边的资料,可以电脑开个文件,把常见问题写下来。面试的时候带着耳机,可以搜索你查到的问题。也别照着答案念,有自己的理解当然是说自己的理解更好。别紧张,答不上来真的没关系。直说不会或者说没了解过即可。六老师说:"戏说不是胡说,改编不是乱编,什么叫国际影星啊"(战术后仰)(战术狗头)

最后的问题很关键。我还有什么能问的呢?

我的问题是:您觉得,结合我今天表现的不足,您能推荐我阅读一些什么资料或者说我还需要改进的地方吗?

他回答:有时间的话,把VINS-Mono的框架,预积分的推导,还有VINS初始化的流程看看,然后看看VINS的代码。

大家看出来了,这就是第三轮他问我的两个问题。

第三轮:需要提前到半小时左右,因为HR会给你一些表格,比如访问者登记表,个人详细信息表需要填写,然后还要带你到会议室,和技术面试官沟通。总之什么时候都别让对方等。

然后就是需要提前准备的,第二轮没回答上来的部分要重点准备并理解记忆,准备一些C++的基本知识如虚函数/堆栈/重载等,再详细准备一些公式的推导,第三轮只会比第二轮难。

第四轮:这一轮的HR面就是一个直面自己的过程。面对自己的过去,和现在的缺点。他还是会问你很多基础的问题,甚至他不懂,就是想听你解释,这也是以后和同事共事的时候必备的耐心和沟通能力。还是需要自信。因为能到这一步,只要性格测评不太偏激,薪资等问题没有异议,基本就能拿到Offer了。如果说还有什么加分项的话,那就是如果能幽默一些(别搞黄色啊),在问薪资的时候直爽一些,不要吞吞吐吐,在解释问题的时候耐心细心,深入浅出,会是加分项的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 面试机会如何得到?
  • 面试的流程?每一轮都问什么?
  • 提供一些面试的经验?最好具体到每一轮?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档