当前位置: 首页 > news >正文

SLAM求职经验帖

今天,由拿offer拿到手软的院长(谢晓佳)为我们总结一下他这几个月以来面试,笔试的一些经验,为后来的学弟学妹们找到心仪的工作提供一些帮助。希望大家能够有所收获,从中知道自己在面临求职时应该如何应对,为你的求职生涯提供一些参考。

从学校开放电子三方签约系统到现在已经过了一段时间了,终于有机会和大家分享一下求职经验。首先简单介绍一下自己,我叫谢晓佳,本科就读于电子科技大学,保送浙江大学控制系读研,主要研究方向为双目视觉,SLAM 以及多传感器融合。最终签约奇虎360-北京-人工智能研究院-三维视觉工程师。

大家知道,近几年 SLAM 开源算法越来越多,市面上也已经有了一些初步的应用。每当出现新的应用场景,就有着相应人才的需求,也就有了一些新的就业机会。如果同学们和我方向相近,也希望从事类似的岗位。我觉得读完下面的这些,你会有所收获的。

目录

前期准备:

一、确立求职意向

二、制作简历

三、参加实习

四、巩固知识与技能

秋招:


前期准备:

-----------------------------------------------

一、确立求职意向

研二下的寒假期间还是比较空闲的。在这个期间,可以关注一些微信公众号、多刷刷知乎、看一些资讯类网站,并结合自己的学习方向,初步确定想要从事的领域和工作。这一点是很重要的,不至于在后期盲目投简历,造成时间经历的浪费。就我而言,由于本科参加了一些机器人类的比赛,研究生研究视觉这一块,初步将方向定为:机器人、计算机视觉、无人车和 AR/VR。在后面投简历的时候也是投了对口方向的,并没有计算机算法、测试等岗位。

二、制作简历

寒假返校,这时候该制作第一份简历了。简历的排版还是比较讲究的,简介大方、突出重点,最重要的是要将参与项目中核心的工作清晰的展示出来。如果项目方便展示,可以截图或拍照保存下来,在投简历的时候可以附上作品

三、参加实习

很多公司还是比较看中实习经历的,而且有的公司可以实习转正。所以如果时间以及各方面条件允许的话,参加实习是一个不错的选择。大部分公司也是3、4月开始招实习生的,后面也陆陆续续会有。实习时间一般是2~3个月,尽量在秋招之前实习。实习的信息可以在自己学校的论坛和微信公众号“校招日历”中查看,关于实习就不细说了,因为我没有参加。

四、巩固知识与技能

在一大波校招笔试面试来临前,最重要的还是得增加自身的竞争力,学习以及巩固与知识。这里将其分为两类:计算机基础知识与技能,专业知识与技能。

1. 计算机基础知识与技能

计算机基础知识与技能包括:

1) 编程语言;2) 数据结构和算法;3) 操作系统;4) 网络编程;5) 数据库。

这个排序按重要程度排下来的,其中前两个尤为总要,至于操作系统、网络和数据库仅在笔试中会涉及,面试的时候一般不会问。在计算机视觉中,绝大部分的代码还是基于 c/c++ 实现的,所以这里主要强调 c/c++,当然如果你会 python 之类的脚本语言也是极好的。

就前面两点推荐一些相关书籍:

  • 语言篇:《C++ Primer 第5版》,《Effective C++》(https://www.zhihu.com/question/20410487这里有个详细的五阶学习计划)
  • 数据结构与算法篇:《数据结构(C++ 语言版)》,《算法(第4版)》,《STL 源码剖析》(https://www.zhihu.com/question/34390525见罗必成同学的回答)
  • 实战篇:《剑指 offer》、《编程之美》、《编程珠玑》

在本次秋招中,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)

  • 数学:Numberical Linear Algebra(ceres slover推荐书籍http://ceres-solver.org/faqs.html)、Numerical Optimization
  • SLAM:Course on SLAM(Joan Sola关于Graph-SLAM的教程)、

State Estimation For Robotics(Tim.Barfoot)、概率机器人

  • 计算机视觉:An Invitation to 3-D Vision,计算机视觉中的多视图几何,

计算机视觉中的数学方法(更多参考:https://www.zhihu.com/question/28813777)

  • 实战篇:OpenCV2计算机视觉编程手册、深入理解OpenCV:实用计算机视觉项

5. 编程练习

在学习以上的书籍的过程中,最重要的还是要练练手写写代码。

  • Eigen、OpenCV、PCL、ROS这些基础的工具需要掌握.OpenCV推荐2本比较practical的书。
  • 后端优化的库g2o、GTSAM、Ceres solver可以先选一个开始学,工程上推荐用g2o,大家用的比较多,不过注释很少需要一定的功力才能看懂。
  • GTSAM代码写得要好读一些,而且具有优秀的编程规范,十分适合学习,GTSAM的doc目录下也有很多写得很好的文档,相比与其他两个库,其 iSAM 求解器是一大亮点。
  • Ceres 是谷歌出的优化库,代码注释十分良心,配合一些最优化的书学习最适合不过了。同时注意多写博客分享自己的心得体会,这个在招聘时也是加分项。
  • 最后对于SLAM这一块,还需要读综述以及跑跑Demo,如ORBSLAM、SVO、LSD-SLAM 等。

以上列出的这几个开源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的准备签约时候,多调研调研情况,参考老师同学的意见以及结合个人情况,做出最后的决定吧。

 

最后预祝大家找到满意的工作!!!

相关文章:

  • FLANN匹配算法
  • 图像处理行业入门
  • 如何学好图像处理
  • 图像检索综述 (传统方法)
  • 数字图像处理:二 (武汉理工)
  • Kinect v2配置移动电源解决方案
  • 图像领域博主
  • SVM(support vector machine)
  • 麻省理工学院(MIT)研究生学习指导—— 怎样做研究生
  • 博士生提高科研幸福感的途径
  • 算法工程师的危机
  • 论文类型 Journal 、 magazin 、 transaction 、 letter 等的区别
  • latex 真的 很简单!
  • 查看大型工程源代码方法
  • c++ code:(2)function
  • 分享一款快速APP功能测试工具
  • #Java异常处理
  • 【刷算法】从上往下打印二叉树
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • AHK 中 = 和 == 等比较运算符的用法
  • Android 架构优化~MVP 架构改造
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • idea + plantuml 画流程图
  • JavaScript-Array类型
  • js递归,无限分级树形折叠菜单
  • JS函数式编程 数组部分风格 ES6版
  • js写一个简单的选项卡
  • Python爬虫--- 1.3 BS4库的解析器
  • Spring Boot快速入门(一):Hello Spring Boot
  • Vim 折腾记
  • Web设计流程优化:网页效果图设计新思路
  • 初识MongoDB分片
  • - 概述 - 《设计模式(极简c++版)》
  • 工作手记之html2canvas使用概述
  • 收藏好这篇,别再只说“数据劫持”了
  • 写代码的正确姿势
  • ​虚拟化系列介绍(十)
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • *1 计算机基础和操作系统基础及几大协议
  • .libPaths()设置包加载目录
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET4.0并行计算技术基础(1)
  • .netcore如何运行环境安装到Linux服务器
  • [AIGC] Nacos:一个简单 yet powerful 的配置中心和服务注册中心
  • [BZOJ4337][BJOI2015]树的同构(树的最小表示法)
  • [CareerCup] 6.1 Find Heavy Bottle 寻找重瓶子
  • [CLickhouse] 学习小计
  • [EMWIN]FRAMEWIN 与 WINDOW 的使用注意
  • [GN] Vue3.2 快速上手 ---- 核心语法2