转载知乎https://zhuanlan.zhihu.com/p/28565563
大家知道,近几年 SLAM 开源算法越来越多,市面上也已经有了一些初步的应用。每当出现新的应用场景,就有着相应人才的需求,也就有了一些新的就业机会。如果同学们和我方向相近,也希望从事类似的岗位。我觉得读完下面的这些,你会有所收获的。
前期准备:
-----------------------------------------------
一、确立求职意向
研二下的寒假期间还是比较空闲的。在这个期间,可以关注一些微信公众号、多刷刷知乎、看一些资讯类网站,并结合自己的学习方向,初步确定想要从事的领域和工作。这一点是很重要的,不至于在后期盲目投简历,造成时间经历的浪费。就我而言,由于本科参加了一些机器人类的比赛,研究生研究视觉这一块,初步将方向定为:机器人、计算机视觉、无人车和 AR/VR。在后面投简历的时候也是投了对口方向的,并没有计算机算法、测试等岗位。
二、制作简历
寒假返校,这时候该制作第一份简历了。简历的排版还是比较讲究的,简介大方、突出重点,最重要的是要将参与项目中核心的工作清晰的展示出来。如果项目方便展示,可以截图或拍照保存下来,在投简历的时候可以附上作品
三、参加实习
很多公司还是比较看中实习经历的,而且有的公司可以实习转正。所以如果时间以及各方面条件允许的话,参加实习是一个不错的选择。大部分公司也是3、4月开始招实习生的,后面也陆陆续续会有。实习时间一般是2~3个月,尽量在秋招之前实习。实习的信息可以在自己学校的论坛和微信公众号“校招日历”中查看,关于实习就不细说了,因为我没有参加。
四、巩固知识与技能
在一大波校招笔试面试来临前,最重要的还是得增加自身的竞争力,学习以及巩固与知识。这里将其分为两类:计算机基础知识与技能,专业知识与技能。
1. 计算机基础知识与技能
计算机基础知识与技能包括:
1) 编程语言;2) 数据结构和算法;3) 操作系统;4) 网络编程;5) 数据库。
这个排序按重要程度排下来的,其中前两个尤为总要,至于操作系统、网络和数据库仅在笔试中会涉及,面试的时候一般不会问。在计算机视觉中,绝大部分的代码还是基于 c/c++ 实现的,所以这里主要强调 c/c++,当然如果你会 python 之类的脚本语言也是极好的。
就前面两点推荐一些相关书籍:
在本次秋招中,c++11 问的比较少,不过个人觉得还是很重要的,特别是多线程这一块,推荐看看《C++ Concurrency in Action》以及《Effective Modern C++》。除了看书,当然还要刷题,个人比较推荐 leetcode 和牛客网。时间来不及的可以先刷刷这个帖子里(http://www.nowcoder.com/discuss/19305?type=0&order=1&pos=14&page=1)的题目以及牛客网中的历年题。
2. 专业知识与技能
专业知识与技能涉及的就比较多了,包括高等数学、线性代数、概率论、最优化、计算机视觉等,以及需要熟练掌握相关的函数库和工具。SLAM 的框架基本都差不多,前端更倾向于计算机视觉、通过图像的信息来估计帧间的位姿变化;后端更数学一些,通过给定观测来估计最优状态。首先推荐 Joan Sola 的《Course on SLAM》,前端后端都讲了一些,如果对其中某一部分有问题可以再分类别深入学习。当然了,高博撰写的《视觉SLAM 十四讲》,首推的入门材料。
3.视觉学习
视觉方面,我觉得CSE486是一个比较好入门的材料,在湘厦人的博客中有部分中文翻译(http://www.cnblogs.com/gemstone/category/409734.html)。多视图几何则是进阶教材,配合计算机视觉中的数学方法以及Daniel Cremers的MVG课程视频一起学习,效果会更好。An Invitation to 3-D Vision没看过,但小伙伴觉得写得比多视图几何要易懂一些。
4. 数学基础
数学方面,大学应该教了很多相关的知识,至少在我们本科就有微积分线性代数概率论之类的,不过在SLAM又显得捉襟见肘,还是需要适当地补充一些。
Tim.Barfoot 的状态估计绝对是很好的书,应该全本通读。至于后端中的非线性优化,Methods fornonlinear least squares problems 是一篇比较短的介绍文章,深入的可以看看 NumericalOptimization。除此之外,线性代数、控制理论相关的就不推荐了,具体可以参考YY硕的回答。(https://zhuanlan.zhihu.com/p/22266788)
State Estimation For Robotics(Tim.Barfoot)、概率机器人
计算机视觉中的数学方法(更多参考:https://www.zhihu.com/question/28813777)
5. 编程练习
在学习以上的书籍的过程中,最重要的还是要练练手写写代码。
以上列出的这几个开源SLAM算法目前在网上已经有了很完善的解读,在阅读的过程中即可以疏通整个流程,又可以看到计算机视觉和数学的具体应用,对今后自己改进以及实现一个SLAM算法是非常有帮助的。
这里再推荐一下我和吴博一起注释的ORBSLAM (http://git.oschina.net/paopaoslam/ORB-SLAM2)。到了这里,后面的路就要靠自己探索了,相信读者也会有自己的想法。
秋招:
6月份之后很多公司开始内推了,多与学长学姐联系,因为大部分内推可以省掉线上笔试,直接进入面试环节。正式校招一般8月底开始,到10月底会陆续结束。秋招时,信息渠道很重要,宣讲会、论坛、学校的就业网、同学等等都不能错过,这里推荐微信公众号“校招日历”,以及校园招(http://xiaoyuanzhao.com)。
这一时期最重要的是完善简历,将简历中设计到的核心工作从头到尾再过一遍,主要设计思路、流程都要烂熟于心。每次投简历之前要慎重考虑,找准想要的职位投递。每经历一次笔试或者面试,就要总结一下,看看还有哪些遗漏的知识点再补起来。
我投递的公司并不是很多,这里稍微列举一些面试中常考的题目。大部分问题的答案在前面提到的书中都可以找到。
1.连通区域算法(可以将 图像简化为二值图来考虑
http://blog.csdn.net/icvpr/article/details/10259577)
2. 实现RANSAC的框架(MRPT写得是比较好的,注意每次此迭代后需要更新
迭代次数。见libs/base/src/math/ransac.cpp)
3. Homography和Fundamentalmatrix的性质与区别
4. 简单实现cv::Mat()
5. 简述一下GN、LM等优化方法的区别
6. 推导一下卡尔曼滤波,描述一下粒子滤(http://blog.csdn.net/heyijia0327)
7. 描述一下SIFT或者SURF特征检测,匹配
8. 如何求解Ax=b (非迭代、迭代,其中非迭代的方法可以参考eigen手册,上面 列了一些(http://eigen.tuxfamily.org/dox/group__TutorialLinearAlgebra.html)
9. 简述一下Bundle Adjustment的过程
10. 对熟悉的某一个开源SLAM,简述其流程
HR面我没有特别准备,不过自我介绍、性格缺点、最有成就感的经历、最大的挫折之类、职业规划、为什么选择我们公司等问题,一定要准备到滚瓜烂熟。最后,当你拿到几个offer的准备签约时候,多调研调研情况,参考老师同学的意见以及结合个人情况,做出最后的决定吧。
最后预祝大家找到满意的工作!!!
--------------- 我是分隔符 -------------