头铁!我就硬钢算法岗!
你好,我是阿秀。
虽然以前聊过很多次不是很推荐普通人从事算法岗,但也说过有几种情况你是可以尝试去从事算法岗的:
1、学历不错,至少985起步
2、有顶会或者阿里天池Kaggle的比赛落地经验
3、实习经历多,自己也愿意从事算法岗
具体你可以看下这篇文章:为什么我苦口婆心劝你不要找算法岗但是有的人确实是真心喜欢算法岗,喜欢CV、喜欢NLP,对他们来说兴趣就是最好的老师。
那么,go ahead!直接冲吧!
今天分享一位师弟的算法岗上岸之旅,他是没有985的背景,但他很喜欢算法岗,即使在万人劝阻的情况下,依然选择CV算法岗。
即使实验室近三四年以来没有一个师兄师姐拿到算法岗的offer,包括这位师弟的同门在内他们实验室全都是走的开发路线,只有他自己一个人坚定不移的走算法岗!
这篇文章他前后一共花了17天时间,每天抽一个小时完成了的超长经验贴,谨以纪念他自己长达两年的秋招战线,希望帮助到更多还在犹豫是否入坑算法岗的同学,下面是他的分享:
你好,很高兴你点开我的文章,我想分享一下自己自己秋招上岸CV算法岗的全过程,谨以纪念自己长达两年的秋招战线。我的分享主题是
普通段位玩家的CV算法岗上岸之路(2023届秋招)
1、写在前面
是的,今年的秋招确实是肉眼可见的难度增加:缩招、裁员、毕业生人数爆炸,这些关键字已然成为2023届秋招的代名词。
竞争激烈,算法岗入坑的难度更是直线上升,卡第一学历、卡名校、卡重点实验室......这些“基本操作”早已司空见惯。
在卷成麻花的2022年,一个没有上述背景、没有名校撑腰的普通科班小硕能入坑中大厂的CV算法岗吗?
我的回答是:能,但是很难、很卷,且容错率较低。
因为CV算法岗的竞争对手基本都在985分段,且动不动就是某C9高校的重点实验室。
因为身边的人不走算法岗,所以全程基本靠自己摸索,期间遇到了各种困难、走了许多弯路。
为了记录这段有意义的经历,同时给自己一样出身普通的师弟们(实验室没有师妹)提供CV算法岗的就业思路,将本人的整个秋招的真实历程分享给大家。【长文警告↓↓↓】
导读:
本篇文章主要分为以下几个章节:
- 【背景】,【历程】主要介绍了本人秋招前的状态,以及从研究生入学到秋招的过程。
- 【需要掌握的技能】从硬实力、软实力两个方面介绍秋招时可以增加自己竞争力的点。
由于每个人的基础情况不同,CV算法岗也有较多细分方向,本章节仅供参考,大佬请直接略过。 - 【总结】秋招的一些小的建议。
补充说明:
1、阅读文章之前,请务必了解CV算法岗的秋招形式严峻,这不是开玩笑的,请保持理智。
2、本文的“普通”一词是指本科双非、硕士非985、非重点实验室、无顶会、投递岗位为CV算法岗的计算机科班应届研究生,并无冒犯之意。
2、背景
1、概述:
本人本科双非软件工程专业,硕士普通211的计算机技术专业,目前研究方向是计算机视觉。
秋招拿到【虹软、vivo、OPPO三家offer,均为计算机视觉类(CV)算法岗,有SP也有大白菜】(除去国企银行),和大佬们的offer没得比,但感觉基本接近自己的预期。
虽然已于9月获得虹软转正意向书,为了给自己的秋招不留遗憾,同时可以通过不同的offer明确自己在秋招大军的整体定位,所以坚持完整参与了秋招。
2、具体情况:
- 身边的环境
除了我的大大大师兄(高我三四届)拿了某中厂算法offer以外,我们实验室就再也没有人走过算法岗。
包括同门在内的同届同学,也基本都是开发,师兄和同学也都劝退我走算法,改开发。
是的,只有我一个人。
在我找到第一份算法实习之前,大部分人都认为我选择这条路是一个头铁且愚蠢的行为,且常听到阴阳怪气的言论。
每次刷知乎,总能看到“19年算法岗供大于求”、“20年算法岗诸神黄昏”、“21年算法岗灰飞烟灭”。
今年又换了个四字词语 --“人间炼狱”,各路“过来人”也都是全方位劝退。
好在自己的家人比较支持我自己做决定,只不过最后选择offer的时候,家人们曾劝我躺平一个随手拿的国企,放弃自己的专业,我要真想躺平还用的着这么卷么,大无语。
总之,身边自始至终支持我走算法岗的,四舍五入就只剩自己了。没关系,意料之中罢了。
- 自己拥有的一些条件
导师不会push我们给他发论文,且只要完成规定的任务,就允许我们自己出去找实习。划重点,这是我【秋招上岸的关键性因素】
实验室有免费使用的入门级计算资源,虽然只是1080Ti这种级别的显卡,且当时还要和师兄一起用。
但是拿来学习跑跑实验还是绰绰有余的。同时家里赞助更新了一台2060GPU的笔记本,用来本地调试也挺好使。
学校的线下课程在研一期间全部上完,研一课程结束就可以做实习早鸟。
3、秋招历程
本节按照时间线的顺序,叙述了本人历时两年的秋招战线,整整。
1、【初识算法】2020年9月~2020年10月
结束摆烂、确定方向阶段。研究生入学,之前联系的导师莫名其妙把我鸽 了,不得不重新找导师。
我的选择标准有两个:一是教授,二是允许实习。在本科国奖托底和自己死皮赖脸的坚持下,我现在的导师给加了一个名额,顺利入组。
导师给我明确了CV的研究方向,同时分享了一些资料(因为才学疏浅,当时没能看懂,后面就跑去B站知乎学习了),每周组会汇报自己的学习进度,也是这个时候发现自己对CV挺感兴趣的,也是初生牛犊不怕虎,确定自己走算法岗的方向。
2、【走出迷茫】2020年11月~2021年2月
夯实基础阶段。因为导师安排的任务主要偏学术,我也意识到:如果仅仅靠导师的指导、按部就班的学习就去找算法岗工作,是远远不够的。
于是,自己找到了一位前辈指点自己系统地入门深度学习。
之后制定学习计划、学习基础铺垫知识、筛选和阅读paper、debug源码、参照已开源的工作来复现未开源的论文......
在完成导师布置的任务之余,花了大量时间,算是搞明白深度学习的路子了。
在此期间,完成导师安排的项目、自己找一些开源的项目补充学习,可以加深自己的理解同时还能润色简历。
当时的部分学习计划(分类&检测篇)
因为搞算法除了python的基本要求外,C++多少也要会一些,也是从这个时候,制定了刷力扣的长期计划,强迫自己学习C++,编程题也全部用C++写,刷题不求多,但重在把思维和语法熟练度锻炼好。
我也是在这个期间认识到了秀哥,看了他很多的推文,感谢他。
3、【稳扎稳打】2021年3月~2021年5月
备战实习阶段。过年给自己放了半个月假,开始着手找第一段实习。
听了师兄的建议(当时师兄在鹅厂实习搞开发,respect),开始刷牛客面经,查漏补缺,力扣保证一周刷七题。
同时系统地整理之前学习的笔记,也是这个时候我写了知乎的第一篇博客,并立下了一年写完50篇技术博客的flag(已于2022年4月达成)。
4、【初露锋芒】2021年5月~2021年6月
第一段实习的投递、面试阶段。第一次投实习没有经验,先投了一些难度拉满的大厂:商汤、字节都给了面试,但是面得稀烂,商汤的面试官更是在无coding题的情况下问了我两个小时的问题,面试结束后当场自闭。
后来总结了面试失败的经验,也补上了自己面试中没有答出来的知识点。
现在想想,当时的我真的是愚蠢至极,就应该先面小厂,积累面试经验,起码不至于面试过后脏了自己的大厂面评(因为秋招的时候,这两家秒挂我的简历,应该是自己作没的 )。
经历了十多场面试,也积累了足够的经验,最终自己如愿拿到了vivo AI研究院的算法岗实习offer。
5、【渐入佳境】2021年7月~2022年1月
第一段实习。在我的软磨硬泡下,导师先是同意我出去实习半年(美滋滋)。
入职以后,令人窒息的压力接憧而至:老大给我的研究方向是神经网络结构搜索(NAS)方向 -- 一个自己从来没听说过的预研方向,与此同时,同组的实习生来自武大,还比我早来一个月,需要尽快跟进她的进度。
于是,自己白天调研相关工作、复现一些论文、慢慢接手项目,晚上加班读源码、刷博客(卷到了旁边的实习生,实在抱歉)。
第一个月顶着压力,总算把进度拉上来,项目步入正轨。
9月,恰好看到Kaggle有个CV新赛,恰好这时候蓝厂取消大小周,于是就报名参加了。之后差不多两个月的时间,白天赶项目,晚上和周末搞比赛。
11月,项目需要优化的模型计算量首次降低到100M以下,同时比赛也拿到了铜牌(第一次参赛,拉胯的成绩,但尽力了)。
后面的时间就是边实习边准备开题,顺利完成了实习阶段的任务,拿到了口头转正(可惜AI研究院今年不招人,靠自己重新走流程拿的影像算法部,权衡了一下,还是想待在自己熟悉且喜欢的组),与nice的同事们告别。
6、【一波三折】2022年2月~2022年5月
向导师争取了第二次实习的机会,开始着手准备暑期实习,同时和之前实习的武大同学合作一篇论文。
但没高兴多久,上海的疫情就爆发了,几乎整个上海的实习HC都没了,与此同时学校疫情封楼,天天牢饭吃到心态爆炸,差点想转开发(庆幸自己没转)。
虽然有了一段大厂实习经历,但找第二段实习甚至更艰难:收到一堆海笔,只收到了三家面试(某周的周一面了美团,面试官很nice,面试也顺利,他还表达了希望我面试通过后早点过去实习,结果周五反手收到个感谢信☺)。
磕磕绊绊拿到了第二份offer -- 虹软的计算机视觉算法岗实习。
7、【稳中求胜】2022年5月~2022年9月初
第二段实习。这次研究方向是视线检测,因为在蓝厂的实习积累了许多项目经验,所以无论是搭环境还是上手项目都很快。
我们组所有的实习生每周都会单独开个周会,可以了解大家的进展,同时还能偷学一些技巧,因此在这边自己成长的速度很快。
和我搭档的实习生是天大的,我俩都做视线方向,经常一起讨论项目中遇到的难点,如我mentor所说,1+1 > 2,无论是实习还是秋招,找个伴共同进步总好过孤军奋战。
7月~9月初,工作时间肝项目,下班以后的空闲时间刷题、刷面经,准备转正答辩,投提前批(算法提前批卡学校,基本全泡池子),投秋招,基本每天搞到11点才休息(转正名额有限,不敢做赌狗)。
8月底顺利通过转正答辩,9月初拿到了虹软为数不多的转正意向书。
8、【冲刺终点】2022年9月~2022年10月
收获的季节。实习结束,导师召回返校,一边做导师安排的工作一边搞秋招。
总共笔试了二三十家公司,面了六七家(因为不是985、研究方向有差异,也被拒了蛮多)。最后到手虹绿蓝三家offer,于十月中旬尘埃落定。平时经常做RGB图像算法,没想到拿的offer也刚好涵盖RGB三种颜色 ,或许这就是缘分吧。
4、需要掌握的技能
1、硬实力篇
1.基础知识
入坑算法岗的基本功。推荐李航老师的《统计学习方法》以及周志华老师的西瓜书。
入门深度学习推荐斯坦福《CS231N》课程(在B站上可以找到中文字幕版)。
不太推荐一上来啃《深度学习》(花书),对小白不友好,但是后期可以当工具书使用。
确定了自己的研究 / 学习的方向后,可以在各类博客上找到对应方向大牛整理的paper list,选取一些经典必看的论文,并在Github中找到对应的源码阅读【一定要看源码,一定要看源码,一定要看源码】。
面试的时候,资深的面试官经常会问一些细节问题,而只有你理解了源码是怎么实现的前提下,应对这些问题才能游刃有余。
在学习时,要及时总结和整理,将论文里的知识精炼成自己笔记的过程,其实就相当于模拟回答面试官问题的过程。
整理的东西多了,就变成的所谓的“八股文”,相较于开发,算法的面经更灵活,面试的问题也因人而异,一份属于自己的“八股”很重要,同时它也是实习和秋招面试前最有价值的复习资料。
这里比较推荐阿秀的校招笔记,我基本很多问题都是在这个上面总结的:https://interviewguide.cn/notes/01-guide/web-guide-reading.html
2.实习
如果导师允许的话,【一定要尽早出去实习,一定要尽早出去实习,一定要尽早出去实习】。
实习经历越丰富、实习公司的层次越高、实习的时间越久,你的竞争力越强。曾经有HR和我说过,CV算法岗的普通分段同学很少能进流程,如果没有实习经历,自己大概率会被淘汰。
PS:实验室不给实习的同学,也不要灰心,实习不是入职算法岗的必要条件,但是如果你但凡有机会实习,一定要好好把握。
3.项目
冷知识:在简历和面试中把自己的论文以项目的形式描述,面试官会更感兴趣。
“如果你发表的不是顶会,那么我更希望你用项目的形式叙述你的作品。”这是面试时一位面试官的原话。
所以在这里,我把自己的论文归类为项目,且当我把论文以项目的形式更新到简历中,后面的面试会问到这部分工作的频率明显增加。
很多人觉得自己的项目可能不是那么出彩,觉得拿不出手。
在这里完全可以打消这个顾虑,我们投的又不是天才少年计划,所以只要能把自己的项目讲明白,言之有理,都可以作为一个加分项。
在面试前,一定要梳理好自己的项目,例如解决的问题、应用场景、创新点、难点、数据是怎么处理的、badcase是怎么优化的、后面还能改进的地方......
讲项目的时候一定要自信、有条理,建议面试前可以多试讲几次录个音。
4.比赛
打比赛有两种策略:
第一种策略:运气好,碰到了自己熟悉方向的比赛,在比赛中尽可能刷高自己的名次。
第二种策略:只有自己感到陌生的方向(不过也是CV类比赛),用最快的时间上手该方向,然后尽可能深入,争取比赛中较好的排名。
我当时的运气并不好,没有遇到自己熟悉方向的比赛,所以选择了第二种策略。
花了一个多月的时间,利用下班时间和周末的空当去打了场kaggle比赛,因为第一次参赛加上精力和水平有限,以一枚kaggle的铜牌收场(让各位路过的大佬见笑了)。
但是面试时,向面试官展现快速上手陌生领域工作的能力,同时把自己的创新点以及解决问题的思路、所采用的方法都讲清楚,也是一个不错的加分项。
2、背景
1、概述:
本人本科双非软件工程专业,硕士普通211的计算机技术专业,目前研究方向是计算机视觉。
秋招拿到【虹软、vivo、OPPO三家offer,均为计算机视觉类(CV)算法岗,有SP也有大白菜】(除去国企银行),和大佬们的offer没得比,但感觉基本接近自己的预期。
编程能力
老生常谈的问题,无论是笔试和面试,手撕代码都是不可或缺的一个环节,最有效提升自己编程能力的手段就是刷题。
因为自己在考研时就有深入学习过数据结构,且本科在打一些编程比赛时也有系统地练习过一段时间,
力扣的《剑指offer》《热题Top100》系列也是很经典的题目。
一些高频题型或者自己第一遍没吃透的题目,最好再二刷三刷加深理解。
自己的刷题量在300道左右(后期没有刷新的题目,而是二刷甚至三刷把算法吃透),属于中规中矩的水平,笔试中的hard题写起来有些吃力,但是面试中手撕代码基本都能A。
2、软技能篇
本章节是自己在实习中和组内大佬们工作、相处中总结出的一些内容,可能对大家的实习转正有帮助,也是我认为自己能拿到转正意向的一些重要因素。(因人而异,仅供参考)
1.表达能力
【搞CV,做出来的是东西,但东西是给人做的】认清这一点很重要,不要只沉浸在创作的过程中,要能把自己的想法、实现方式清晰明确地表达出来,别人才知道你这段时间在做什么,做出了什么。
千万不要自己明明做出了一些成果,却因为支支吾吾表达不清楚,让大家觉得你很水。要
时刻牢记:无论我做了什么,只要是我自己做出来的,都能够给人讲明白。
2.沟通能力
【清晰地回答问题 & 高效地提问问题】,有效沟通主要体现在这两个方面。
大部分人都能做到前者,回答问题前,先大概想一下应该从哪些点来回答提问者的问题,不要想一出说一出,这样别人会认为你的逻辑很混乱。
这里重点介绍后者。首先,要明确什么问题可以问。举个例子,项目环境怎么搭建,或者百度上/公司内部文档能搜到的问题,自己费点心思解决就好。如果自己尝试解决但解决不了,那这种问题就很适合问。
其次,问问题要有自己的思考,如果遇到一个不懂的问题,可以先说一下自己尝试解决这个问题的方法,以及自己的理解,然后指出到底哪里的细节不懂,这种情况对方一般很乐意解答。
最后,问问题选准时机,如果你觉得这个问题对方需要花时间才解释清楚,就找个对方有空的时候(平时可以多观察一下你的mentor,看他一般啥时候不忙),因为有时候对方回答的比较敷衍可能确实是因为没有时间。
3.反馈能力
【自己完成的每一个阶段,都最好让别人心里有数】当手里有团队分配的任务时,最好定期向mentor反馈进度。
这样你走的每一步都是可控的,如果你的想法不可行,可以得到及时纠正;如果发现当前的结果和预期有偏差,也可以及时发现问题所在。
千万不要自己捣鼓来捣鼓去,到了deadline发现自己一点进展也没有,最后汇报工作时,你尴尬、你的mentor也尴尬。
4.自驱力
【主动探索问题的解决方式】在公司里,会发现大佬们的时间都很宝贵:没有人会像学校里的老板一样有时间整天盯着你干活,也不会有人时刻指点你这个项目该怎么做。优胜劣汰的环境下,只能靠自我驱动。
在几乎不靠别人帮助的前提下,自己主动提出正确、可行的解决方案,同时想办法用代码实现并取得成果。
这本身就是一件可以证明自己能力的行为,同时积极主动解决问题的态度也更容易给人留下深刻印象。
5.逻辑思维能力
【思考问题尽可能清晰且有条理】简单来说,就是把每份任务都当做一个小论文去对待,做到像论文一样思路清晰、有条理,做每一件事都有自己的思考,有自己的路子。
这个能力在研究生阶段或多或少都能得到锻炼,在这里就不再赘述了。
6.规划能力
【把一个大目标拆分为具体环节的能力】明确自己的目标以后,有清晰、可行的规划。
例如,为了完成秋招这一大目标,我把两年的时间拆成了多个阶段(详见历程章节)去实现目标;
为了提升自己的竞争力,把CV算法工程师所需要的能力拆分成硬实力和软技能两大类,然后每个大类再拆分成具体的环节,逐一提升自己的能力。
7.执行力
【下了决心就马上去做,不拖泥带水】有些人之所以是思想上的巨人,行动上的弱者,主要是因为缺乏执行力(仅用于描述一些客观存在的人群,请勿对号入座)。
克服懒、拖延这两个坏毛病,这一点自然而然就能做到。
5、总结
1.没有伞的孩子,必须努力奔跑。互联网的大环境变差,普通玩家的体验越来越糟糕,只有掌握过硬的本领,才能在凛冽的寒冬中生存,在恶劣的大环境中也能游刃有余。
2.要有自己的判断力,别人认为困难的事情,未必自己做不成。经常研究别人的凉经只会增加自己的精神内耗。
3.打铁还需自身硬。基础不牢,地动山摇。
4.能实习,尽早出去实习;不给实习,尽量争取实习;实在不能实习,取长补短弥补自己的实习经历空缺。
5.如果不能在某一方面做到出类拔萃,那么根据木桶原理,请尽可能做到面面俱到,包括但不限于硬实力和软实力。
6.秋招对于大部分人来说都不是一帆风顺的,要做好心理准备。自己也遇到了很多心态爆炸的经历(没写进去是因为太搞人心态),但能坚持熬过去就上岸了。
6、写在最后
本文详细介绍了自己秋招上岸CV算法岗的全过程,除了自己努力的因素外,还不乏选择、运气、机遇等不确定因素的加持。
前后一共花了17天时间,每天抽一个小时完成了本篇的超长经验贴,谨以纪念自己长达两年的秋招战线,希望帮助到更多还在犹豫是否入坑算法岗的同学,同时可能也是本年度封笔的文章了。
这篇文章仅供各位读者参考,在选择就业方向时请保持理智(大佬请随意),最后预祝各位还在秋招的同学们顺利拿到自己心仪的offer。
如果你觉得这篇文章有帮助的话,请多多点赞转发,希望可以帮助到更多有需要的人。
本文转载自公众号:拓跋阿秀