2021届应届生算法岗校招经验分享+吐槽(经验分享)
写在前面:个人背景,校招结果的总结,秋招和春招面试的回忆都在上两篇文章(https://www.nowcoder.com/discuss/655164,https://www.nowcoder.com/discuss/667185)。这次经验分享,主要写一下我在校招过程中的经验体会,还有是对曾经困扰我很久、让我焦虑很久的一些观点的纠错。
主要涉及到以下这些方面:
- 算法岗就业情况:真的“灰飞烟灭”吗?
- 算法vs开发
- 学校认可度vs个人能力
- 刷题的顺序、数量、作用
- 实习vs论文/竞赛vs基础知识
- 早投递vs晚投递
- 秋招vs春招
算法岗就业情况:真的“灰飞烟灭”吗?
从前几年开始,每年校招算法岗都会有一个劝退的新名词出来,“神仙打架” -> “诸神黄昏” -> “灰飞烟灭”,无限传播焦虑。我当时刚开始准备校招的时候看到这些名词和各种劝退,也是非常焦虑+有些不坚定。但是在亲身经历之后,根本不是这样,不用过于焦虑。
1. 2021届校招算法岗真的很难吗?
不是的!好好把基础搞扎实,把该会的学会,真的就可以成为offer收割机,基本不存在能不能拿offer,而是offer的待遇问题了。
2. 2021届校招算法岗比之前难吗?
是的。从我了解到的情况来看,前几年真的不难,甚至太简单了。有不少人根本没有把应该掌握的掌握扎实就能拿到各种大厂offer,这两年只是慢慢回归正常难度而已。然后很多人还想像之前那样基础不扎实、水水就能过,结果发现碰壁了,就开始散播焦虑。
从我亲身经历和了解到的情况来看,
代码题方面:前几年有些同学刷题随便刷个几十道甚至十几道就ok了,连很多基础的数据结构都没有掌握。
专业知识方面:从面试官的水平就能看出点问题,就像我在面经中吐槽的,有的面试官对resnet理解不深入,有的连最基础的大尺寸卷积核换成小尺寸卷积核的堆叠都不知道,有的连最基础的常识“大多数深度网络表达能力过剩都不知道”,有的连bn层都不知道。虽然每人方向不同,面试官可能不是你这个方向的,但是有些基础知识应该是作为一个算法工程师必备的。
算法vs开发
学习方式不同 + 岗位需求量不同 = 面试难度不同
学习方式不同:算法岗,只靠看书看视频看网课是远远不够的,需要大量的阅读论文。尤其是深度学习中模型的部分,不论是cv,nlp还是推荐,都主要靠阅读论文,现成的教材和视频很少,中文的教材和视频更少。但是像传统机器学习和深度学习的基础知识部分(激活函数,优化器等等),确实有一些很好的书籍和网课。并且学习路线也基本都是因人而异,因方向而异,要靠自己来筛选梳理自己需要学习的知识。所以说,算法岗学习过程中的难点,不仅仅在于知识本身的难度,还在于自己去筛选梳理学习资料的能力。开发岗,不论是前端后端还是客户端,学习路线和各种学习资料(书籍、网课),上网一搜一大把,选定一个,然后就跟着别人制定好的路线按部就班跟着学就行了。所以说,开发岗学习过程中的难点,主要在于知识本身的难度。
岗位需求量不同:开发岗的需求量远大于算法岗。尤其是开发岗中的前端、测开、客户端等,这两年是常年招不满,甚至允许零基础转岗(对于这点,除了岗位需求量大的原因外,也有申请人数相对较少的原因)。
面试难度不同:综合以上两点,导致了算法岗和开发岗的面试难度不同。但是不论是哪个岗位,只要自己缕清自己需要学习的,按部就班的静下心去学,都没问题的。
学校认可度vs个人能力
基本只要是985/211的科班或相关专业,都能过简历关,往后就靠个人能力了。只要跨过简历关,学校认可度这种虚无缥缈的东西,不会给之后的面试流程带来什么实质性的影响。所以没必要妄自菲薄或者掉以轻心,好好把知识学扎实才是最重要的。
我遇到过清北复交/藤校/G5的在校招时因为基础不扎实而屡屡受挫,我也遇到过普通985/211/海外硕士,因为自己基础扎实而收割各种大厂offer。所以相比其他岗位,互联网行业的技术岗是一个最不看背景最看个人能力的岗位了,付出和努力基本都会被兑现,偷懒和懈怠基本都会被惩罚。
刷题的顺序、数量、作用
顺序:我个人建议是先剑指offer的那75道,然后hot100,最后再查缺补漏(查缺补漏的方式可以有同类型的,每日一题,按照题号顺序或者根据面试中被问到的)
数量:按我这个顺序的话,200+比较稳,300+基本没问题。
作用:我认为刷题对于校招的帮助主要是面试,其次笔试。原因如下:笔试代码题:1.重要性不够。因为笔试对于很多公司来说不是必须的(有的公司压根没笔试,有的公司的笔试成绩只做参考,没实际影响)。只要通过笔试,你的笔试成绩对后面的面试就没啥影响了。2. 个别题难度太高+基本不会有原题。现在有很多笔试题都是终极融合怪(很多medium或者hard题融合在一起)或者竞赛题(比hard还hard),所以这种情况再加上基本不会有原题,刷题可能帮助提升不大。只要把能做的做了,基本都能过笔试了。反观面试代码题:1. 很重要。会直接影响你的面试结果及面试评级。2.难度适中+很大概率遇到原题。所以多刷题对面试代码题的解决帮助很大。
对于数据结构与算法基础比较差,想快手上手代码题,完成校招笔试面试的考验的同学的话,其他刷题顺序方式(按题号,按类型,按难度)都有一些相对应的缺点:比如说完全按题号来做题的话,可能做的题目会缺乏代表性,有些题目可能是考察概率很低的过简单/过难/过偏的题。完全按类型来做的话,可能对于做过的类型,你会掌握很深入,但是笔试面试过程中往往不会考察这么深入。那在有限的时间里,你很难覆盖很多题型,所以假如笔试面试遇到没有做过的题型,可能就要gg。完全按难度的话也是同理,有可能做的题代表性不够,不是面试的高频考点。
我这种刷题顺序就很好的解决了上面这些的问题:以剑指offer和hot100为核心(这些都是最高频的代码题考点),能快速提高应试的代码能力。然后再拓展/查缺补漏,可以进一步提高数据结构与算法的能力。大概对应关系是这样的:
认真刷完剑指offer(此时75题) -> 面试的代码题有50%的可能能做出来,笔试基本gg
+认真刷完hot100(此时175题)-> 面试的代码题有80%的可能能做出来,笔试有50%的机率能通过
+查缺补漏(250-300题)-> 面试的代码题有95%的可能能做出来,笔试有80%的机率能通过
实习vs论文/竞赛vs基础知识
那些散播焦虑,散播“灰飞烟灭”的人的一个惯用说辞:假如没有大厂实习+顶会+竞赛前几,就只能当炮灰。其实根本不是这样!除了那几个ailab可能会挂简历,其他都没有问题,关键还是你个人基础知识的掌握。我和一些发了顶会的同学交流过,水平各异。因为这几年注水严重,具体论文要具体分析,不是有篇顶会就代表自己基础扎实有个完备的知识体系,更不代表不用准备校招也能收割offer。我认为实习、论文、竞赛、项目,这些本身都不关键,关键是给面试官一个提问的切入点,也用事实告诉面试官说自己确实有ai领域相关的学习和实践。所以实习、论文、竞赛、项目,只要任意有几个可以证明能力的就行了。这里要补充一点的是,暑期实习倒是真的总体来说对就业挺有用的,正常情况下转正率很高(不过听说今年这届春招招的暑期实习太多了,转正率可能有所下降)。
早投递vs晚投递
有种说法是“越早投递越好,用面试来学习”,其实并不完全是这样,应该是自己做好准备之后再尽快投递。“早”不是无脑早,“用面试来学习”也不是无脑参加面试。因为现在各个公司都会把每次面试情况录入系统,你之后再次投递时,公司都会参考之前的面试情况。也就是说,多投递刷经验可以,但是尽量别太菜导致你被留下一个差评。或者说你选择一个你铁定不会去的公司来刷经验,这也是可以的。对于自己想去的公司,如果自己还没完全准备好,投递时间不差那一两周,不妨再多准备一两周再投递。假如你已经准备好了,那肯定是越早投递越好的。
秋招vs春招
还有个广为流传的观点是这样:“秋招是应届生的黄金季,岗位多,门槛低。假如秋招没拿到好offer,春招也没戏。因为春招岗位少,竞争大”。这句话也不完全对,要分开来看。对的点:秋招岗位多,春招岗位少。确实很多公司不会开设统一的春招,即使有春招的公司,岗位需求量也比不上秋招。但是春招比秋招难吗?春招比秋招竞争激烈吗?秋招没好offer,春招也没戏吗?我不这么认为。我认为这两次校园招聘难度基本相同,都是只要好好构建自己的知识体系,基础打扎实就可以了。所谓“春招比秋招竞争激烈”的论据是那些考研党和出国党会加入春招,导致竞争者增多。数量多是多了,质量又如何呢?这些人的准备校招时间肯定远比一个从秋招就开始准备的同学差很多。而且算法岗基本都是硕士生,硕士生会轻易被一个考研失败的本科生给挤下去吗?假如你是本科生,同样都是本科生,你的准备时间比他们长那么多,而且他们没考研成功,说明他们也不比你强很多。别怕别焦虑,好好把自己的知识学好就没有任何问题的!
写在最后:
面试真的有运气成分!如果你像我一样,准备充分并且回答上来所有问题还是失败了,别灰心!继续努力!广撒网!要坚信你的付出一定会得到回报!退一万步说,即使整个校招都不成功,也别灰心!校招只是个起点,之后的工作中只要努力,你一样还有无数机会去兑现你的付出!
#学习路径##校招##算法工程师#