抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

转眼就已经是十一月份,距离上一篇博客也已经近五个月了。在经历了长达快九个月的战线后,我的秋招之旅也算是告一段落,想用这篇文章对这段时间做一个总结,画上一个完美的句号吧。

写在前面

秋招过去也有些日子了,这篇博客一直处于 “想写又不想写” 的状态,“想写” 是因为之前纯小白的自己看到了许多类似的贴子,少走了很多弯路,所以本着互惠互利的原则,我也很希望能把最近这段日子好好总结,去帮到后面也将面临着校招的同学。但是 “不想写” 的原因也是有很多了,就不细说了,反正自己最后还是写了,hhhh!

首先,有几点需要声明:

  1. 这里不会涉及任何和公司、薪资、面试内容等有关的敏感话题,也不要讨论;
  2. 我也只是个刚结束秋招的小白,这里只是分享一些经验和个人 idea。能力有限,技术相关的问题就不说了;
  3. 任何问题,欢迎来 “怼”,怼不过了就删文 🙌
  4. 另外,本文仅适用于和我一样,平平凡凡,普普通通的校招人,大佬勿喷。

本文的最终目的是用我这个普普通通校招生的故事,带着大家从 0 到 1 的感受整个校招过程,不再是一片未知,一片迷茫,希望大家在自己的校招过程中都能从容面对。

最后重点感谢一下我同学,也是从他的文章我学到了很多,大家对校招有任何不懂的也可以去看看:⌈两次校招后呕心沥血整理的指南⌋,相信你校招过程中的任何疑问都能在里面找到。

我的独白

我是 2022 届毕业生,所以应该是在 2021 年参加秋招。那么,从去年也就是 2020 年十一月份左右,看着身边的学长学姐们工作尘埃落定,我就一直会遐想,我以后能去一个什么样的公司,能拿到什么样的待遇。那时候,满眼都是两个字 “羡慕”。

而我也是从那个时候开始准备我的秋招。一开始,也很迷茫,显得十分力不从心,因为以前不管是 “高考” 还是 “考研”,都是一种很固化的模式,固定的时间,固定的考试,固定的要拿高分,而找工作就完全不一样了,再也没有官方的通知,没有官方的招聘时间,没有所谓的考纲,一切的信息都得靠自己去搜集。

所以,这就要求我们完成从 “被动” 到 “主动” 的一个转变。当时的我,给自己定了一个很 “宏伟” 的目标—“进大厂”。目标有了,接下来就是搜集信息,这时候就遇到了我的第一个大难题 “去哪搜集?”。当时真的小白,我是百度把各个公司的招聘官网挨个找了一遍,人是累了,拿到的信息几乎等于零,因为那时候人家挂的都是上一届春招补录的信息。所以,后来只能去各个论坛,贴吧打探消息。
(其实,这个时候根本没必要花太多时间打探这些信息,这也是我当时不懂,做的一些无用功吧,虽然每年具体的招聘日期不一样,但是大致的时间节点都是大差不差的,时间节点我后面会说。这个阶段还是更应该把精力花在 “看面经”,“学经验” 上)
在这一圈信息搜集的过程中,我从最开始的关注时间,变的开始关注各种面经,通过别人的故事也总算对校招有了整体的认识,也收获到了很多关键信息(下一节会说)。

然后,就是开始陷入沉思,思考以后的方向。因为我研究生期间做的比较杂,研一学了一年左右硬件,研二开始接触 “多方安全计算” 做 “同态加密加速”,再到后来全力主攻 “联邦学习”。硬件芯片是时下热点国之命脉,隐私计算是前沿研究大数据使然,我选择了后者(其实是因为硬件真没做过什么项目)。这个方向嘛,就比较奇怪了,它同时涉及到机器学习算法以及大数据平台开发,因为我平时接触算法比较多,所以也就毫不犹豫的开始往算法方向做准备。


接着就是漫长的自我准备,这个过程中大致需要做如下事情:刷题、总结研究项目、复习知识点、准备简历、看面经。对此我也制订了一个简单的计划:

planning

其实,这也算不上什么计划,就是一个时间表用来提醒自己什么时候应该做什么事情。我觉得这个过程十分重要。接下来,我详细说说我的准备过程。


首先就是算法刷题。

关于算法,我一直有这么一个认知 “做题做的好的,不一定牛,但是做题做的不好的一定不行”,其实很多时候,算法都是来源于我们开发过程中可能遇到的各种各样的小问题,而你能否简单高效的解决它们肯定也就很直观的关于着我们开发能力的好坏。我身边经常会听到这样的声音 “算法题其实就是套路,做的多了,自然就会了”,不否认这种观点,但你不能说算法就是套路,那只是因为我们遇到的算法,都是在类似 leetcode 的平台上被人为套路化了的题目,我们不能被这种思维所固化。

说了这么多,我其实就是想传达一个观点 “要把算法养成一种习惯”,刷题可以是我们习惯养成的手段,但我们不能仅仅以 ac 为目的的去答题,更应该思考怎样去优化。当然了,这一切的前提是得能熟练掌握基础方法。所以,我个人觉得算法应该分为这样三轮去训练:

  1. 第一轮以 “看” 为主,核心在于 “学”。先去 leetcode 上将各个专栏的经典 “题目及其题解” 快速浏览一遍,并总结出各类型题的常用方法。要在尽可能短的时间内,追求尽可能多的题目。比如:经典的排序查找算法有哪些、链表里常用的快慢指针先后指针、数位运算里怎样利用与或非逻辑……这一轮结束后,要做的看到题目即使解不出来,但能迅速判断它所属的类别,并且脑海里能浮现出相关的经典方法有哪些。

  2. 第二论以 “思考” 为主。这一次,我们再重新回顾之前的题目,要慢下来静心思考。多分析题解,关注点从 how(怎样做) 转变为 why(为什么这样做),并且要多思考有没有更优的方法。

  3. 第三轮以 “练” 为主。学了那么多,想了那么多,不去实战依旧是没有用的。leetcode 上有几千道题目,而且每周都会有 “周赛”,这些都是拿来练手的不二选择。每道题目都可以按照 “分析问题” –> “简化问题” –> “提出策略” –> “解决问题” –> “优化” 这样的 pipeline 去做。

以上是我对我整个算法训练的经验总结,不敢说一定适用每个人,但如果能重来一次,我一定会这样做。怎么说呢,我开始接触算法应该是很早的,但是我这个人有点强迫症,从一开始,我就喜欢把每道题都钻透,每道题我都是先自己思考,然后看题解,最后总结反思,所以第一轮战线就拉的很长很长。不是说这样不好,只是这样有个十分致命的问题就是 “慢”,尽管我开始的很早,但是到后面还是觉得时间远远不够,没有量的支撑,自己的题型储备完全达不到标准,也就很难达到第一轮的目的,而且因为战线拉得太长,各种零零碎碎的知识,在拼凑出完整的体系时,就很容易被遗忘,显得十分得不偿失。

另外,还要补充一下,除了上面的三轮训练外。我们最后一定还要训练一下自己的解题速度。面试过程中,面试官留给我们的时间会很短,大多数时候可能也就只有几分钟,再困难的题一般也不会超过半小时,所以一定要克服 “思维拖拉” 的毛病,想到了就赶紧动手,不要总感觉这里还有啥细节没想好,那里还有啥问题。面试官其实更关注的是我们的思路框架,很多时候可能都不会让我们去 run。

说了这么多,其实还是在讲怎样去准备面试,但是我还是倡导只要我们一日为程序员,算法的路就一日不要停。一定要多想,多总结!


接下来,说一说知识点总结,也就是我们常说的 “八股文”。

在这里,我首先要摆正一个观点,“八股文不是靠背就完了”。当然了,开发和算法可能有点不一样,但是我至少可以肯定的说算法岗绝对不是这样。

在我前前后后两个月左右的面试过程中,我发现一个特点 “几乎不会有哪个面试官会像老师检查背书一样,一个问题一个问题狂轰乱炸”(当然了这里还是有特例,我后面再说),你想想,你的面试官也只是个比你大了几届的程序员,也只是比你多码了几年的代码而不是比你多背了几年的书,当他们接到面试需求时侯,他们也会很紧张,因为公司对他们也是有考核要求的,他们要想办法在一个小时的时间摸清你的全部,所以他们也是需要准备面试内容的。你可以花几个月的时间,全力找工作,他们能吗?所以,你都觉得背不完的 “八股文”,他们可能在短时间全都过完再来为难你吗?

所以,八股文怎么背?围绕两个方向:

  1. 你的简历。仔细对照你的简历,凡是里面用到的技术点、名词、知识库等等,包括这些东西的扩展、发展历程、优化点、不同点、各自运用场景,所有你能想到的内容一定要不遗余力的全部弄透,这个很重要!很重要!很重要!

  2. 你的研究方向。比如,我是做 “联邦学习” 的,与之相关的内容就包括 “同态加密原理”、“开源系统 FATE”、“国内外研究现状”、“MPC”、“横纵向机器学习深度学习算法” 等等,这个自己的研究方向该看什么该懂什么你肯定比我熟,这里就不多说了。

抛开这两个大结构化的内容,才是我们常说的基础,比如从机器学习的 “概率论”、“统计学”、“信息学”、“常见机器学习算法及其变种”、“优化器”、“训练指标及其相关调参和优化策略”、“训练异常故障问题的排查和解决思路” 再到深度学习的 “卷积原理及其变种”、“backbone 网络”、“轻量化网络”、“yolo”、“GAN”、“Transformer” 等等……这些说的完吗,说不完。面试过程中,知道的多当然更好,问到不会的了也很正常,诚恳的回答忘了或者不会即可,面试官是不会在这里故意为难你的。

这里反映的是我们的知识储备,更多得还是在乎平时的积累。在准备面试的过程中,查漏补缺,也得有重点有方向!


再谈谈简历准备吧。

千万不要小看简历的作用,它相当于我们求职者的脸面,决定了面试官对我们的第一印象,也决定了整个面试过程的导向,这有多重要就不用我再描述了吧。

试想自己就是面试官,你更喜欢什么样的简历,肯定是简洁清晰的,作为程序员还是内容至上吧,就不要有太多花里胡哨的美化布局什么了。这里给大家推荐一下 ⌈超级简历⌋,可以帮助我们省去排版的苦恼,把更多的精力留在内容上。

内容上,我总结了如下几个注意点:

  1. 第一个模块通常为 “教育经历”:从最高学历写起,教育经历里重点描述下参与的比赛、获得的奖项、均分绩点排名什么的。注意哈,不是越多越好,关键在于质量,要是自己都觉得没有意义的内容另可不写,不然还可能让面试管觉得你是没有内容硬凑内容。
  2. “项目经历”:这个是简历最核心的部分,项目描述语言一定要精炼,别说废话,也别什么都往上写。可以按照 key-val 的形式,描述下面几项:
    • “内容(解决了什么问题)”:一句话简要概括
    • “用到的技术”:罗列技术就行,不需要你介绍,怎么做是面试时要重点讲的
    • “效果”:一定要量化,比如性能提升了多少倍、时间缩短了多少、评价指标提升了多少等等
    • “创新点”:也是简要概括就行,面试时再重点讲
    • “成果”:是发表了论文还是什么,不是刚需,有更好
  3. “技术栈”:俗称你会什么,可以按照投递时,岗位要求来重点写,或者分类描述(开发技术栈、你了解的机器学习深度学习模型 or 领域、研究方向研究内容)
  4. “自我评价”:号称最没意义,也必不可少的内容吧,写一下你的性格特点、三观?或者说你参与的课外活动、业余生活等。别写太多,最好别超过三句话。

还有一些小问题,比如校招简历最好不要超过一页,不需要放照片等等。

最后,简历写完了并不意味着完事了,一定要反反复复研究,像之前说的一样任何面试官可能想到的问题,你都得提前做好准备。举几个例子吧,“你为什么用这个技术?用别的行不行?why?”,“分析一下你的项目为什么能达到这种效果?”,“详细说说你的创新点”……围绕这些问题你可能就会展开说很多,这里有个技巧,讲述的时候,不会的东西不要提,必不可以也得自信点语速快点说,不要给面试官提问的机会,而对于那些你很有自信的技术,就可以反过来,故意停顿一下或者加重一下语气,这也是一种语言上的艺术吧。

所以,好好的准备简历,加上合适的语言表达,其实你就能够轻易的主导面试走向了,而往往这种时候,面试官想要挂你都很难。


做完这些,其实准备工作也就差不多了,在进入正式面试的后期,你还可以做一些针对性的补充。

比如,在投递结束,和面试官约好面试时间后,这中间的时间就是黄金时期,这个时候往往你就确定了你的面试部门,甚至你还可能上网拿到你面试官的信息,知道这些信息后,你就可以有针对性的准备。比如,你面试的岗位都涉及什么技术栈,去有针对性的补充,了解学习一下公司部门的核心业务,再还可以去牛客等地方找对应面经,同一个部门就很可能遇到同一个面试官,这也就意味着你很有可能遇到同样的面试题,可以提前做到心中有数。

我这里说的比较笼统,但主要意思就这样。拿我亲身经历举例:在某公司最后一轮主管面的时候,当时的部门是做搜索推荐的,而我又完全没接触过这一块内容,所以就提前看了几篇博客简单了解了一下。当时面试官可能看我简历上也没有相关内容,就试探性了问了我对搜索推荐有什么看法?首先,当然是先表明自己对这块不太了解,这时候很多人可能就会接一句 “我后面会好好了解,愿意去学的”,这在面试官看来就很习以为常,甚至刁钻一些的人还会觉得你既然愿意学,之前为什么不去学呢?所以如果这时候能拿之前看到的内容,简单的表达一下你的认识,如果恰好说的在点,答上了面试官想听的东西,甚至只需要擦个边,这样都会形成一个很大的反差,让面试官对你好感大增。

所以,提前针对性的准备,在关键时刻是可以扭转局面,让不会的东西,反倒成为你的亮点!


前面说了那么多面试前的东西,那就还有最后一个,面试中的事情。

我简单的统计了一下,从 7 月中旬开始第一场面试开始,历经两个月左右的时间面了大概有十二家公司,发现面试流程基本都是先自我介绍,然后你给面试官介绍一下简历里的项目,面试官针对项目提问,然后面试官挑感兴趣的内容提问,再就是问些基础八股文,最后做一两道算法题,也有些面试官喜欢把算法题放在开始。

这里面最重要的算法题先说一下,面试时候有这么一个定则,题做出来了你就成功了一大半,如果没做出来,除非其他方面表现很优秀,否则大概率会被挂。当然有些面试官只要求你能说出思路就行,有的也会试探性引导你,那就是看具体情况了。这已足够说明它的重要性,也是有些面试官为什么会上来就做题,因为如果做不出来,他就觉得没必要再聊浪费时间了。

再说说剩下的流程,我为什么之前强调了简历的重要性,你想想,一个小时的面试去掉算法题时间,留个问答的时间也就半小时左右。而这短短的时间里,有五项内容要进行,其中前四项内容基本都是你的简历来决定的,所以只要前面内容撑起来,很多时候面试官都不会有时间去发散性的考你八股文。对了,在面试过程中有时候会出现你听不懂面试官问题的情况,因为每个人对知识点的理解不同,有时候叫法表达方式都会有分歧,你可以尝试换个方式换个说法去和面试管沟通,或者直接表达不太明白问题,千万不要和面试官硬怼,或者说面试官说错了,这样给人的印象会很不好,格局打开一些,互相学习才是我们的最终目的。

面试嘛,无非就是考察两点,知识的广度和深度。知道自己在哪方面不足,把控节奏,保持自信,保持谦卑,你也就成功了。

还提醒一点,面试后的总结很重要,详细记录面试过程中面试官的问题,不会的问题及时学习,千万不要出现下一次面试同样的问题答不上来的情况。另外,也可以根据不同的面试内容随时更新自己的简历等等,一次次的经历,必然会让你越来越熟练。像我到后来已经是还没开始,我就知道面试官今天要问什么,面试官一开口我就知道要答什么,成了一个没有感情的面试机器。哈哈哈,我只是开个玩笑,一定要认真对待每一场面试!


最后,最后,几点忠告。

  1. 早做准备,能实习一定要去实习。实习经验对面试很重要,我因为某些原因没办法实习,所以在秋招过程中吃了不少亏。

  2. 提前批就开始,不要等。提前批往往是积累经验的最佳时间,不要害怕所谓的面试记录影响后期秋招,准备好了就大胆去冲,你要知道从提前批到秋招这个过程只有短短的一个月时间,这么短的时间你又能准备多少内容。而且,所谓的面试记录,只要不是太离谱,后期也基本不会看的,就算万一,你实在觉得自己没准备好,也要先拿一些你不太想去的公司练手,实战带给你的提升肯定是质的飞跃。这个时候,能拿到 offer,你就是快人一步,后期正式批你整个人的心态也会完全不一样,而且就算没有拿到,通过这段经历,你也可以拿出最好的状态去面对后面的秋招。我就有同学因为不敢,一直等,等到后来 hc 越来越少,身边人陆续收到 offer 开始越来越慌,先不说别的,这种状态在面试过程中肯定就先站不住脚了。

  3. 任何时候,面试和被面试,都应该是个互相挑选的过程,不应该出现谁瞧不起谁的情况,一定要保持好心态。不要因为面试通过就觉得自己很厉害,也不要因为被挂了就怨天尤人或者深受打击,面试也是个玄学问题,能不能通过除了自身实力外,和面试官的缘分也是个很微妙的东西。

  4. 无论什么情况,都不要 all in。不管你是出于什么原因,all in 都是一个十分错误的选择,也许你会觉得自己最后只能去一家公司,如果拿到心仪公司的 “意向书” 就可以躺平了,不然后期还要回拒别人不太好。其实这种互相备胎的情况我也不喜欢,没有办法,校招本就是个互相挑选的过程,你也许不想去挑,觉得达到心意就好了。但是要知道,在意向之后还有一个叫做 “谈薪” 的过程,这里就会出现这样的情况,公司如果出现意向发放超标的情况,他们就会以给你 “远低于平均水平薪资(俗称侮辱价)” 的方式劝退你,如果你刚好在这个行列,手上又没有别的选择,就会十分被动。还有就是校招的过程中,我们本来就处于相对弱势的一方,我们没法知道自己的面试评价,或者用人公司具体的录用指标,从公司角度来说,他们肯定希望用最低的成本招到最优秀的人才,所以许多公司会在找你谈薪前先询问你手上的其他 offer 情况,然后最低限度衡量你的标准,如果你没有其他 offer 自然也就失去了 argue 的资本。

一些闲谈

常见名词

这里会简单聊聊我们求职过程中经常会听到的一些名词,这里内容大多来自前面我提到的同学的博客。

名词 解释
hc 指人员预算,就是你面试部门还需要招聘的人数
hr 指人力资源的小哥哥小姐姐,他们大致分为两部分,一部分是负责跟进你整个面试流程的,这部分实习生居多,主要就是帮你安排面试等;另一部分是部门的大 hr,他们通常对部门十分熟悉,也可能他们本身就是部门的技术人员,不出意外的话,他们也会是你最后一面(hr 面)的面试官,当然了,还包括面试通过后,薪资沟通、offer 发放等等一系列的事情。这么多人这么多事,想想就很辛苦了,流程中他们有时候消息回复不及时,我们也要多多包容,互相理解嘛。
交叉面 指 别的部门的人来面试,一般在自己面试的部门完成两到三轮面试后可能会出现,这在阿里也是比较常见的现象,在腾讯中有一个组织叫做面委会,校招中主要针对 WXG(微信事业群)进行加试。当然了,如果你遇到这种情况,也说明你足够优秀,如果你能顶住压力通过面试,后期的谈薪也会让你更加满意。
oc 指 offer call,就是确认录用或者是谈薪的电话。
offer 指 “录用通知”。现在一般是面试通过后,先发放 “意向书”,表示公司已经接受你,然后再会和你聊薪资待遇,这部分有的公司会以 “福利邮件” 的形式告知,待与你正式签订 “三方协议” 后,公司才会发放正式 offer,有的学校三方发放比较晚,有些公司会在此之前先催你签订一个 “两方协议”。当然了,这具体流程还要看公司,不同公司流程可能不同。这里重点说一下,这些邮件公司往往都会要求你保密,否则话公司可能会取消你的录用资格。另外,除了正式三方签订后的正式 offer,其它都是不会受法律保护的,也就是说不管是你,还是公司都有权单方面毁约,所以不要 “掉以轻心”,今年拿到意向书后被毁约的也不在少数。
base 指地点和基本工资,一般会问 “你 base 地点在哪?”,“你期望的 base 薪资是多少”。
20 * 16 大家谈薪的一种表达方式,像这里的意思就是 “月薪 20 k”,一年如果绩效达标,就会发放 16 个月的薪资(12 个月基本工资 + 4 个月年终奖)。另外,也有人喜欢更直接的表达,比如 “总包”,也就是公司一年会给你的总工资,比如这里就是 32w,有些公司还会给你 “签字费”、“股票”、“期权”等等,这些算不算在总包就看你个人了。另外,强调一下,公司和你说的薪资都是 “税前收入”,并不是你实际到手工资。
sp 指 special offer,就是薪水的档位,一般大家会用白菜(还可能分小白菜和大白菜),sp,ssp来依次表示拿到的薪水档次。
argue 指要求更高的薪水,比如本来是白菜的档位,要求提升到 sp 的档位。
倒挂 指后入职的新人薪水比老员工高,老员工被倒挂现象很多。
大小周 指 一周工作五天下一周工作六天 然后依次轮换。
kpi 指 关键绩效指标,如果逛牛客经常会看到有人说「某公司有刷 kpi 的行为」,因为某些公司有每年投递和面试的硬性指标要求,所以经常会拉很多人面试(就算知道不太合适),如果不够要求直接一面给挂,或者是面试官也不认真问和听你说,很快面完就给你拒绝。
在正式工作中大概指:产出要求,一般说 kpi 是否达标。
绩效划分 每年年终,一般会由部门主管给员工打分,他们会按人数比例,打出不同的评分,这也是公司激励员工的方式。比如很经典的 “361 考核制”,就是把绩效划分为三档:30% 的人绩效最好,一定有 10% 的人绩效不合格
mentor 指工作中的导师
leader 指部门主管

时间节点

schedule

  • 简单说明一下,我们要关注的是 “春招实习”、“秋招提前批”、“秋招”、“秋招补录”、以及第二年的 “春招补录”。

这是我同学做的去年的时间表,虽然不是最新的,但大致时间都大差不差,我们只是参考一下。具体各个公司的招聘信息,可以去 ⌈牛客校招日程⌋ 查看,它会实时汇总各个公司的招聘信息,免去你挨个搜索的麻烦。

另外,我还是强烈建议你自己去制个表,将感兴趣的公司做好汇总,并且去它们的(校园)招聘官网获取最详细的招聘信息,避免出错错过。

写在最后

别问我拿了哪些 offer,待遇咋样,这些重要吗?不,当然重要,可是这明显和本文无关嘛。作为一篇流水账式的文章,全程都是想到啥写啥,也算是我整个秋招过程经验的倾囊相授吧。既然已经乱了,我就干脆把小标题也撤了,就让它一乱到底吧,其实这也是我故意的,毕竟我写了这么多,看一下总不能嫌麻烦吧,哈哈哈哈哈。

别打我 🙈🙈🙈