“五年经验”年薪50W分享Java程序员掌握什么技术才不会被淘汰

在这个IT系统动辄就是上亿流量的时代,Java做为大数据时代应用最普遍的语言,诞生了一批又一批的新技术,包括HBase、Hadoop、MQ、Netty、SpringCloud等等 。java

一些独角兽公司以及腾讯、阿里、百度、网易等知名大厂对Java人才的需求量连年升级,有2年工做经验的优秀程序员能轻松达到30w+的水平,但与此同时对人才的要求也愈来愈高。程序员

好比,大厂的面试官常常会以以下句式来询问:面试

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

针对高并发场景,如何优化,都采用了什么技术?sql

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

能够看到,对于社招同窗而言(特别是有2~5年工做经验的同窗),不只仅会问一些编程语言、设计模式等基础问题,还要对一些项目有深刻的实战经验。编程

但现实倒是,不少同窗在技术生涯最初几年都会沉浸在业务开发中,忽视了对系统知识的梳理和技术视野的扩展。日复一日,致使不少同窗就觉得这就是技术的所有,同时在重复的体力劳动中也丧失了对技术细节的深刻探讨。设计模式

每一个程序员都追求“成就感”,而得到成就感最好的方式就是本身在技术上的突破。网络

技术的突破须要依赖业务场景的需求和自身刻意的规划学习,两者缺一不可,但前者是机会,每每不是本身能彻底把控的,若是在本身工做中没有实践场景,最好的办法就是系统的学习与梳理,为本身制定一个不一样时间段的发展道路,待机会来临时就能一展身手。数据结构

以工做前5年的规划为例,至少须要突破三个层次:

对代码精益求精

最开始工做的时候,咱们会抱怨业务需求对技术没挑战,以为在学校学到的这么多知识却没有用武之地。

实质上这是忽略了技术开发的本质,技术开发是一个工程项目,而工程项目的落地最重要的就是细节控制,也就是代码的品质,好比:

代码是否遵循了规约?接口设计的是否随意?测试用例是否都经过?

满屏的if-else是否能够用合理的设计模式来替代?有没有遵循SOLID原则,KISS原则?

有没有考虑用更合理的数据结构和算法改变代码的复杂性,提高运行的性能?

代码出bug的几率有多大,可否下降?

这是程序员的立足之本,基本是工做1年左右要达到的。在这一阶段看书是比较好的提高方式,好比:《Java编程思想》、《effective java》等。但要注意的是,在看书的过程当中必定要思考可否运用书中的经验来改善本身写的代码,运用到实处,好比看到final和static,想一想本身代码中用的是否合理。

此外,还能够看些经常使用的开源框架,若是你用的是Spring框架等,那么下面一个很好的知识结构:

 

 

跳出来,主动了解技术全貌

在将基础打牢以后,须要主动突破温馨区,不断的去扩大本身的技术视野,作到有广度。

这一步比较难,由于不少同窗会被公司的技术和业务牵着走,好比公司当前的业务规模决定了技术上不须要分布式技术,那么不少同窗就不会去思考若是规模大了以后,如何利用分布式技术解决该问题。

如何解决这个问题?除了寻找更大规模的业务外,要时刻保持时刻跳出当前层级和环境来思考的习惯。好比,你只用了关系型数据库,那么有没有想过数据一直产生,到达TB级别的时候该如何快速检索与保存呢?

此外,技术的全貌还包括各类技术之间的关系,你用了Dubbo,那么Duboo和Netty是什么关系,为何会用到Zookeeper呢,和Spring Cloud又是什么关系?若是能在学习新技术的时候,将繁杂的技术关系理顺,会有一览众山小的感受。

在工做的2~3年时间内达到这个水平,30w的年薪就离你不远了。若是你对高并发和分布式技术感兴趣,那么下面一幅图会有帮助:

 

 

不去造轮子,

前提是得知道轮子的内部结构

若是说,第二步是增长你的知识广度,那么造轮子就是增长你的技术深度,经过造轮子,才能真正把握技术的前因后果。

不少人信奉“不去造轮子”,看似性价比很高的一句话,殊不知道这句话是有前提的,那就是“你得知道轮子的内部结构”,不然就是自我麻痹。接下来须要选择某一个或几个方面深刻研究下去,构建本身的核心竞争力。

好比,消息队列在高并发分布式系统中一个及其重要的组件,起到削峰填谷、系统解耦的做用。咱们以消费端如何快速获取数据来看思惟是如何一步步深刻的:

首先消费端要想及时获取数据,是否须要创建一个长链接?长链接的实现方式如何?

数据是经过push仍是pull方式给到消费端,各自有什么弊端?

若是消费失败,多是哪些缘由引发?若是是由于网络缘由引发,该如何解决?

这些问题都会在你本身造轮子的过程当中暴露出来,从而加深你的理解和技术深度,一个有技术深度的程序员才是有灵魂的。而大厂也是愿意为有趣的灵魂买单的,这个时候看的就不只仅是工资水平,更多的是在于晋升和发展前景的广阔性。

 

在Java语言上有所建树的开发者,都经历过以上3个层次。但惋惜的是,囿于外界环境和自身设限,大部分的Java开发者却只停留在了第一个层次中,在日复一日的体力劳动中丧失了对技术细节的深刻探讨,也丧失了晋升和薪资谈判中的筹码。

如何过渡到第2、三个层次?除了上文谈到的内容,这里我还想给你2个切身的建议:

一、扩宽本身的眼界,学着从全局看待问题,而且敢于挑战别人眼中的难题

二、持续提高你的学习能力,虽然有不少人以「在公司学不到东西」为理由离职,但你要知道:公司的目的是盈利。盈利的前提下,公司会尽力培养你,可是更多的时候能力成长仍是得靠本身。学习能力弱的人,在哪里都没用。

掌握精通如下技术知识点年薪50W不是小kiss?

 

 

项目实战

 

 

高性能架构

 

 

架构师筑基

 

 

开源框架

 

 

设计模式

 

 

团队开发

 

 

微服务架构

若是你依然以为有些茫然,不如跟有十余年Java开发经验的资深工程师聊一聊。

 

 

架构资料

 

 

架构资料

 

 

欢迎工做一到五年的Java工程师朋友们加入架构华山论剑【836442475点击进入】(大牛汇集地)一块儿交流学习探讨!

群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用本身每一分每一秒的时间来学习提高本身,不要再用"没有时间“来掩饰本身思想上的懒惰!趁年轻,使劲拼,给将来的本身一个交代!

相关文章
相关标签/搜索