逆袭之战 & 背水一战:毕业三年,坚持学习两年,成功上岸阿里,定级P6
前言
- 正如标题所说,这是我进大厂的背水一战,这一战,不成功便成仁!同时,这也是我的逆袭之战!为什么这么说呢?因为我的个人工作经历确实已经达到极限(烂到极限)了,如果这次进不了大厂,以后基本就无缘了!为了实现这个目标,我坚持学习了两年。越努力越幸运,就在最近,我成功拿到了阿里的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的贡献者)
- 找大厂的小伙伴内推🤝:这个也是有运气成分之说,这个需要有人脉关系。如果你没什么大厂人脉关系的话,可以在脉脉中找相关的内推帖子或者找各种公众号大佬帮忙内推。但有一个需要注意的点:要找比较靠谱的人帮忙内推,最好是那种能反馈给你每个阶段的面试结果的人才行。
- 坚持学习😄:这一点坚持下去确实比较难,我中途也中断了一两个月,但很庆幸又找回了自我。
- 而我,职业生涯这么差的一个打工人,也是凭借着技术博客、开源贡献、内推、坚持学习这四点才拿到面试机会。
四、面试阶段:八股文 + 项目经验 + 沟通技巧
-
如果你获取到面试机会了,那接下来就是面试环节了。我本人在这一个月内面试了美团、京东、阿里、叮咚买菜等互联网企业,分别为面试官的面试风格做了如下总结:
面试风格 面试官的行为表现 主要想考察你的点 如何面对 倾听型 抛出一个问题,由你自己发挥,不会中途中断你的回答,如果你回答的比较浅显,他会追问一句:还有补充的吗? 考察你的知识脉络,可以考察到你的知识体系是否完整。这样的考察方式基本上可以确定你入职的工作态度。 认真学习技术、业务。使用脑图、流程图等技巧巩固自己对技术、业务的认知。以技术点为例:要明白这个技术的出现是为了解决什么问题?有什么优缺点?实现原理是什么? 深究型 抛出一个问题,一层一层的往深问,直到你不会为止 考察你的技术深度。这样的考察方式基本上可以确定你是否有钻研性精神。 需要有钻研精神、好奇心。在学习技术时,多想一想为什么。将自己的所思、所学、所想以文章的方式输出。 项目细节型 抓住你简历中的某一个点,一直往深问,会问到实现的细节 考察你简历上的东西到底是不是真实的、是不是合理的、是不是你自己做的。 实事求是,多钻研自己负责的业务模块。多想想为什么?能否有更好的方案? 解决实际问题型 通常会告诉你一些情景,问你发生这种情况的可能性有什么? 考察你实际解决问题的能力。 学习技术时,需要与实际案例相结合。如果项目中没有这方面的需求的话,可以多做些demo。 注重高效沟通型 通常会让你介绍你做过的业务,遇到了哪些难点?如何解决的?解决后的结果是怎样的? 考察你的表达,面试官期望你使用STAR模型来回答这个问题,因为这样,面试官才能知道你做的这个业务的背景是什么(Situation)、有哪些任务需要做(Task)、做了那些事(Action)、结果是怎么样的(Result)。通常,他们还期望你使用一些数字来描述结果,比如性能提升的话,提升了多少倍等等。 平时提高自己的沟通能力。可以阅读《金字塔原理》这本书,能有效的提高沟通能力。 -
关于解决实际问题型的面试官,我也有亲身体验过,详细内容也以文章的形式发布出来了,如果你感兴趣的话,可以阅读下:我惊呆了!阿里P7面试官问我:存在一个事务方法,参数是一个list,内部遍历list循环更新商品信息。这个api会出现死锁吗?
五、阿里面试题分享(汇总)
- 有意向来杭州吗?结婚没?学校是全日制本科吗?
- 项目中有遇到哪些最有挑战的事情(业务上、技术上)(重点)
- 假设用户连续点击两次支付,你们是如何处理的
- 假设有两个节点部署,此时你是如何保证的
- 你说你是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协议建立连接和断开连接都做了哪些事情?
- 你有什么想问我的吗?
六、总结
- 毕业三年,坚持学习两年,成功上岸阿里,定级P6。感谢坚持学习的自己,感谢内推我的同学,感谢所有给我提供支持与建议的小伙伴!
- 如果你觉得我的文章有用的话,欢迎点赞、收藏和关注。:laughing:
- I'm a slow walker, but I never walk backwards
转载自:https://juejin.cn/post/6995012264675770382