找工作这件事总是格外牵动我们的神经。哪家大厂开始招人了,哪位同学拿到了超高薪,哪位同学被拒了...总是能毫无悬念地成为朋友圈的热门话题,再高冷的大神都会忍不住点开、阅读。

秋招马上就到了,我们邀请了一位同学跟大家分享下求职面经(可能是视野范围内写的最用心的一篇),希望能助大家求职一臂之力!

Rome was not built in a day. 以下,enjoy~

本文分为自我介绍、面试准备、如何选择公司三部分,阅读大约需要八分钟。

自我介绍

本人是2020届的应届毕业生,方向是三维重建相关。求职时投递的岗位一般是算法工程师或者见习研究员。自己平时也比较忙,一般都不怎么写这类的文章。不过此次受深蓝学院邀请,记录下我曾经的求职面试经历,希望能给有相关需求的同学一些帮助。以下将会从我个人经历出发,介绍求职时需要做的准备以及如何挑选自己心仪的公司。

面试准备

对于求职算法类的职位,算法题和本专业知识点是必然会在面试中出现的。网上也有很多教大家如何面试、如何刷题准备的。但是由于每个人的经历以及经验都不太一样,因此切勿对号入座,找到适合自己的方法和节奏就好。

如何准备算法题面试

对于算法题的准备,LeetCode自然是不二之选。LeetCode 作为一个在线编程网站,已经从最初的一两百道题增添到了1000多道题,类型涵盖了链表、树(二叉树以及多叉树)、图、排序、哈希表、贪心、动态规划、数论、搜索(深搜、广搜、二分)、栈、队列、字符串、随机算法等等。以上列出的是在面试中会出现的高频算法类型,因此需要多进行这方面的准备。

刷题的方法也不尽相同。我个人刷题主要分为三个阶段。

第一个阶段是按类型刷题。由于本科毕业之后很久没有刷过题了,这个时候按知识点进行刷题主要是为了复习回顾相关的知识点。比如

  • 链表 (LinkList)。头插法和尾插法建表、链表如何判断环以及环出现的位置、链表合并、利用链表进行归并排序、利用链表进行数学运算。

  • 树 (Tree) 。二叉树的先序遍历、后序遍历、中序遍历的递归解法和非递归解法、层次遍历、从先(后)序和中序序列构建二叉树等,都是需要在面试前牢牢掌握的。

  • 图论 (Graph)。面试过程遇到的会相应少一些,但是也不能忽略。广度优先遍历和深度优先遍历经常出现在和图论相关的问题里。并查集也属于图论问题。除此之外,最小生成树、图的最短路存在的多种解法以及每种解法的时间复杂度和空间复杂度。

  • 哈希表 (Hash Table)。哈希表类型算法一般属于比较简单的类型。一般来说,C++ 中使用 unordered_set<T>和 unordered_map<T>就足以应对大部分哈希表的问题了。

  • 贪心 (Greedy) 和 动态规划 (Dynamic Programming)。这两类放在一起是因为存在一定的相似度。不过贪心算法遇见的比较少,动态规划问题比较主流而且相对来说,基本属于hard级别的题目。对于动态规划算法,可以从easy类型的题目刷起,比如 爬楼梯、买卖股票的最佳时间、入室抢劫等入手。其中有些题存在一个系列,可以仔细思考这其中的差异,然后修改自己的状态转移方程来求解问题。除此之外,背包问题、最长公共子串问题也是入门类型的好题。对于有些题目,可以利用滚动数组从 O(n^2)的空(时)间复杂度优化到O(n)的时间复杂度。尽管O(n^2)的复杂度对于通过一道题是足够的,但是在面试过程中,如果能给出更优的解法,那么一定会给你的面试加分不少。对于自己已经解出来的题,可以看看Disscuss板块中大家给出的解法,一般最前面获得post数最多的会是大家比较认同的最优解。

  • 数论 (Math) 。这一类统一放在数学问题里。这一类问题可能涉及“位操作(bit manipulation)”,以及简单的数论(判断素数、快速幂运算等)。easy类型的数学题目一般思路都比较简单直接,medium类型的题目可能就多费时也不一定能想出来,这种题目就需要靠自己的积累总结了。

  • 其他类型。以上类型的题目都是出现频率比较高的。其他类型的题目或因频率较低(但也不是没有出现的可能)、或因总体掌握难度不大(比如回溯和二分,频率也高,但是刷过几道经典题之后很容易将解法衍生到其他题目中去)。

第二个阶段则是按顺序刷题。这一阶段主要是加深对题目的印象,以及对之前不会做的题进行总结。我个人觉得,刷更多的题不如刷更多遍经典的题,尤其是对于自己不会的题,需要每隔一段时间重复性地做题理解。这一阶段会比之前更快,因为有些题目是自己已经掌握的,对于自己不会的题,我会在markdown中记下来,面试的前几天重点回顾。

第三阶段则是扩展阶段。前两个阶段我基本把 LeetCode 前300道题掌握的差不多了。这个时候我会时不时的做300~500题之间的一些题目(做更多的题不一定有用,而且这个范围之间的题型面试到的概率相对往后的题目会更大),以及《剑指offer》上的题目。《剑指offer》上面的60多道题都非常经典,大部分题可以在 LeetCode 上找到对应的题目。不过上面有些题的解法也并非最优的,因此在看的时候可以仔细想想是不是能给出比书上更好的解法。

如何准备三维视觉方向的面试

我个人方向是 Structure from Motion(SfM)。其实和这个方向完全一样的职位需求比较少,但是由于 SfM 和 SLAM 是如假包换的异父异母的双胞胎兄弟,在求职时我一般都能选择 SLAM 相关(这两者基础知识点基本相同)。由于这份面经面向的可能更多的是SLAM方向的同学,我只讲这两者相同部分的知识点,这些知识点主要来源于《计算机视觉中的多视图几何》( Multiple View Geometry in Computer Vision)一书以及数值优化方面。

对于多视图几何,主要有以下方面:

  • 直接线性变换 (Direct Linear Transform, DLT)。DLT是求解大多数几何模型的线性代数基础,像 Triangulation、Homography、相机姿态的求解等,都可以通过 DLT 求解出一个初始解。

  • 对极几何 (Epipolar Geometry)。这一部分包括基本矩阵(Fundamental Matrix)、本质矩阵(Essential Matrix)的推导。对于基本矩阵,存在基于对极线的几何推导和基于极线簇的代数推导两种方法。对于面试来说,几何推导就已经足够了。不过,如果能够在面试中给出代数推导的方法,一定会让面试官眼前一亮的。除此之外,单应矩阵(Homography)的四点法求解、基本矩阵的八点法(Eight Point)以及七点法(Seven Point)求解(七点法问到的频率比较低)也是需要掌握的。

  • RANSAC。RANSAC算法的思想很简单,它需要有一个几何模型,然后通过随机采样所需估计的模型的最小点集来计算这个模型,拥有最多内点数的模型是最终解。RANSAC在实际中经常和单应矩阵或是基本矩阵的求解相结合,因为外点是普遍存在的。

为了完整展示公式,以上两部分采取图片的形式展示

除此以外,可能还会衍生出各种各样的问题。不过换汤不换药,如果真正掌握了这几个知识点,应对绝大多数面试应该都没问题。

以上是基础知识点方面。对于硕士及以上的同学面试,如果能有一两个自己参与的与面试方向match的项目或者科研经历的话,会有非常大的帮助。就我个人来说,对三维重建一直都非常感兴趣,硕士期间也一直在从事相关方向的学习研究。其中的一个成果开源之后获得了近 150 个star。在我参与过的面试中 (百度IDE组,阿里自动驾驶部门,字节跳动AILab,图森高精地图与定位组,悉见科技),面试官都对我这个项目非常感兴趣并进行了很有意义的交流。因此,对于硕士来说,扎实的基础知识(算法能力和专业知识)是一个基本保障,额外的有价值的项目经历是让面试官青睐的关键。

面试前与临场表现

这一部分可写的不太多,个人觉得多参加几次面试,慢慢就会有感觉了。不过,还是记录上一些自己觉得有用的点吧。

首先,需要对面试自己的部门有一定了解(但也不是必须),至少要知道自己简历被哪个组捞走了。因为可能有的同学在应聘时会有多个职位的选择。面试前的一两天,对于可能涉及的知识点,可以采用快速回顾的方式来复习。比如看到某个知识点,脑子里就快速回想一下思路,不会的话就仔细停下来看,如果觉得自己已经掌握了就可以快速跳过了。对于算法题,传说剑指offer上的面试题被问到的概率非常高,因此可以在面试前多回顾一下这里面的题目(不过也只是传说,我自己就从来没遇到过面试官问这上面的题,多准备才是根本)。

临场面试的时候,首先需要做自我介绍的准备,基本会限定在三分钟左右。这方面根据个人经历在面试前准备好就行,尽量说重点,像自己的个人爱好之类的面试官基本不care。其次是临场发挥。遇到不会或者很难一开始就给出最优解的题,不要放弃思考。可以首先给出一个比较暴力的解法,实在没办法做下去之后可以询问面试官,在面试官给出提示之后一步步优化。需要记住的是,题目不会不可怕,要让面试官看到自己在努力思考。有的公司会把好几场面试放在一块儿,有的公司则可能因为时间关系在不同日期安排好几场面试。对于前者,如果当场面试通过,面试官一般会通知你等待下一场面试;如果是后者,则需要自己问清楚下一场面试是什么时候(有可能自己面试不通过而白白等待,当然好一些的公司面试不通过的话可能会发邮件或者电话通知吧)。如果技术面都通过的话,最后就是HR面了。这一步大家可以网上找一些例子(知乎上),因为和HR姐姐(哥哥?)谈话有可能是雷区最多的一面了,稍有不慎可能就会让HR觉得候选人不适合(比如遇到字节跳动AILab的HR姐姐问怎么看待字节跳动大小周这个问题)。但是也不用太担心,情商正常的话一般不会有什么问题的。

如何选择心仪的公司

如果技术面和HR面都通过的话,HR接下来就会通知你入职相关的信息。对于手握多个offer的同学,该怎么选择适合的公司呢?

前面提到,需要对于面试自己的部门有一定了解(但也不是必须),至少要知道自己简历被哪个组捞走了。这步可以在HR邀请参加面试的时候问清楚。我就曾经遇到过因为参加商汤在北京场的 Tech Day 的活动而接到 HR 的面试邀请电话(其实当时挺懵的因为我仅仅是因为活动需要投递过简历但并没有求职需求),因为不清楚自己被哪个部门面试了所以在电话里问了面试官的专业方向。自己的问题可以大大方方地向HR提出,毕竟求职是一个双向的过程,公司在选择你的同时也是你在对公司进行选择。两者都觉得合适才是最重要的。

其次是入职的职位和技术方向是不是自己真正喜欢的。对于实习岗位来说,需要明白自己之后真正想从事的专业是什么,然后从实习生培养制度能提供的项目经历等方面综合考虑,选择适合自己的。有转正需求的可以在入职之初问清部门的是否还有转正的 HC,以及转正的话需要有什么准备。这对于之后找一份正式工作也是非常重要的。

最后,强烈推荐几家自己曾入职过的公司。旷视科技的SLAM组氛围很不错,每周都有paper reading,以及贺一家博士镇场。公司节假日都会有小礼物给每位员工,还有吃不完的午后小点心。在图森未来是自己目前最开心以及收获最多的一份实习了。如果是perception或者其他深度学习相关的组,有乃岩每周的paper带讲。高精地图与定位组的赵季大哥是一位非常低调又尽心尽责的好mentor,在赵季大哥的指导下自己在短短的时间内进步飞快。公司还包非常美味的一日三餐。

(本文未经授权,禁止转载)

经验分享丨如何准备三维视觉、SLAM相关职位的面试相关推荐

  1. 浙大计算机学院夏令营面试,学姐经验分享丨夏令营面试准备 套路详解!

    原标题:学姐经验分享丨夏令营面试准备 & 套路详解! A:哎,小B,我听说夏令营面试很重要,你准备好了吗? B:没有欸,自我介绍.专业知识考核.英语考核什么的感觉好复杂. A:是啊,听说还有什 ...

  2. 经验分享丨自学多久能达到挖漏洞的水平,漏洞奖金有多少?

    很多关注i春秋的朋友会在论坛.微博.知乎.今日头条等媒体平台点赞我们分享的技能知识,也会私信我们在学习过程中遇到的疑难问题,今天我们开设了春秋问答版块,定期来为大家答疑解惑,希望可以为你点亮一盏网安路 ...

  3. Kaggle冠军经验分享丨如何用15个月冲到排行榜的首位

    作者 Kaggle Team 中文翻译 Mika CDA 数据分析师原创作品,转载需授权 在最新的Kaggle用户排行榜上,排名第一位的ID是Bestfitting,他本人叫Shubin Dai.他在 ...

  4. 经验分享丨PMP备考小技巧三则

    首先,先浪一下: 参与2019年12月份的考试,很意外考试能够拿到5A,其实我的基础还是比较差的,能够拿到5A纯属侥幸,在此首先感谢清晖远程D班张老师的监督学习.另外与大家分享一下关于考试的一些小技巧 ...

  5. PMP考试经验分享丨人生很苦坚持很酷,PMP也是

    我本科学的金融,研究生学的管理,然后工作是关于公共卫生领域,因为在小型机构,所以项目和传播都在做.在工作的过程中,我渐渐明确自己未来想要成为的样子--一名公共卫生项目官.所以就计划着再考一个公共卫生研 ...

  6. 游戏建模师经验分享丨必看的13个游戏建模小技巧!

    必看的13个游戏建模小技巧! 01 访问任何东西 "作为一名Cinema 4D用户,我会用自己最喜欢的顶级技巧来解决任何问题," 3D World的编辑Rob Redman 说道. ...

  7. 金融网络安全建设更难了?看一线从业者的“实战”经验分享丨2023 INSEC WORLD

    科技云报道原创. 随着十四五时代的大幕缓缓拉开,国内金融安全建设之路进入下半场. 一方面,金融科技大量采用新技术实现业务创新的同时,也给网络安全带来了更多隐性风险. 另一方面,金融行业数字化转型的进一 ...

  8. 经验分享丨40天通过PMP考试心得

    2019年9月7日,经过为期四十多天的备考,我参加了PMP考试,这场考试是我有史以来参加的时间最长的一次考试,整个考试持续四个小时,这对于缺乏耐心的我来说是极大的一个挑战. 2019年10月23日,我 ...

  9. 经验分享丨计算机专业的女孩子比较合适做什么工作?

    计算机专业的女孩子比较合适做什么工作?现在一个是毕业生找工作的时候,一个也是我们22年高考生填报志愿的时候,我相信有许多同学们都对这个问题十分有兴趣,那有兴趣的同学们就继续看下去吧. 女孩子计算机毕业 ...

最新文章

  1. 设备树 xlnx-phy 使用
  2. 05. 取SQL分组中的某几行数据
  3. 解决Eclipse安装Genymotion插件后抛异常的Bug
  4. 阿里云短信官方的java示例是错误的
  5. qt show widget_Qt中show()与exec()
  6. Java泛型,枚举,注解
  7. 【云计算平台】Hadoop单机模式环境搭建
  8. 选择图像根据坐标得到图像。头像裁剪器
  9. rk3288_Android7.1长按recovery按键5s之后恢复出厂设置
  10. xmind各版本区别_XMind各版本功能对比1.PDF
  11. 思科刀片服务器系统,思科 UCS B 系列刀片服务器
  12. C语言把csv文件转xls,Excel怎么批量将CSV格式转换为xlsx或xls格式?VBA、宏、软件?...
  13. 安装pillow遇到的问题
  14. Fast and Accurate Recognition of Chinese Clinical Named Entities with Residual Dilated Convolutions
  15. 使用css中的white-space:pre-wrap;让html浏览器显示空白空格符
  16. ZYNQ裸板:LHB155304-RT篇
  17. 关于word插入题注“题注或页码中不含章节号”错误提示
  18. c++ bool类型
  19. 服务器上的压缩文件怎么解压,什么是压缩文件,如何解压?
  20. 2019届阿里巴巴春招前端面试经历

热门文章

  1. SQL注入 Less23(过滤注释符)
  2. php随机给文字拼音,汉字转化为拼音(php版)
  3. 使用手机陀螺仪 完成一个简单的小游戏
  4. 【Java设计模式】建造者模式(案例详解)
  5. 腾讯再增持,育碧持股增投3亿美元,钱多烧得慌还是物有所值?
  6. 四大世界权威大学排名指标及侧重点
  7. FFmpeg学习笔记之ffplay流程分析
  8. 一键部署应用到远程服务器,用起来真香
  9. 淘宝,京东,拼多多,1688 API接口大全
  10. ingress-nginx更改默认端口/修改apiserver端口范围