2020CV秋招求职的若干思考
点击上方“3D视觉工坊”,选择“星标”
干货第一时间送达
前言
一、秋招到底要招什么样的人
二、秋招该如何准备
1.储备基础知识
1.1 C++
1.2 基础数据结构和算法
1.3 深度学习基础
2.落地工程能力
3.加分项技能
3.1 CUDA
3.2 infer推理框架
3.3 熟悉深度学习框架源码
三、有哪些面试技巧
1.如何引导面试官
2.面试的那些黑话
3.面试要避免什么
1 不懂装懂
2 口气蛮横,没有礼貌
四、总结
前言
知乎上对算法岗的提问逐渐从“饱和”、““神仙打架”、“诸神黄昏”到“灰飞烟灭”,甚至预订了明年的“车毁人亡”(https://www.zhihu.com/question/409409134/answer/1367920384)
笔者毕业于2019年,参加了2018的秋招,结合自己秋招经历和今年听到的一些学弟学妹的秋招历程,简单谈下对CV秋招的看法。
注:以下观点仅适用于自动驾驶或CV领域的招聘和求职,有部分观点可能不适用于NLP。
一、秋招到底要招什么样的人
知己知彼,百战不殆。我们先从招聘网站随便抓两个计算机视觉方向的JD文案来看下吧:
视觉感知算法工程师
职位描述:
1.负责自动驾驶感知算法的研究、开发与部署。
任职资格:
1. 计算机视觉、模式识别、机器学习、电子信息、机器人等相关专业硕士及以上学历;
2. 熟悉当前主流的深度学习算法,包括但不限于目标检测、图像分割、多目标跟踪、多任务学习、多传感融合等领域;
3. 熟悉常用的深度学习开源框架,如TensorFlow、PyTorch、MxNet、Caffe2、Caffe等,要求至少对其中一种框架较为熟悉;
4. 具备较强的分析解决实际问题的能力;
5. 有良好的沟通表达能力和团队合作意识,并具备较强的抗压能力;
6. 至少精通C/C++或Python编程,有ACM经验者优先;
7. 有无人车感知定位算法研发经验者优先,有计算机视觉及模式识别领域顶会(CVPR/ICCV/ECCV/ICML/NeurIPS)或顶刊(TPAMI/IJCV/TIP)者优先,有*学术比赛成果或实际工程项目经验者优先。
SLAM算法工程师
职位描述:
工作内容:
1、负责研究SLAM、多传感器融合、地图构建以及定位等算法;
2、负责算法在嵌入式平台的实现、优化以及产品化;
岗位要求 – 必须:
1、熟悉EKF、粒子滤波、g2o、BA等算法;
2、扎实的数学功底,精通线性代数、概率论、微积分;
3、具有良好的英文听说读写沟通能力,学习能力强,求知欲强烈;
4、具有良好的团队合作意识、沟通能力、协调能力,能够承担工作压力;
5、精通C++、Matlab或者Python;
岗位要求 – 优先考虑:
熟悉开源机器人操作系统ROS,有相关开发经验
上面两个JD文案有“实现”、“开发”、“落地”和“产品化”等字眼,这意味着现在对算法工程师的工程能力要求更高了。
今年疫情大背景下,纯做研究的部门已经很少了。腾讯优图实验室负责人贾佳亚于2020年离职,重返港中大任教。字节跳动 AI Lab 负责人马维英也在今年离职,加入清华。这些新闻其实也能反映出一些行业趋势:AI研究对于公司来说具有重要的意义,但是在落地上的困难,以及短期内收益上陷入困境确实普遍的现实情况,使得研究院面临各种竞争压力,纯粹的研究与快速商业化之间的矛盾,亟待解决。
CV算法工程师在今年更多地变成了落地算法工程师,笔者所在的公司甚至都不招研究性算法工程师,HC全部留给了落地算法工程师。
二、秋招该如何准备
1
储备基础知识
1.1 C++基础
恰好上面两个JD文案都要求精通C++,这不是巧合。 只要你是CV的算法工程师,C++是最重要的技能。
可能有些同学会觉得,如果投递CV算法研究员,只需要掌握Python和深度学习框架就可以,无需C++这个技能了。但算法工程师,首先得是个合格的工程师。正如贾扬清大佬前段时间所说:
不存在算法工程师、调参侠没有市场
https://www.zhihu.com/zvideo/1280989974280634368
在实际工作中,想让一个模型更小、运行更快、效果更好和保持业界领先的话,只掌握Python和深度学习框架是不够的。
一方面,我们听过的几乎所有深度学习框架:TensorFlow、PyTorch、Caffe、NXNet、Paddle和OneFlow等,都是C++写的。另一方面,即使做CV算法研究,有时也要去看Python API的C++源码和实现,手写一些复杂的算子OP。毫不夸张的说,CV万物皆基于C++。
CV求职,C++再怎么熟悉都不为过。
1.2 基础数据结构和算法
实习那会mentor有一句话,我至今印象深刻:“不管候选人简历多么好看,发过多少paper,比赛拿过多少奖,递归二叉树和二分查找都写不出来,毫不犹豫刷掉!”
作为企业招聘方,我觉得最快筛选候选人的办法,就是拿leetcode去考察。如果对方能写的出来,至少说明此人有准备过面试,具备基本代码能力。但如果候选人写不出来,要么说明对方没准备过面试,要么不会写代码。
在实际工作中,基础数据结构和算法反而用的不是太多,但在招聘求职中,这个占比很重。因为这是你通往后面面试的必经之路。都2020年了,哪家CV公司还会招只会吹牛不会写代码的候选人呢?
狂刷leetcode和剑指offer,二叉树、字符串、数组、排序和动态规划都要熟悉下。至少200道题目,才能在笔试游刃有余,否则就有可能败在笔试。
求职前,leetcode题目刷再多都不为过。 记得用C++刷leetcode哦(狗头)。
1.3 深度学习基础
这部分内容包括CNN、深度学习基础知识,常见的网络结构和经典CV算法。
另外选一个主攻方向,比如2D Detection,那就需要精读近几年检测方向的论文。单阶段双阶段检测算法,Anchor Based和Anchor Free算法等等。在这个特定领域深耕,保持深度之外,在其他segmentation、MOT和ReID等方向,也要阅读一些优秀的文献,保持广度。
有少部分公司在面试时会要求手推公式,这里也要求CV求职者具备一定的数学功底。比如矩阵、微积分和概率论等。
2
落地工程能力
步入职场,最主要的技能就是解决需求,实现代码。这就需要我们具备较为扎实的落地工程能力,包括调试、操作系统、内存机制、多线程、低延迟和网络等等,这些才是计算机专业的核心竞争力所在。
快速上手源码,能把想法和需求转为代码,落地实现,这是对每一个CV工程师乃至所有领域工程师的要求。
3
加分项技能
这部分内容可能对你获得SP或者SSP offer有帮助
3.1 CUDA
会CUDA意味着你有可能手撸一个深度学习框架,对深度学习的计算过程掌握更加透彻。旷视大佬张祥雨这篇介绍文章(https://news.hexun.com/2019-04-22/196906796.html)给我留下印象深刻的一句话就是:他是唯一一个在巨佬堆里会CUDA的人。
3.2 infer推理框架
现在训一个深度学习模型,几乎高中人都可以做。脸书的两代Detectron框架、陈凯博士的MMDetection框架和百度的视觉算法库,几乎已经把深度学习经典算法复现的一干二净。训练模型,几乎只是git clone and run的流程。
但在infer推理领域,因为深度学习部署面临的软硬件差异较大,很难做到一家独大。TensorRT、OpenVINO、 MCNN、MNN、TNN、TVM和Tengine等,形成了百家争鸣的局面。CV求职者,如果对推理infer框架的熟悉,无疑是一个很强的加分项。
3.3 熟悉深度学习框架源码
这部分和上面一点同理,这里只说一句,毕业那年,我们全年级薪资Package最高的巨佬,最后去图森写MXNet了。他在校期间就阅读MXNet源码并有过贡献,面试也非常顺利。
三、有哪些面试技巧
1
如何引导面试官
自我介绍快速讲解自己亮点项目,然后埋下一些伏笔。比如说自己在这个比赛用了一些trick,提分比较明显,但在介绍时不详细说明白。面试官可能在后续面试中追问这些细节,这样就有可能引导面试官进入自己擅长的领域。
2
面试的那些黑话
等通知,以后联系,等消息,hr会告诉你的——>如果现场面试,这些话几乎暗示你挂了;如果是电话或者远程面,可以再等等看。
你的情况我了解了,我把简历转给其他组——>除非你这次面试答得不错,或者面试官转简历意愿口气强烈,不然也是婉拒说辞。
我们会去你的学校招聘,到时候联系——>面试官发好人卡了。
面试完,但没有问你有没有什么要问的——>有可能面试官比较匆忙,但更有可能你没有给面试官留下什么较好的面试印象。
注意人事同事来电,等下一轮面试官——>正向反馈,该次面试通过。
我们非常欢迎你来看看或者了解我们这里——>正向反馈,该次面试通过。
面试官面试中加入一堆公司或者部门业务介绍——>正向反馈,对你感兴趣,该次面试大概率通过。
1
面试要避免什么
不懂装懂
简历上的每一个名词,算法都要达到了如指掌,细节如数家珍。切忌为了简历丰富疯狂堆砌,一旦被面试官追问就原形毕露了。
另外面试时如果遇到不会的问题,说不了解就可以了。千万不能不懂装懂,不然会给面试官留下浮夸的印象。哪怕后面面得再好,对方也会认为你不靠谱。
口气蛮横,没有礼貌
极少数时候,可能因为某些原因,和面试官怼起来。我的确也怼过一个面试官,原因是他把我搞的所有东西说的一文不值,我反驳了面试官,我说这东西一文不值,为何没有人在网上做出来开源呢。当然,这个也是小插曲。就是不是所有的面试,我们都可以保持情绪冷静。但无论如何,我们都得保持礼貌,不能对面试官恶言相向。哪怕这个面试官业务水平和礼貌不在线,也要竭力保持礼貌。先为人,再做学问。
总结
求职本身就是一个不确定的事,有很多因素影响,现场面和远程面感觉也相差甚远。一篇文章很难全部总结出求职面试的方方面面。但多经历面试总能掌握出一些规律,除了极少数offer收割机,大多数人的求职过程都比较相似。秋招类比抗日战争,毛爷爷的“论持久战”思想对大多数人都比较适用,速胜论和亡国论都不靠谱,只有持续的总结和迭代,才能走向秋招胜利的彼岸。
虽然2020年内有疫情,外有贸易战,但中国国企私企加起来有成千上万,秋招还是可以上岸的。愿每一位学弟学妹求职顺利,得到满意的offer!
本文仅做学术分享,如有侵权,请联系删文。
下载1
在「3D视觉工坊」公众号后台回复:3D视觉,即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。
下载2
在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总,即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。
下载3
在「3D视觉工坊」公众号后台回复:相机标定,即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配,即可下载独家立体匹配学习课件与视频网址。
重磅!3DCVer-学术论文写作投稿 交流群已成立
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。
同时也可申请加入我们的细分方向交流群,目前主要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流等微信群。
一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。
▲长按加微信群或投稿
▲长按关注公众号
3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、可答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~
上一篇: Linux命令:find
下一篇: ZooKeeper的功能以及工作原理
推荐阅读