2022后端岗秋招总结(BAT等10+offer,更新中)
9.24收到了阿里云的意向书,我的秋招也就到此结束了。准备秋招包括之前准备实习的时候看了不少牛客的面经,我也想总结一下自己的经验,尽可能的帮助之后的牛友。
楼主是硕士,非科班,java选手,投递的都是后端岗位。
目前的offer情况:
已意向:腾讯、字节、阿里、美团、网易、京东、tplink、vivo、oppo、乐鑫科技,还有诺瓦等一些独角兽公司。
hr面完在泡池子:拼多多、华为
面试流程中:微软、intel、百度(想吐槽一下百度,我8.7投的提前批,隔了一个月9.7才给我发的笔试通知,那时候正式批都开始了,然后我做完了笔试又杳无音讯...)
关于整体面试难度,我个人的排序是这样的
字节, 阿里 > 腾讯, shopee, 拼多多 > 美团, 网易 > 京东 > vivo, oppo, 华为 > tplink
当然不同公司的侧重点也不同,比如字节注重算法,每轮面试必有算法题,如果撕不出来哪怕之前八股文回答的再好也得挂;阿里注重项目及实习,喜欢问一些具体的场景应用问题,算法题一般只需要口述思路即可;美团注重基础知识,以及一些将知识应用于实践的能力;而华为、tplink注重学历,所以有个好的本硕背景是很占优势的。
全文写完估计比较长,主要分成三大部分
写在前面的话
如何高效准备秋招
BAT相关面经
为节省时间大家可以根据自己需要看对应部分
———————————————————— 正文分割线 ———————————————————
写在前面的话
1. 提前批很重要,千万不要错过提前批。
现在互联网公司的招聘时间越来越提前,以前说的金九银十早已不适用,金八银九才是现状。大部分互联网大厂会在7、8月,甚至6月开放提前批,所谓的秋招渐渐变成了夏招。这样就导致等到正式批开放,hc所剩无几,竞争及其激烈,这时候再想上岸就更难了。有的同学会觉得提前批都是给一些极其优秀的同学参加的,或者觉得自己没准备好不敢参加。我认为这些都是错误的思想,首先没有哪一家公司的提前批是只针对双985学生开放的,甚至提前批hc足,竞争的激烈程度个人感觉要小于正式批;其次你觉得你没准备充分,实际上大家都是一样的,等你准备充分了,或许人家早都上岸了;退一万步说,哪怕你提前批挂了,正式批还可以参加,那不是多了一次的经验,帮助你更好的准备正式批吗?
我是从7月就开始边实习边陆续参加面试,先参加了一些小公司的提前批积累经验,先是拿了vivo、tplink提前批的offer,之后又拿了美团、网易提前批的offer。这时候有了保底offer,心态就不一样了,开始放心冲击bat等互联网一线公司。
2. 选择公司需要有策略,不能盲目的海投。
即便是有提前批这样一次多出来的机会,也需要有一定的策略和优先级,尽最大程度的利用这一次机会。如前文所说,我建议在一开始的时候先去尝试一些小公司,或者一些二三线互联网去积累经验。面试完后,及时总结面经,查漏补缺,不要去过分关注面试结果,而是要让自己每一次面试之后都能学到新东西,这个过程中也会慢慢提升你的交流能力和自信。这点我感同身受,我也是一开始见到面试官支支吾吾说不出话,到现在能和面试官侃天侃地一小时面不改色,这些都是需要去锻炼的。 在你觉得自己的能力得到一定提升后(比如面试通过的频率增加了,或者拿到了一些保底offer了),这时候就可以去试试bat了。同样也要摆正心态当作是一个进步学习的过程,bat挂你是很正常的事,毕竟面试难度摆在那里。当时字节我是经过了六轮面试(三面挂了,被其他部门捞了,又面了三轮通过了);阿里也经过了五轮技术面;在找实习的时候就被腾讯摩擦多次,还以为留下的面评会很不好,没想到是第一个bat offer(这里也验证了,不要怕留下不好的面评,只管冲就行了)。
3. 实习转正 or 准备秋招。
这也是一个老生常谈的问题。每年的4、5月份牛客上都会有很多牛友开帖问类似的问题:究竟是先去实习之后转正,还是准备秋招? 我的意见是,如果你那时候的能力已经达到了大厂实习的标准,那一定要去大厂实习,之后尽量转正,这是捷径中的捷径。当然也要考虑你的部门环境怎么样,是否是核心业务线,转正hc多不多等等。如果有不合适的地方,也要提前准备秋招跑路,别被弄的措手不及。但是如果你的能力那时候还达不到大厂的标准,那你就需要辛苦一些了,我的建议是尽量去找一些小厂的实习,在实习的同时去准备秋招。因为实习经历在秋招是很大的加分项,大厂就不说了,我说的小厂实习经历是指你真的去参与了开发项目,完成了一些功能的实现,而不是一些杂活。这些都是需要你自己去总结的,总结好了就是你日后和面试官“吹牛”的资本了。小厂实习的优势就在于,你可以把整个流程都跟一遍,而不像大厂各拧各的螺丝钉。
这也是我的经历,因为不是计算机科班出身,决定转码的时间又晚,所以4月找实习的时候一个愿意收留我的大厂都没有,最后之后去了一家创业初期的公司,甚至连独角兽都还称不上,但我那里确实学到了不少东西,也真正参与到了项目中去,成为了我秋招的加分项。
如何高效的准备秋招
秋招的难度是略高于春招实习的难度的,但其实也在同一个范围内,毕竟需要准备的东西基本是一样的。无非就是:
基础知识(即八股文,包括但不限于java相关、计算机网络、数据结构、操作系统、数据库、linux、redis等等)+ 项目经历 + 实习经历 + leetcode刷题
那我们就依次说起。
1. 基础知识
首先对所有的八股文重要性按我的理解做一个排序(只针对面试考察):
计算机网络, 操作系统,数据结构, java基础 (这些是必须掌握的)> 数据库, linux, redis(这些也要掌握,优先级略低于前面)> Spring+SpringMVC+MyBatis框架, 各种中间件, 微服务, 云计算等等(有了解会是加分项,可以体现在项目里)
以上的其实也只是一个概括性的说法,比如说java基础包括但不限于JVM内存模型、GC机制、类加载、锁机制、多线程安全等等知识点。如果不是科班出生又时间紧迫的小伙伴,建议去b站或者慕课跟着课程学一遍,让自己的知识成体系架构,不然看别人的面经都看不懂。
2. 项目经历
我的项目经历实际上就是在学校里完成的课程项目,虽然比较简单,但都是自己亲手完成的。我不建议在网上随便找个什么电商的项目就放到自己的简历上,除非你真的对这个项目的设计有深入的了解,并且有自己的思考和改进。面试官见的面试者那么多,两三句就能知道这个项目是不是你自己的。如果你真的没有拿得出手的项目,我建议花一个月去imooc完整的跟一个项目,用的技术栈要和你的岗位贴合,面试官问的时候就直说是mooc上跟着做的项目,主要讲你的收获和你对这个项目的思考和改进。
常被问到的开放性问题包括:该项目你最大的收获是什么?该项目最大的难点是什么?该项目最大的亮点在哪里?你认为还能做出什么改进?项目的背景是什么?
总而言之,一定要对自己的项目的细节很清楚。如果不是自己的项目,也一定要把写在简历上的项目尽量变成你自己的东西。
3. 实习经历
这一part是你如果写在简历上,面试官必然会问的东西。我觉得实习最需要考虑的是岗位和工作内容,而不是大厂或小厂,毕竟只是实习三四个月,又不是永远在这家公司(想去大厂实习转正的除外)。 所以我的排序优先级是:大厂对口岗位 > 小厂对口岗位 > 大厂不对口岗位 > 小厂不对口岗位
有的人可能会有疑问说,比如我之后想从事后端开发,但现在我的能力进不了大厂的后端实习岗,只能进客户端岗,那我是选大厂客户端还是小厂后端呢?这个仁者见仁,但我的答案就在上一段里了。
4. 刷算法题
算法题主要是为了解决笔试(当然大部分提前批都没有笔试) + 面试手撕代码(很常见,大厂基本每面都会有)。 我的刷题方法是速成刷法,直接从高频开始刷,刷一段时间再去做总结复习。我其实不太建议这样刷题,如果时间充足还是建议按照tag刷,更加扎实一些。关于刷题攻略牛客上已经有一大堆了,我就不赘述了。强调一点就是不建议太大量的刷题,我只刷了200道左右的力扣,每道题至少刷了两遍,少数题刷了五六遍的也有(主要是老忘...),但我可以保证我吃透了这200道的大部分。我觉得这个刷题量就足以应付面试的手撕代码了。
一般面试手撕代码的难度在力扣medium左右,很少遇到hard。也有例外比如面试官想试试你的深浅,拼多多三面的时候直接让我手写线程安全的hashmap。遇到这种情况也只能尽力而为了。
统一笔试的话很多情况下都不是硬指标,只要做的别太离谱都能通过。这里多插一句,一定要提前适应ACM模式,别被leetcode的核心代码模式惯坏了,用自己ide如何打断点调试这种基本技能也是必须具备的。
BAT相关面经
to be continued...