我是如何在2年内逆袭成为BAT年薪40W的资深开发工程师的?

身边的师弟师妹常常问到:java

非计算机专业出身,你是在2年内如何逆袭成BAT年薪40W的资深开发工程师的。其实很简单——努力!程序员

我16年毕业于普通的二本学校,非计算机专业出身,只由于对软件开发感兴趣,因此找工做的时候就一直投IT行业的职位。刚踏入这个行业时,觉得突击一下东拼西凑的面试材料,就能有个很好的收获。结果倒是,别说大公司了,就是不少看不上的小公司的笔试题都过不去。面试

焦躁阶段数据库

后来我去了本地的一个小公司去作服务端的开发。虽然叫服务端开发,但其实就是作系统指标监控功能,从DB中读取一些指标数据,经过图表的形式展示在浏览器中,所用的技术无非就是Spring MVC那一套。 这种CRUD的工做内容作时间长了,就纯粹是体力劳动了,技术视野没办法打开。编程

即便写这么简单的功能代码,却还老是被leader批评,说我 写的代码质量太差,配不上这几千块的工资 。人老是要脸面的,为了改变这种情况,就开始想着如何在平凡的工做中把事情作到极致,开始关注代码质量,开始真正的啃起了《Java编程思想》、《effective java》、《设计模式》这些书。设计模式

同时强迫本身在代码开发前,多画一些架构图、数据流程图,写代码的时候也强迫本身代码分层,通过半年的磨炼,渐渐的也能写出一些松耦合高内聚的代码,也改变了满屏if-else乱飞的现象。leader也再也不说我代码差了,还给我涨了几百块钱(知识就是金钱)!浏览器

clipboard.png

打开见识阶段性能优化

当时我觉得这就是优秀程序员的核心能力,就鼓足勇气去投了一些大公司的职位,却没收到一个面试邀请函。后来投了几个小公司的面试,收到了面试却没收到offer,由于有的面试题我根本没有概念,好比:网络

相比关系型数据库,NoSQL的优点在哪里,大家在什么场景下会用到?数据结构

分析日志里存的都是帐号登录信息,一天100G左右,找某一时间段内登录次数最多的一个帐号

大家的并发量有多大,对于雪崩现象是如何规避的?

这些问题让我意识到:语法与设计模式只是程序员基本技能而已,要想进一步发展,必须在 数据结构、高并发、分布式技术等 方面提升。最开始学习的时候是很艰难的,基础弱,加上工做中又没有这些技术的使用场景,因此只能在论坛、博客等看零碎的文章,进步比较慢。

要想系统的学习,图书和网络课程是比较好的选择。我买了诸如《 java并发编程实践 》、《 大型分布式网站架构设计与时间 》、《 Spring Cloud与微服务构建 》等书,来来回回看了好几遍。而后在网上看了些视频,有免费的,也有收费的。我还花了近半年时间系统性地学习了一套课程,学完以后对Java相关的技能有了更为体系化的了解。同时, 对于非科班出身或基础知识不够扎实的工程师来讲,也能够有效起到查漏补缺的做用。

clipboard.png

以后我就试着在工做中利用这些技术,当时的状态就是“拿着锤子后,看到哪里都是钉子”,学到一个新技术后,就想强行用在任何项目上,leader有时候说我疯了,可我以为也没必要鄙视这种经历,凡事都有一个认知过程,这也是一种积累。

知识深化阶段

大概17年下半年,我就投了一些大的互联网公司职位,比上次好一点,有一些公司给我了面试邀请,但最后却都仍是没收到offer。

后来复盘一下面试问题,发现我在总体技术面上回答得较好,但在细节技术点上,有点吃力,好比面试官问:

聊一聊你对JVM的原理,如何减小Full GC的状况?

消息队列如何保证顺序消费?如何保证at least once特性?

数据是经过push仍是pull方式给到消费端,各自有什么弊端?若是消费失败,多是哪些缘由引发?若是是由于网络缘由引发,该如何解决?

通俗的话来说,就是虽然我见识了各类各样的轮子了,也知道各类轮子适合在什么样的路上跑,但不知道为何适合。 针对这种状况,结合已有的知识体系,选择了一个方面进行了深刻,我当时选的是消息队列的深刻研究,从网络协议、服务端消息存储、客户端消费、各类异常状况的处理等都摸了一遍。

这个过程我会针对每一个环节进行假设反问,若是这一步失败了,会发生什么状况,该如何处理?这种思惟培养了我对技术问题细节思考的能力,如今看来真的是受益不浅。

18年上半年,我又去试了大公司的面试,虽然过程磕磕绊绊,可是面试官以为我思考问题仍是挺全面的,潜力比较大,所以最后收到了待遇丰厚的Offer!

逆袭路上的3点体会

为何我会一直执念于要去BAT之类的大型互联网公司工做?除了由于薪水诱人,更是由于能有大规模分布式的技术能够挑战。

回首两年来的升级打怪之路,从16年毕业于普通的二本学校,到成为顶尖互联网公司的资深Java开发工程师,难免感慨良多。若是说让我给你们分享几点心得,那如下的3点应该是我近两年来最大的感触:

跳出温馨圈,找到目标是前进的起点。 若是你在本身当下的工做中没法接触太多的新技术,能够尝试多去外面公司面试,这能在必定程度上帮助本身找到学习的目标;

跳槽要趁早,杜绝成为温水里的青蛙。 对于想跳槽到大公司的同窗来讲,必定要趁早。由于一样的水平状况下,大公司更会看中「潜力」—— 年龄越大,潜力越小;

始终保持你的学习欲。 对于工程师来讲,学习永无止境。但埋头苦学是不够的,你要注意本身的学习必定要有系统性,除了手头的项目和身边“大牛”的指导外,看书和网络课程是最有效的方法,用少许的金钱换取宝贵的时间,是很是值得的。

最后对于Java的学习我这里也收集了不少资料,但愿和你们共勉

clipboard.png

最后给你们推荐一个架构交流学习群:371067604,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析
,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,相信对于已经工做
和遇到技术瓶颈的码友,在这个群里会有你须要的内容。

点击连接加入群聊【享学-Java技术交流群】:https://jq.qq.com/?_wv=1027&k...

相关文章
相关标签/搜索