前言

  • 正如标题所说,这是我进大厂的背水一战,这一战,不成功便成仁!同时,这也是我的逆袭之战!为什么这么说呢?因为我的个人工作经历确实已经达到极限(烂到极限)了,如果这次进不了大厂,以后基本就无缘了!为了实现这个目标,我坚持学习了两年。越努力越幸运,就在最近,我成功拿到了阿里的offer,定级P6,成功逆袭

  • 接下来,将和大家分享下我坎坷职业生涯道路。文章末尾会附上面试题,记得查看哦

一、坎坷的职业生涯

  • 我的学历非常普通,属于那种大厂学历门槛中最底层的级别(本科)。在刚毕业时,我的职业规划也非常的!是的,你没听错,真的非常的!从实习工作开始到现在,工作四年,换了两家公司(如果加上这一次的话,那就是换了三家公司了😢,(这里给自己跳槽频繁的原因补一个刀:主要是之前的职业规划不清晰,在第一次跳槽时,跳偏方向了!为了纠正之前的错误,才出现频繁跳槽的情况)并且还有一家是传统行业的工厂。是的,就是上面说的跳偏方向

  • 这个时候也可能有人会说了:你一个普通本科学历、传统工厂经验、跳槽还频繁,是谁给你的勇气挑战大厂权威的??是如何逆袭的?

  • 是的,我也曾经这么怀疑过自己。但是,请记住:如果你连自己都怀疑的话,那就真的没希望了!被自己的心里鸡汤洗脑后,我也就重振旗鼓,朝着大厂的目标,开始了我的逆袭之路。

二、技术准备阶段:技术栈眼花缭乱,不知道从哪开始下手?

  • 这确实是很多打工人头疼的点,每天立各种flag,买各种技术书籍,但最终都是flag逐渐被淡忘,书躺在家里吃灰的结果。那到底要从哪里开始下手呢?这里分享下我的个人经历。

  • 我在CSDN第一次发表的文章内容是:spring 5.0.x源码学习系列一: 构建spring源码。是的,没错,从spring源码开始着手。这里就有个疑问了:为什么要从源码开始着手呢?这就好比于每人的生活习惯,你的生活习惯未必会适用于我,所以这块还得根据你自身拥有的知识点来决定到底要先学习哪个技术。但需要有一个主体思想,针对某个新技术,至少要有三个过渡期:分别是Hello World期、深度熟练使用期、研究原理期

    过渡期目的拥有的能力Hello World期学会基本使用方式。eg:Spring的AOP、IOC基本会使用深度熟练使用期在基本使用方式熟悉的前提下,学习相关的扩展知识点。eg:Spring的后置处理器能非常熟练的使用相关的技术(基本功能、扩展功能、拥有二次开发能力)研究原理期抓住主线流程,熟悉其底层的设计、执行原理(需要画流程图、思维导图来帮助你构建整个主线的知识体系)。eg:Spring的AOP和IOC的原理就是和Spring的后置处理器扩展点结合使用的知道如何阅读源码,能学习到源码中使用到的设计模式、命名规范等。

  • 因此,我整个后端的技术栈学习路线是这样的:Spring -> Java并发编程 -> Dubbo -> MySQL -> Redis -> MQ -> 网络相关。同时,在这个阶段中一定要坚持画流程图、脑图来巩固自己的技术点

三、获取面试机会阶段:大厂的应聘者(优秀者)如此之多,如何脱颖而出,拿到面试机会?

  • 对于我们这种学历位于食物链底层的人来说,也只能从其他方式来寻找亮点了

  • 写技术博客👍:写技术博客就是一个验收自己学习效果的过程,如果你能以大白话的形式把技术讲解得通俗易懂的话,那你就是彻底熟悉这个技术点了!

  • 开源贡献🙏:如果你不擅长在各大开源框架中找issue并修复它的话,那这一加分项就只能靠缘分了。本人最开始学习的是Spring源码,但最终却成为了Dubbo的开源贡献者,你说是缘分么?(如果你对我开源的内容感兴趣的话,可以参考我的这篇文章滑稽之事:学习Spring源码半年后,我成为了Dubbo的贡献者)

  • 找大厂的小伙伴内推🤝:这个也是有运气成分之说,这个需要有人脉关系。如果你没什么大厂人脉关系的话,可以在脉脉中找相关的内推帖子或者找各种公众号大佬帮忙内推。但有一个需要注意的点:要找比较靠谱的人帮忙内推,最好是那种能反馈给你每个阶段的面试结果的人才行

  • 坚持学习😄:这一点坚持下去确实比较难,我中途也中断了一两个月,但很庆幸又找回了自我。

  • 而我,职业生涯这么差的一个打工人,也是凭借着技术博客、开源贡献、内推、坚持学习这四点才拿到面试机会。

四、面试阶段:八股文 + 项目经验 + 沟通技巧(完整版点击此处获取


五、阿里面试题分享(汇总)(完整版点击此处获取

  • 有意向来杭州吗?结婚没?学校是全日制本科吗?

  • 项目中有遇到哪些最有挑战的事情(业务上、技术上)(重点

  • 假设用户连续点击两次支付,你们是如何处理的

  • 假设有两个节点部署,此时你是如何保证的

  • 你说你是Dubbo开源框架的贡献者,提交的Commit主要包含了什么内容?

  • hashmap是线程安全的吗?有哪些线程不安全的表现?

  • jdk1.8相对于jdk1.7做了哪方面的优化?

  • hashmap在查询过程中,除了链表查询导致的查询慢之外,还有其他原因吗?

  • 聊聊JMM结构

  • synchronized和threadLocal都可以保证线程安全,为什么?

  • 如果线程A有一个ThreadLocal,线程B可以用这个ThreadLocal里面的值吗?

  • Dubbo和SpringCloud的优缺点

  • 如何设计一个网关?

  • 你在项目中最有挑战的是什么?最有价值的是什么?

  • 项目中哪些地方用到了redis?redis的线程模型是什么?

  • 最终一致性的分布式事务了解吧?你们项目中有哪些场景用到了最终一致性的分布式事务?

  • 分布式锁是怎么实现的?如何避免死锁?

  • Java中强引用、弱引用、虚引用、软引用在GC的过程中都会怎么处理它们?

  • Netty的线程模型是什么?

  • Dubbo的底层实现原理是什么?

  • Spring的事务是怎么实现的?

  • TCP协议建立连接和断开连接都做了哪些事情?

  • 你有什么想问我的吗?

我的面试经验汇总

下面先给大家上一个总的目录大纲,基础的东西就不进行过多的赘述,我们将会从面试必问的说起,同时由于每篇的内容过多,我们也只说重点,太过基础的内容谁都会,我就不多敲字浪费大家的时间了!

完整版点击此处获取

SpringCloud


Redis


JVM


MySQL


Zookeeper


Kafka


Dubbo


spring


Rabbitmq


springboot


最后

由于文章篇幅有限,PDF的内容又很多,全部手敲下来很累…所以需要阅读阅读学习的
有需要的朋友看看主页自取就好了,希望资料对你有帮助!
预祝大家前程似锦,工作顺利!