普通人如何逆袭大厂
受疫情影响,大厂在缩招、小厂在裁员、hc也大大减少。当时准备春招实习,就能感受到今年Java后端开发形势严峻,身边有A会论文的同学也在转后端,面试的难度系数相较于自己本科那会有明显上升。对于22届的毕业生来说,宣讲会、笔试、面试都发生了巨大的变化,在毕业季找到一份理想的工作实属不易。

校招经历
秋招面试情况:
- offer情况
1.心路历程
第一次找实习时,当时的记忆至今记忆犹新。当时包括阿里、腾讯、百度等大厂全部一面挂,深深的挫败感,尤其是身边朋友手握多家大厂offer,真的有点怀疑自己不适合干这行,但生活要继续,只能继续砥砺前行。当时压力很大,知道自己很菜,需要提升自己,但又不知道如何提升,只能干瞪眼,越发焦虑。当时就在想,如果别人能给一个学习路线有多好,明确告诉具体该学啥,该怎么学。但很遗憾,自己并没有在网上找到合适的学习路线。后期都是自己慢慢摸索,过程很痛苦,比如对于一个知识点,会有非常多的相关书籍,但精力又有限,不可能全看,哪具体选择看那本呢,没人告诉你,只能自己摸索,走了不少弯路。这也是写这篇贴子的初衷,分享自己的学习路线,希望能给大家一点帮助。
在学习过程中,心态很重要,我心态早期也经常崩,越学越觉得自己菜,觉得自己要补好多,真的有点心力憔悴。后期自己是制定了一个计划表,以周为单位,每周一般只干两件事,一般都是一个复杂项搭配一个简单项,比如计算机网络+设计模式,不要想着这周把所有都看点,只会让你更焦虑。在干本周的事时,不要想其他不再计划之内的事,时常开导自己,这块看了,嘿,这就成为我的优势点,就能和面试官多吹会牛。另外,也要学会减压,我是规定自己晚9点之后,就去健身,追剧,玩游戏等,强迫自己不去想学习的事。
2.简历投递
很多同学,都是等到自己准备好,才开始投递,这或许不太好。现在互联网本来就很卷,HC也少,往后投递,被捞的概率又低,面试流程又长,还容易排序。各厂现在开得越来越早,秋招,不少公司6月份就开,早期金九银十的说法,今年应该改为金七银八。我春招,秋招都投得早,只要允许投递,我马上投。好处就是,今天下午投递,明天就安排面试,就算挂了,马上又有新的部门捞,无缝衔接,因为那个时候投递的简历很少。比如腾讯一开,就投递,最开始面天美,等了一周挂了,但是微信支付隔天就捞起来,无缝衔接,这就是投递早的好处。身边朋友不少后期投递,那流程好慢,一周一面的节奏...
- 积累面试经验
之前自己面试经历比较少,一面试就很紧张,尤其是面试时做编程题经常卡壳。从1月份开始,就每天看牛客招聘信息,某大厂有些组1月底就开了,我一口气投了七个部门,全是核心BU,核心BU面试难度较高,但啃硬骨头,更能帮助自己查漏补缺,训练心态。这些部门都是用一周内把我面完,流程很快,挂了,隔壁组又捞。春招实习,该厂就面了20多轮,后面对该厂面试都麻木,不再虚。整个春招实习,自己总共投递了七、八家大厂,全是核心BU,总共面了大概接近60轮。经过这么多轮面试训练,不再畏惧面试,毕竟知己知彼,百战百胜,也了解各厂面试风格,面试侧重点,别人说的,永远没有自己亲身体验的好。也是通过春招实习,明白自己当前水准,当初的努力,没有白费。除了字节,其他家应该都没挂过,字节当时两轮一面游,挺担心影响秋招,不过秋招字节还是很多组约面。所以,不要太担心春招面评影响秋招。
- 实习转正
最后选择去了某大厂实习,然后转正成功。有大厂实习经历,对秋招也有明显帮助。
- 秋招直通车
最开始大家都说,很多公司春招实习不去,没直通车的说法,但是秋招其实有不少会安排直通车,被安排直通车,只需要一轮技术面,但一般都是聊项目和实习,不会问八股文,考编程这些。另外的话,就算没有直通车,秋招也能明显感受到面试难度会偏低,不会死磕八股文等,估计面试官觉得春招已经考察过。
3.面试技巧
一定要重视简历,面试官就是根据你的简历提各种问题。简历上一定要突出优势点,不能写任何自己不熟悉的地方。最开始,我就写了会linux、CPP,天美死磕我,后面微信支付,我就把这两项删了,后面4轮面试官都没问cpp相关的知识点,linux也问得很浅。
此外,简历最好和求职岗位相关,我当初投递后端岗位,然后在简历里写了不少关于深度学习的项目,结果就导致一些面试官觉得我应该更适合去搞算法,而不是开发。
另外,面试的时候,遇到不会的,千万不要说自己不会,要努力去思考一会,如果还不行,就给面试官说目前没啥思路,下来再继续琢磨。直接说自己不会,会给面试官留下不喜欢思考、探索的坏印象。
最后,面试的时候,要学会把面试官引导自己熟悉的地方,掌握面试的主动权。比如面试官问“http1.0和1.1的区别”,如果你对计算机网络很熟悉,你除了回答两者的区别,可以进一步扩展到http2.0和http3.0,http3.0你又可以很自然的扩展到tcp和udp,甚至引出fast open等,实现主场作战,掌握面试主动权,给面试官留下深刻影响。当时面某厂,就是从这个小问题出发,和面试官聊了一个半小时的网络相关,面评也给得特别高。所以,学会引导,回答问题,多扩展一下。
硬核知识
java后端,我们到底应该准备些什么呢?在这里,我给大家分享下自己的心得,也欢迎大家补充,共同进步。面试归根结底,是用来判断候选人是否具备胜任后面工作的潜力。
对于后端开发,我认为面试官主要考察以下维度:
1)基础知识
2)项目经历
3)实习经历
4)其他加分项。
基础知识
基础知识应该包含以下:java基础、数据库、计算机网络、操作系统、数据结构、设计模式等。对于基础知识这块,既要追求广度,也要追求精度,要有自己的思考,多总结,多去探究底层原理。
1)java基础
对于这模块,应熟练掌握多线程、网络编程、虚拟机等知识点,推荐阅读:
基础:
- 书籍:《Java核心技术》卷1和卷2、《Java语言程序设计基础篇》
- 学习路线:必读《Java语言程序设计基础篇》
多线程:
- 书籍:《Java并发编程的艺术》、《JAVA并发编程实践》
- 学习路线:必读《JAVA并发编程实践》
虚拟机:
- 书籍:《深入理解Java虚拟机:JVM高级特性与最佳实践》、《实战Java虚拟机:JVM故障诊断与性能优化》
- 学习路线:必读《深入理解Java虚拟机:JVM高级特性与最佳实践》
网路编程:
编程思想:
- 书籍:《Java编程思想》、《阿里巴巴Java开发手册》、《Effective Java》、《重构》
- 学习路线:必读《Java编程思想》、《Effective Java》
面试相关:
- 书籍:《Java程序员面试笔试宝典》
- 博客:JavaGuide
- 视频:剑指java面试-offer直通车(慕课网)
- 学习路线:必看《Java程序员面试笔试宝典》、JavaGuide、剑指java面试-offer直通车(慕课网)
2)数据库
对于这模块,应熟练掌握Mysql、Redis等,推荐阅读:
Mysql:
- 书籍:《MySQL 必知必会》、《高性能 MySQL》、《MySQL技术内幕 InnoDB存储引擎》
- 视频:尚硅谷MySQL技术高级篇(B站)
- 学习路线:必看《MySQL 必知必会》、《MySQL技术内幕 InnoDB存储引擎》、尚硅谷MySQL技术高级篇
Redis:
- 书籍:《Redis设计与实现》、《Redis实战》
- 视频:尚硅谷Redis高级-周阳(B站)
- 博客:死磕 Redis
- 学习路线:必看《Redis设计与实现》、尚硅谷Redis高级-周阳
3)计算机网络
对于这模块,应熟练掌握TCP、UDP、HTTP、IP等知识点,推荐阅读:
- 书籍:《计算机网络-自顶向下方法》、《TCPIP详解三部曲》、《图解HTTP》、《图解TCPIP》
- 视频:计算机网络(谢希仁第七版)-方老师(B站)
- 学习路线:必看《计算机网络-自顶向下方法》、计算机网络(谢希仁第七版)-方老师
4)操作系统
对于这模块,应熟练掌握进程管理、内存管理等知识点,推荐阅读:
- 书籍:《深入理解计算机系统》、《现代操作系统》
- 视频:操作系统(哈工大李治军老师)(B站)
- 学习路线:必看《现代操作系统》
5)数据结构
对于这模块,这块考察,大多是编程题,推荐去力扣、牛科等平台刷题,可以养成每天刷1到2题的习惯,此外要善于总结,比如经典的股票系列问题,其实背后的思想是一致的,完全可以用相同套路来解决。
- 学习路线:必看《算法竞赛入门经典》、labuladong
6)分布式
这模块属于加分项,需要了解分布式基础知识,例如CAP、BASE、Raft、ZAB等。
- 书籍:《数据密集型应用系统设计》、《分布式操作系统》《大型分布式网站架构设计与实践》、《大型网站技术架构:核心原理与案例分析》、《大型网站系统与 Java 中间件实践》、《分布式 Java 应用:基础与实践》
- 学习路线:必看《数据密集型应用系统设计》
7)Linux
这模块属于加分项,需要了解Linux基础知识,例如常见Linux命令等。
- 书籍:《鸟哥的Linux私房菜》、《UNIX环境高级编程》、《深入理解Linux内核》
- 博客: Linux Tools Quick Tutorial
8)设计模式
这模块属于加分项,需要了解常见的设计模式,例如单例模式、观察者模式等。面试时,如果能指出这些设计模式真实的应用场景,会加分不少,比如线程池饱和策略就是策略模式,Arrays.asList底层就是个适配器模式等。
- 书籍:《大话设计模式》
- 学习路线:必看《大话设计模式》
整体学习路线:
优先看完java基础、数据库、计算机网络、操作系统、数据结构必看部分。完成以上部分,就可以主要看牛客面经,去力扣刷编程题。后期时间充裕,再看分布式、Linux、设计模式必看部分。最后再去看各部分进阶部分。
我是看完java基础、数据库、计算机网络、数据结构、设计模式必看部分,附带一部分进阶部分。后面就只看牛客面经,力扣刷题。春招实习面了约60轮,大概挂了4轮。秋招大概面了约20轮,挂了1轮。面试部门都是各厂核心BU。所以大家以我为参照,估算自己。相信完成以上,大家都能拿到心仪的offer。
项目经历
一定要做项目,项目非常锻炼自己,能够进一步加深我们对各种理论知识的理解。我当初的入门级项目是:Java双版本(SSM到SpringBoot)校园商铺全栈开发(慕课网),新手可以用这个入门。此外,项目不再多,而再精。再多的项目,都不如一个好项目。大家可以选择一个自己感兴趣的业务场景,然后深挖。不太推荐去做博客、商城、秒杀等烂大街项目,很多面试官都反映看到这些就烦,因为都是这个,hhh。大家可以做一做Tomcat、JVM、分布式缓存、RPC等。项目开发最好对标真实业务场景,此外多去了解当前业界的解决方案,融会贯通,加深自己的理解。在项目中融入Netty、Dubbo、Kafka等业界主流框架,面向分布式场景,项目会加分不少。
实习经历
有实习机会,一定要去。去企业实习,能让我们真正感受企业开发的流程,面对真实的业务场景,对自身能力也会有明显提升。实习的话,不要忽略中小厂。我们当然都想去大厂实习,但目前大厂实习竞争十分激烈。我和我身边朋友其实很多第一段实习经历都是在中小厂,有了中小厂实习经历的背书,去大厂会容易不少。
自己目前有3段实习经历,其中有1段就是在中厂实习。第一次找实习,自己当时包括阿里、腾讯、百度等大厂全挂,深深的挫败感,尤其是身边朋友手握多家大厂offer,真的有点怀疑自己不适合干这行。后来自己开始投中小厂,最后去了一家中厂实习。在这段实习中,自己主要做直播带货这块业务,从头到尾经历了需求确定,技术方案讨论,代码开发,联调,灰度发布,线上观测,正式发布这样完整的业务流程,在这个过程中,自己对如何开发一个企业级项目,真实业务开发需要考虑哪些事,自己还有哪些短板有了更深刻的理解,总的来说,这段实习经历让自己收获满满。在面试大厂的时候,能够明显感受到面试官对这段中厂实习经历非常感兴趣,会深挖整个业务流程,有几场面试,基本上全是在聊这段实习。所以大家可以考虑下中小厂的实习。