写在前面

大家好,我是小王同学,最近看到周围的小伙伴陆陆续续在准备今年的互联网春招和秋招,不由想起去年的自己准备秋招的情景。

我的情况比较特殊,我在去年的3,4月份之前还在准备转博,后来因为一些个人特殊的情况不得不准备找工作,所以我是在5月份才开始正式准备找工作。比较幸运是,在比较短的准备时间内,我的秋招之路还算比较顺利,最终拿到了快手、字节、滴滴、shopee(sg)、阿里等十余个互联网公司算法岗的offer,也都拿到了还不错的package。

所以各位同学可以准备的时间要比我充裕的多,通过这篇文章,把我准备找工作的过程、心得体会和踩过的坑写下来,既是对一段经历的总结,也希望能够给各位同学一些启发,希望准备找工作的同学可以少走一些弯路。

本篇分享贴适合于今年准备找工作的同学,当然想提前为求职做准备的同学也可以参考。

提纲

这篇分享贴可能会比较长,主要分为以下几个部分

  • 「简历」

  • 「代码能力」

  • 「机器/深度学习基础」

  • 「面试」

简历

简历的重要性相信不用我过多进行阐述,面试官对你的第一印象都来自于你的简历。如果你简历做的糟糕,纵使你有惊世之绝学,可能连面试的资格都不会有。

我个人觉得在准备找工作的时候第一步就应该做你的简历,这么做有如下几个好处:

  • 「对目前的状态进行一个阶段性的总结」。自己现在能拿得出手的干货有哪些,有哪些优势和作品可以在简历上进行展示。
  • 「查漏补缺」。一份好的互联网研发岗求职简历应该包括几个核心模块(下面会一条一条讲),有哪些模块是自己比较薄弱的,应该利用宝贵的时间进行针对性的补强。一场面试差不多40分钟到一个小时,绝大部份面试官都是根据你的简历问问题,你的简历内容比较充实的话,那么面试的主动权就掌握在你的手上,因为面试官可以问的都是你自己熟悉的。相反,如果你简历的内容比较薄弱,没什么可问的,那主动权就在面试官手上了,这样你可能都不知道面试官下一个问题会问什么。
  • 「利于更新迭代」。一份好的简历从来都不可能是一次就做好的,在你不断准备,不断充实自己的过程中,简历也能够不断进行迭代。

一份好的简历研发求职简历应该力求简明、突出重点。内容应该包括如下几个模块:

  • 「个人信息」。包括姓名、个人照片(正式、最好是证件照)、联系方式(电话+邮箱)、个人主页(如果有并且是加分项的话可以放上去)
  • 「教育背景」。包括在校时间、学校名称、专业名称、排名、所学专业课等等。
  • 「荣誉奖项」。包括你所获的一些奖励名称等等。
  • 「项目经历」。这边主要是包括你在学校/公司实习期间所参与的一些项目/比赛等等。需要注意的是,「重点词汇要加粗」,这样方便面试官快速获取想要的信息。关于项目经历一些同学可能会比较头疼,因为实验室资源受限等原因,自己没有很多能拿得出手的项目。在这边我提供一个思路,大家可以去参加天池、kaggle上面的比赛,拿到一个还不错的名次,这种经历也是可以写在简历上的。
  • 「科研成果」。如果有的话,写上自己在学校期间的科研成果,包括论文、专利等等。
  • 「专业技能」。研发岗位的话,这边主要写你所掌握的一些硬技能(编程语言等)和软技能(沟通、合作能力等)。

当然,上面所提到的的模块不一定都要有,需要根据个人的情况灵活变通,比如说你荣誉奖项就只有两个,那你荣誉奖项这一个模块就没必要单独拎出来,可以将其融入到教育背景里。

关于简历的样式,大家可以参考超级简历这个网站(非广告),下面是我觉得还不错的简历样式。想要我的word简历模板的同学,也可以联系我获取。

21届互联网算法岗求职经验分享_21届互联网算法岗求职

另外,制作简历的时候还有其他几个要注意的地方:

  • 「一定一定要注意简历的排版和字体」。我之前在实验室负责招生相关的工作,见过很多份同学的简历,很多学生背景很不错,但是简历做的惨不忍睹。你的简历的排版是否美观、上下文是否对齐,字体是否统一等等这些细节问题一定要注意。这些地方面试官基本一眼就能看到,这些细节也决定了面试官对你的第一印象。
  • 「简历做好后最好找有经验的前辈帮忙把把关」。包括你的导师、已经工作的师兄师姐等,他们见过很多份简历,知道一份好的简历是什么样。就像我的导师之前在互联网公司工作过一段时间,级别很高,我简历做好后导师前前后后帮我修改不下于5版;包括我大四时候在公司实习的mentor,大晚上也给我的简历提出了很多宝贵的意见。他们的意见对我简历质量的提升起到了很大的帮助,在此也对他们表示真诚的谢意。
  • 「简历的命名」。这是很多同学不太注意的地方,我个人觉得简历命名最好是姓名+学校+电话,这样方便面试官快速get你的信息。
  • 「简历中写的东西一定要是自己理解并能够清楚讲出来的」。很多同学为了简历好看,会在简历上写一些比较高大上但是自己不是很懂的内容,这是大忌。面试的时候面试官绝大部份时候都是根据你的简历进行深挖,如果你简历中写的东西自己都讲不清楚,可以想想面试官对你是什么样的印象。所以简历上的内容在面试之前一定好好搞懂。

关于简历的内容大概就是这些,希望能够给大家一些帮助吧。

代码能力

我相信很多经历过找工作的同学最头疼的就是现场手撕代码了,但是这一部分内容却基本是每一场互联网面试必备的,也可能是在准备秋招的时候花费时间最长的。

我相信绝大部份同学和我一样之前没有打过ACM,没有系统刷过Leetcode。针对这些同学,我相信下面这一套算法题准备流程应该就是为你准备的。

下面的过程综合了我个人的准备经验,以及我们实验室专门邀请互联网资深专家为新生准备的代码训练营教材。step by step走下来handle大部分互联网公司面试的代码题应该问题不大。也希望我的经验能够给大家一些启发,少走一些弯路。

    • 「第一步,《剑指offer》」。《剑指offer》这本书的名声在外,之前没有系统刷过Leetcode的同学这本书建议先做一遍。这本书的所有题目在Leetcode上都有,差不多60道题目,在一些小公司的面试中很大概率出现原题。

      按照上面的步骤走下来,咱们基本的算法思维应该是可以培养出来了。这时候中小互联网公司的面试题很多咱们应该都可以解决了。这一步所需要的花费的时间每个人不一样,全力准备秋招的同学可能花的时间少一些。我个人花了差不多一个月,但是我觉得这一个月花的是值的。

      • 看懂题目之后,自己思考两三分钟之后(刚开始没有经验的时候大部分人应该都不会有思路),直接看题解。看懂题解之后对着AC的代码自己敲一遍。这个过程是为了培养自己的算法意识,熟悉一般的算法解题套路。这个过程整体走下来应该差不多一周左右,经历过这一周,我相信很多同学已经知道算法题是怎么一回事了。当然,之前有过刷题经验的同学可以略过这一步。
      • 不看答案,开始写这60多道题。即使我们之前以为自己看懂了题解,但是很多题目还是写不出来,没思路。这个过程很正常,不要灰心。对于没有思路的题目继续看懂题解,然后不看作者的代码,争取自己写出AC的代码。之后我们将这一次没有写出来的题目在本地文档中记录下来。
      • 针对上次没有写出来的题目进行三刷。根据我的经验,我相信这一次,绝大部分题目咱们应该都能写出来了。但是不排除有个别的题目我们还是写不出来,这时候看这些题目的题解,多看几遍,强迫自己记住作者的思路。然后把这些题目再记录下来。
      • 最后,我们整体再刷一遍《剑指offer》上面的所有题目,这一次,绝大部份题目咱们都能依靠自己进行AC。
    • 「第二步,按照Leetcode的tag刷题」。《剑指offer》中的题目比较杂,涉及的知识面也比较广。而第二阶段是让我们对于各个知识点重点突破。给出分类网站:这个网站(https://leetcode.com/discuss/career/448285/List-of-questions-sorted-by-common-patterns),总结的很棒。

      做完第二步,我们差不多已经刷了130道题左右。我个人觉得这个量已经能够应付很多互联网公司的面试了。

      针对这二步中的问题,很多题目难度都是medium和hard类型的,我们很难一次AC,再次使用我们之前使用过的反复刷题法。这时候将我们没有一次AC的题目和题解按照tag分门别类记录在本地的文稿中。我是这么记录的:

21届互联网算法岗求职经验分享_21届互联网算法岗求职_02

这样记录有一个好处,我会在题目上加入超链接,这样方便快速定位到题目和题解。之后会把题目内容和AC代码、自己的一些小想法都记录下来,这样「方便自己后面进行回顾」(特别是在每一次面试前夕进行快速回顾,我发现这个方法真的很赞,效率很高)。

我希望提倡的是题目做精而不是做多,因为我发现很多同学虽然题目刷的多,但是很多题目刷一遍就忘了。刷题最重要的是搞清楚数据结构和算法的原理。个人建议刷完200道题后就没必要专门做新的题目了,把之前做过的题目反复拿出来反复做、反复看,这样会加深自己的理解。

  • 「第三步,刷互联网大厂的题库」。进行了上面两步之后,咱们的刷题能力应该还可以了。之后就没必要全力刷题了,这一阶段就进入了持续作战阶段,需要每天刷题保持手感。个人建议刷互联网大厂的真题。下面给出个人觉得不错的github仓库(非广告):

    • https://github.com/afatcoder/LeetcodeTop

最后,个人给出几个自己觉得还不错的资源,大家可以甄别后自取:

  • Leetcode 题解(https://github.com/CyC2018/CS-Notes/blob/master/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E7%9B%AE%E5%BD%95.md)
  • 剑指offer题解(https://krahets.gitee.io/views/sword-for-offer/2020-05-20-sword-for-offer-00.html)
  • 算法题解(https://greyireland.gitbook.io/algorithm-pattern/)

不要贪多,代码能力还是需要多写,多思考,肯定没啥问题。关于代码能力的内容大概就是这些,希望能够给大家一些帮助。如果有同学需要我自己当时记录的一些重点题目(不一定适合所有人),也可以联系我获取。

机器/深度学习基础

机器学习和深度学习相关的问题很多都是一些常规的问题。由于我们实验室一直在做机器学习和深度学习方面的研究,得益于实验室平时对于基础知识的重视,关于这部分内容我个人花费的时间不是很多。主要的复习资料来源于我的导师,中科大MIRA实验室王杰老师上课的课件(感兴趣的同学可以自取,讲的还是非常深入的。谷歌可以搜索到,网址我也放在这里 https://miralab.ai)还有就是及时关注牛客网上相关岗位的面经。

虽然个人觉得这部分内容更多属于记忆的性质,但是想要自己比别人突出的话还是要对问题的理解比别人更深刻才行。根据我个人的经验,我在这边总结一些常见的问题,综合了我几位同学的面经,貌似很多公司问的基本都不会超过这些,不同岗位可能有细微的差别。

  • LR和SVM相关的问题,细节都需要理解,经常会被问到。
  • 讲一下LSTM,内部结构以及各个门的作用,怎么缓解梯度消失。相关的包括RNN、GRU的结构
  • 各种 Normaliza 的作用、差异点、参数量等
  • 怎么缓解过拟合、各种正则项的理解;L1和L2的区别等
  • Adam优化器的介绍,优化器的发展历程、特点等
  • transformer 结构相关的知识
  • 激活函数的特性
  • loss函数相关的问题。知道哪些损失函数,说出softmax的形式、为什么要用log、证明某个函数是凸的等。
  • dict容器是怎么实现的
  • Dropout是怎么实现的
  • Word2Vec相关问题(分层softmax、负采样等)
  • 随机森林、GBDT等相关问题

我还是相信各位搜索知识的能力的,以后有时间的话我可以再总结这些问题的答案。最后照例推荐几个还不错的总结文章和知乎用户(真的很棒)

  • 小王同学(我在大四时候写的机器学习的总结文章,存在私心hhh)
  • 阿泽(这位博主关于机器学习知识的梳理写的很棒,确实比我好TAT)
  • 一个框架看懂优化算法之异同 SGD/AdaGrad/Adam

其他的需要各位同学自己去搜索啦,关于这部分内容基本就是这些。

面试

一般来讲,互联网公司开始招聘的时间都还比较早,3月份很多公司春招就已经开始了。5、6月份很多公司秋招提前批就已经开始了,大家合理安排投递和面试时间。

在相关岗位和招聘公告出来后,「在时间、精力允许的情况下尽量早投递,早投递机会更多」。牛客网中里面会有招聘汇总贴,会汇总当年互联网公司的招聘时间节点和网址,大家可以及时关注。

在整个投递过程中,如果时间允许的话,个人建议可以先投一两个小公司练练手。之后在拿到自己可以接受的offer后,个人建议之后主要冲大厂核心岗位。

在投递部门的时候,多利用身边学长学姐、同学的资源了解部门的情况;也可以利用脉脉这个平台,了解你所投递的公司和岗位的一些信息,从而辅助自己的选择。

准备了这么多,检验我们成果的时刻就是正式的面试。互联网公司整体的招聘通常主要包括以下几个流程

  • 「笔试」(有些公司提前批没有)
    • 笔试绝大部分都是代码题目,也会包括一些数学类和计算机基础相关的题目。
  • 「二到三轮的技术面试」(基本都是我们之前准备的)
    • 代码题
    • 项目/实习经历。对于自己简历中写过的内容一定要搞清楚
    • 机器学习/深度学习基础
    • 可能会有一些概率论、线性代数相关的问题,但是占比不是很多
  • 「HR面试」。大家不要小看HR面试,在一些公司,HR面试具有一票否决权,但HR面试的内容基本都是有迹可循的。得益于我之前在实验室有很多面试保研学生的机会,得到了比较多的锻炼,在HR面试中,我自己整体的感受还可以,很多问题都是我之前面试其他学生时问过的问题,所以说大家如果在实验室能够有这样锻炼的机会还是要及时抓住的,这样可以更多从面试官的角度来思考问题。HR面试的时候注意不卑不亢,表达出对公司和岗位的兴趣即可。

另外,需要注意的是,在面试过程中一定要和面试官进行适当、有效的沟通,沟通既可以让面试官提高对你的印象分,也可以在一些你不会的题目上得到面试官的指点。同时,一定要学会提问,在最后提问的环节提前准备一些想问的问题,不要最后什么问题都不问,给别人的观感可能不是很好。

写在最后

文章写到这边,基本的内容差不多就是这些,希望能够没有浪费各位的时间。

在我去年找工作的过程中,我也得到了很多老师、前辈、同学的帮助和提携,在这里对他们表示真挚的感谢。

最后,希望大家都能求职顺利~