首页 > 双非本科大二非科班弟弟的2020春招分享,四投四中,含BAT
头像
yashem66
编辑于 2020-05-25 21:11
+ 关注

双非本科大二非科班弟弟的2020春招分享,四投四中,含BAT 内部员工回复

· 先说结果

此次春招一共面了四个岗位,按照面试时间的顺序分别是:腾讯-IEG-光子技术中心-应用研究(算法)岗、字节跳动-Ai Lab-算法岗、图森未来-Planning组-规划算法岗、阿里巴巴-蚂蚁金服-Oceanbase-内核开发岗*评级A。和标题中描述的一样,都顺利通过了面试。我也谈好了入职时间,尽量珍惜每一次机会,没有拒掉的offer都不会咕咕。

(2020.05.04下午补)一开始这篇文章是打算写给我校ACM集训队的同学们和刚刚OI退役的学弟们的,因此原文的受众面是比较小的,非常抱歉对一些同学造成了误导。对于春招过程中所取得的这些offer,我也需要提前告诉大家,绝大部分原因是我在ACM竞赛中取得的较早较好的成绩,ACM是我这一阶段最重要的敲门砖,同时我也希望借这个机会,能让更多的人从牛客的竞赛区开始认识ACM竞赛~

我之所以写下这篇分享,一方面的确是想展示一下自己的成果,因为我本身不是一个很低调的人;另一方面也是想分享自己在面试过程中,除了竞赛能力之外的那些对我帮助很大的软技能。之所以没有介绍自己的成长路线,是因为自己的确除了ACM竞赛和访学之外目前几乎什么都没有做,如果介绍这样的成长路线,可能会让大家产生更深的误解。我在本年的整个春招里面,对队内学长提出来过的所有建议都已经整理在这里了,我希望这篇文章能够成为大家准备面试的思路的磨刀石,但注定无法成为通过场场面试的钥匙,谢谢大家的阅读和理解!


· 这篇分享是写给谁的?

不管你是不是计算机专业,只要你未来有进入互联网企业技术岗的意愿,那么这篇分享是适合你的,因为我本人也不是计算机专业的学生,如果你想知道我是谁,可以先移步我之前的文章:“我是谁?”。(双非本科大二非计算机专业的ACM选手,原OI选手)

也许觉得考虑就业对自己来说还为时尚早,那我还是希望你能够读下去,因为读到后文时,也许你仔细一看,会发现满篇都写着密密麻麻的小字——“准备得越早越好”。

接下来是我在其中一个岗位中从投递到确认结果的过程中完整流程的分享,也许能给你一些启发。如果不感兴趣,也可以直接划到下一个大标题处的干货分享

本文约6000字,需要约5分钟阅读。



· 希望我的面经能给你一些启发

出于篇幅(懒)的原因,本篇文章中将只分享我在2020年春招中印象最深、发挥最好的一个岗位:蚂蚁金服-Oceanbase-内核开发岗。关于Oceanbase,可以为同学们做一个简要的介绍:一款用于支付宝、淘宝网、南京银行等的金融级分布式关系数据库。

消息渠道:

我大部分的优质岗位信息都来源于我校ACM队的学长们,虽然他们分享岗位机会后并不能像正式员工一样可以拿到高额的内推奖金,全靠“用爱发电”。但是我心里也很明白,作为向同一个高地共同发起过冲击的“战友”,他们绝对是我能接触到的人当中,最真心去帮助我的人。所以这个岗位也不例外,是来自一个曾任职于PingCAP的ACM队学长的热心分享。


前期准备:

之前就了解到,阿里的春招将在4月30日截止,而注意到这个岗位时已经是4月15日,所以我认为:一旦我投好简历做完笔试和综测,面试将会以相当紧凑的节奏迅速进行,所以我缓了两天才投递了简历。在我留出的这两天缓冲期里,我所做的功课主要有三点:

1. 了解Oceanbase,包括但不限于阅读关于Oceanbase的技术新闻、通稿、业内的不同评价、员工评价、实习生评价,这既有利于后续的面试,也有利于对岗位的认知;

2. 了解数据库内核,不到两天的时间的学习远不能让我达到精通,但却足以让我对这个方向和这个方向的技术难度有一个初步的整体认知;

3. 集中一点(,登峰造极),在数据库内核这一庞大的领域中,我选择了索引背后的数据结构与算法原理这一方向做较为深入的理解和研究,主要是因为我作为ACM选手,理解数据结构的确比较方便,而且我的确对这一方面的知识有很大的兴趣。


笔试&综测:

笔试(4.17场)满分,综测硬着头皮做。


一面(P8技术面):

因为我是非计算机专业的学生,面试官在知情的情况下没有过于为难我,关于计算机专业课的问题都问得非常基础:比如线程与进程的区别,TCP和UDP连接的特点。

之后考察了一道系统设计题,说实话当时有些出乎意料,感觉被打了个措手不及,不过按照自己对计算机的理解,在面试官的提醒下,还是设计出了一个较为经典的模型,我也意识到,这方面绝对是我日后要着重改善的弱点之一。

接下来是两道非常简单的代码题,但是需要十足的仔细。

最后是在有限的时间内读懂一个工程中的代码文件,时间有限,而代码中细节的处理却非常繁琐(感觉虽然很规范,但是可读性比较差)。不过凭借ACM经历中每天看标程的技能积累,还算完美地完成了面试官的任务。

最后的反问环节问了很常规的问题:入职时间、工作地点、主要职能。

总的来说,技术面第一面的面试过程是非常轻松愉快的,这种轻松愉快主要来源于面试官对节奏和问题尺度的把握,以及我个人(躺平等死)较为放松的心态。也有很大一部分来源于,通过我对这个岗位对各项能力的要求的理解与我个人能力的优劣势的比较所产生的自信。


二面(P9技术面):

面试的最开始,我就直接坦白了自己计算机系统知识薄弱的弱点,并表明了自己正在努力着手改善的状态(有在学了有在学了)。因为面试中最大的忌讳之一就是不懂装懂,如果来不及改善,积极承认问题并展示“孺子可教”的态度也许会更好。

接下来,面试官询问我是否对数据库有所了解,我表示这学期刚刚开数据库这门课,但是课程的内容明显更偏向数据库运维。不过我对课堂中老师未详细讲解的关于“索引背后的数据结构与算法原理”的内容的好奇心驱使我去额外学了一波。关于国内数据库课程内容设置的看法,引起了面试官的共鸣;并对我好奇心驱使的自我学习表示赞同和欣赏。

接下来的问题比较老生常谈:读研/就业的选择,未来就业方向的选择(AI/数据库),为什么对数据库感兴趣。我的回答也全都是自己的真实想法,自认为表达得还算流畅自信。

然后就到了我最喜欢的coding环节,是一道Leetcode的Mid难度的题目。在向面试官提了几个问题确认了题意后,在coding的过程中始终保持向面试官的同步讲解,在需要考虑特殊边界情况的地方也写了一点简单的注释,意识到可能有问题就陷入思考,写写画画之后迅速改正。最后敲好之后自己出了一组比较强的数据,通过人肉gdb的方式向面试官讲解代码,面试官表示一遍就bugfree了,不愧是久经沙场(听到之后超级开心)。

此次的反问环节可能给面试官留下了比较深刻的印象,展开写一写:

Q1:ob在TPC-C测试中取得了第一名的成绩,首次击败了文鼎10年的oracle,看过pr的通稿和一些科技媒体所谓大V关于摩尔定律对数据库性能的影响的文章之后,我觉得虽然是很大的成功,但是赶超oracle的路依然很长,请问您是如何看待这次成绩的?(此为精简版,面试的时候我问得比较详细)

A1:面试官很喜欢这个问题,而且解释的非常耐心,并在面试后发给我一篇关于论证我问题中的一部分的pdf,面试官也太有心了!

Q2:分布式数据库ob可扩展性相对更强的特点比起其他竞品,是否是更适合阿里的产品生态?

A2:回答的非常详细,表示顶层优化也很重要;

Q3:关于执行引擎和优化引擎的职业前景;

A3:这两部分只要是数据库就会涉及,且视野所及的范围内,数据库长期以来都是不可取代的(数据库常青树);

Q4:我在脉脉上了解到ob这边实习生没有代码权限,预研性的工作会贯穿始终。是出于哪些考虑?

A4:(一个令我非常满意的详细解释,而且不是大饼,非常实际)

最后的最后,面试官对我评价很高。有心的同学们可以对照一下这次面试的内容和我曾经为此做过的功课,利用率可以说是比较高了,而且对面试官对我的评价产生了很大的正面影响。

三面(交叉面):

前两面的面试官给的评级很高,所以按照流程进入交叉面argue一下高评级,面试流程与上两轮大同小异,只是没有了coding环节。由于面试官的态度不是非常明显的好与坏,所以对结果有点小慌,不过还是顺利通过了。

四面(HR面):

这次面试可以说是非常的措手不及,在上网课的时候接到hr的电话,然后当场就开始了约30min的hr面试。虽然hr面挂人的可能性相对低很多,但是很多同学对阿里hr的权利大、面试严的印象已经深入人心,甚至阿里的hr面试官被业内很多人称为“闻味儿官”。所以这里也会简单地说一下hr面的相关经验。

简而言之,记住两个词:“热爱”、“自信”,只要性格没有硬伤,且有一个尊重offer尊重契约的态度,hr面不会太难的。


结果:

全流程一周结束,评级A。



· 干货环节 - 尽早准备篇


几块敲门砖:

在筛选简历时,简历上的一些硬通货会是你的简历在众多简历中脱颖而出的绝对重要因素,这些硬通货包括但不限于:

1. 竞赛奖项:可以是ACM-ICPC等程序设计竞赛奖项(代码能力、算法能力和协作能力),也可以是大数据、机器视觉、NLP等AI相关竞赛奖项(工程能力、算法能力和学习能力)。不过电子设计竞赛、创业竞赛等与专业相关度不算太高的竞赛可能优势较小。判断一个奖项对就业的帮助作用大小时,可以将奖项映射到奖项所证明的能力上,再思考你感兴趣的岗位与这些能力有多强的相关性。

2. 实习经历:一段靠谱的实习经历,不仅可以提升自己的工程素养、掌握工作中的基本技能、拓展自己的知识面,也可以作为前任实习公司对你的认可与信任用于丰富你的简历。不过不得不强调的是,实习的内容一定要做与专业强相关的事,不要浪费时间在以赚外快为目的的实习上哦。

3. 项目经历:如果你的年级较低,没有完整的实习时间;或是简历还不足以丰富到进入一个技术氛围良好的企业。那么跟着你的导师做出一个不错的项目或许是一个相当不错的选择。前几日很火的T大自动化大一新生C++大作业:自行用C++实现一个类似雨课堂的自用直播平台,私认为这种难度的项目非常值得一做。在导师的督促和指导下独立完成一个这样的项目,对于大多数同学来说,很有机会达到工程能力从0到10的提高。

4. GPA排名:学习能力的重要体现之一,由于我的GPA太渣,这部分就不展开了。


人际关系的积累:

首先想要明确的,是我对人脉的定义。希望这篇文章开头那个求职者的例子能对大家有所帮助:关于交际

那么什么样的人才能在求职的过程中真正的给予你帮助呢。作为一个在校生,这些人往往是你的导师或一个熟悉你的老师,或是已经参加工作的直系学长。如果不知从何开始的话,不如问问你的导师有何推荐,或是从加入一个校友求职交流群开始8~


对行业与自己的了解:

加深了解是一个慢工出细活儿的过程,我的建议也相对有限。对于行业的了解,可以从牛客、脉脉等职场交流社区、知乎等问答社区以及求职交流群等平台开始。但对于来自公共社区、匿名社区的信息,一定要加强甄别、辩证思考,谨防PR通稿、非理性讨论、意识流脑补流讨论等真实性存疑的信息对认知造成的误差。



· 干货环节 - 迎接面试篇


最开始的开始 - 简历:

一份干净明朗、重点突出的简历是重要的第一步,我之后会单独写一篇文章着重地讲一下的~(发出咕咕的声音)


刷题:

在我面试的四个岗位中,每一个岗位的每一轮技术面都有coding环节;如果是外企,coding环节则更加重要。所以非常建议各位在面试之前尽早开始刷题,在此推荐以剑指offer入门,以Leetcode或牛客等求职刷题平台为主的针对性练习。即使是打过ACM的同学,我也推荐在面试之前刷刷Leetcode适应一下面试题的节奏,毕竟面试题与ACM题是存在一定的差异的。对于没有竞赛经历、刷题比较困难的同学,我个人比较推荐牛客网的算法课程(https://www.nowcoder.com/courses/cover/live/350?coupon=ALkY1mE),有人引导的话不会在不应该纠结的细节扣得过深过细,也能起到督促的作用。


复习/学习专业课:

曾有一个来自A厂的学长很认真的和我建议说,如果我想拿到级别更高的offer,必须要补足我计算机专业课基础薄弱的短板。不仅对我而言,对其他同学也是如此。

计算机的专业课在面试中是绕不开的话题,也是日后的工作中不可或缺的技能。

如果是计算机专业的同学,我的建议是在面试之前集中复习一下学习过的专业课,在Github的“面经”关键字下,有非常多的整理完备的面试专业课复习资料。

如果和我一样是非计算机专业的同学,我可以透露我的学习路线就是一本《Linux/UNIX系统编程手册》,吃透这本书会对后续的求职面试大有裨益。


针对岗位做功课:

其实大多数的面试并不需要对岗位的研究方向了解太多。而且在官网直接投递大厂时的多数情况下,直到面试之前都完全不知情自己的面试官属于哪个组,更不知道自己在面试通过后会被分配到哪个组。所以这条建议在面试过程中的适用范围较小(虽然上文的面经中真的起了作用),但对于投递岗位的选择还是有所帮助。


雷区 - 不要不懂装懂:

面试当中,往往会出现面试官揪住一个点不断往下问的情况,这种情况其实是很正常的。面试官的目的不是非要把你问倒,而是想要了解你对这一方面到底了解多深。所以被问到不会的点,不如坦诚一点,虚心接受;强答一波反而会被扣印象分。


雷区 - coding环节尴尬的沉默

在拿到面试官给出的题目后,对于不确定的点一定要积极核对题意(印象分++)。确认题意完全无歧义后再开始想题,如果题目较难,无法很快想出面试官想要的时间复杂度的解,不如先讲一个暴力一点的解法,再一边想优化的思路,一边自言自语地讲给面试官听。这样不仅能消除奇尬无比的沉默,又能用自言自语缓解面试的紧张,还可以通过心路历程的分享让面试官更好地理解你的做法。

上手敲代码时,也可以如法炮制刚刚的自言自语法,一边敲代码一边向面试官讲解这部分代码的功能。同时也能让面试官听到你对于边界条件的考虑、对于bug的处理、对于代码结构的考虑,让你在敲好代码抬起手的一瞬间,就能让面试官了解你的代码在做什么、怎么做。

最后,不妨自己试着出一组数据卡掉自己的代码,先在脑海中迅速debug一遍,再向面试官解释这个数据中特殊情况、边界情况的判定。


雷区 - 避免挂电话即失联

如果流程允许,面试官同意,不妨留下面试官的联系方式。这样不仅在卡流程的时候可以救你一命,减少时间的浪费。在后续的入职前沟通相关事宜时,也能有一个手把手帮着你的mentor。


反问环节

反问环节虽然不会决定一场面试的成败,但却能留下你必须要知道的重要信息。比如面试官在他的自我介绍中遗漏的重要信息:比如你所面试的岗位属于哪个事业群的哪个具体的组别工作地点在哪里(可能一个组会有多个base)、期望的入职时间(一般都是越早越好)。也需要询问关于“如果有幸通过后续面试,主要会负责哪些工作”等关于工作内容和工作节奏的问题。


实习时长

我和很多带实习生的mentor一样,都觉得实习还是在适当的范围内越长越好。毕竟在一个健康的实习周期内,可能学习、上手的过程就要两个月左右,如果干满契约上的三个月就离职的话,很可能刚刚上手工作内容就离开了。如果能够实习半年左右,上手工作的内容后经历一个项目较为完整的开发过程,对个人的能力是有很大的提升的,写在简历上也会漂亮得多。


关于投递

如果没有八成的把握,最好不要贸然投递大厂。因为每一次面试的评价信息,包括你的优点与缺点,当前亟需提升的能力都会被几乎永久地保存在系统当中。一次因准备不充分造成的糟糕的面试,很可能会让你被打上一些不好的tag,很大程度上影响后续的面试官对你的第一印象,进而影响你接下来很长一段时间内在该厂的求职。出现越挂越难被捞的情况。


关于机会

很多人提倡海投以积累面试经验,但其实在实习阶段,我个人并不太接受海投的方式。首先可能是我的确不那么擅长拒绝别人,一一拒绝那些从面试之前就不打算接受的offer让我有点心累。这方面我不会给大家很明确的建议,希望大家都能理性看待机会,理性分析大饼和各种超级大饼(哭)。


注意鉴别深坑、鉴别大饼

大家意会一下。



· 我关于实习的看法

一个对我很有帮助的人对我说,实习是我职业生涯中试错成本最低的阶段

可以尽情尝试自己感兴趣的方向,看看是不是真的如自己所想一样有趣?

可以尽情尝试不同风格的大厂,看看他们所说的“氛围”到底是不是那个味儿?

离职之后没有中意的机会,也不用担心gap一段时间对自己未来的求职产生的负面影响。

“集邮”式的实习不是目的,在游历的过程中知道自己真正想要的是什么才是目的。

那么我究竟,想要什么呢?wlb真香啊



最后,

希望这篇文章能够帮到你,有意联系请移步yashem66@gmail.com

更多模拟面试

全部评论

(62) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐