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

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

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

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

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

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

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

但现实却是,很多同学在技术生涯最初几年都会沉浸在业务开发中,忽视了对系统知识的梳理和技术视野的扩展。日复一日,导致很多同学就以为这就是技术的全部,同时在重复的体力劳动中也丧失了对技术细节的深入探讨。

每个程序员都追求“成就感”,而获得成就感最好的方式就是自己在技术上的突破。

技术的突破需要依赖业务场景的需求和自身刻意的规划学习,二者缺一不可,但前者是机会,往往不是自己能完全把控的,如果在自己工作中没有实践场景,最好的办法就是系统的学习与梳理,为自己制定一个不同时间段的发展道路,待机会来临时就能一展身手。

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

Part.1

对代码精益求精

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

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

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

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

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

代码出bug的概率有多大,能否降低?

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

此外,还可以看些常用的开源框架,如果你用的是Spring框架等,那么下面一个很好的知识结构:

(扫描文末二维码,即可获取完整脑图)

Part.2

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

在将基础打牢之后,需要主动突破舒适区,不断的去扩大自己的技术视野,做到有广度。

这一步比较难,因为很多同学会被公司的技术和业务牵着走,比如公司当前的业务规模决定了技术上不需要分布式技术,那么很多同学就不会去思考如果规模大了之后,如何利用分布式技术解决该问题。

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

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

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

(扫描文末二维码,即可获取完整脑图)

Part.3

不去造轮子,

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

如果说,第二步是增加你的知识广度,那么造轮子就是增加你的技术深度,通过造轮子,才能真正把握技术的来龙去脉。

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

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

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

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

如果消费失败,可能是哪些原因引起?如果是因为网络原因引起,该如何解决?

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

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

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

1、扩宽自己的眼界,学着从全局看待问题,并且勇于挑战别人眼中的难题


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

如果你依然觉得有些茫然,不如跟有多年Java开发经验的资深工程师聊一聊。

11月22日-28日,网易云课堂将会开展为期一周的Java进阶免费系列直播课。由多位拥有10+年Java开发经验的讲师向你传道高并发、分布式、大数据、高可用系统的架构设计,每天2小时,密集输入Java开发相关知识及经验,帮你快速实现技术和职业成长上的突破。

福利1  免费直播课程

网易云课堂Java进阶免费系列直播课

适听人群:Java初、中级开发工程师

11.22-11.28  连续7天每晚8点准时直播

11月22日:高并发流量削峰 - 系统性能瞬间提升50倍以上

11月23日:揭开JAVA热加载神秘面纱 - Tomcat在用的热加载方案

11月24日:轻松搞定数据库读写分离

11月25日:5年JAVA开发,被这道Redis面试题筛下来,Redis底层探秘之旅!

11月26日:不懂源码必看之作:手写spring mvc

11月27日:除了Redis,你还会用什么做缓存?高并发缓存架构之服务器代理缓存

11月28日:分布式系统session共享机制全方位剖析

报名方式:

扫描下方二维码添加助教小姐姐微信,

通过审核后即可免费报名

福利2  Java开发资料包

该资料包中主要包括「大数据容器数据库架构技术文档」、「大型公司技术文摘」、「Java开发参考书籍」、「Java开发学习图谱」等内容,全方位扩充你的知识体系。


想要参与Java进阶免费系列直播课

以及获取Java开发工程师资料包的同学,

可以长按扫描下方二维码,

添加网易云课堂Java课程助教小姐姐

网易云课堂Java进阶免费系列直播课报名通道

免费课程,名额有限,先到先得~~

同样是搞Java,年薪15W和50W的到底差在哪里?相关推荐

  1. 同样是搞IT,年薪 15W 和 50W 到底差在哪里?

    程序员都很诚恳,薪水没达到预期,会反思是不是自己的技术水平不够.但事实上,技术能力并不是决定薪酬的唯一因素,供需关系对薪酬的影响非常大.很多时候,两个能力差不多的程序员却在薪水上有较大的差异.并不鼓励 ...

  2. 我:搞Java年薪40W是什么水平? 阿里架构师:也就这样!

    前言 按照一贯的尿性,脱离了剂量谈毒性都是耍流氓,年薪这种事,脱离了地域城市谈多少钱也是耍流氓.我有个同事,最近去了腾讯,职级为8级,从他那里获得的信息是,在深圳,8级可以拿到将近50W,而在非北上广 ...

  3. 程序员:搞Java年薪40W是什么水平?我:也就洒洒水了(滑稽)

    前言 按照一贯的尿性,脱离了剂量谈毒性都是耍流氓,年薪这种事,脱离了地域城市谈多少钱也是耍流氓.我有个同事,最近去了腾讯,职级为8级,从他那里获得的信息是,在深圳,8级可以拿到将近50W,而在非北上广 ...

  4. 韩国JAVA版DNF_DNF国服和韩服到底差了几个版本?

    DNF国服和韩服到底差了几个版本?所以说我们到底差了韩服几个版本.他们各种新魔枪, 新职业筒枪士, 90武器制作 85-90ss改版, 卢克防具改版 职业改版 魔兽新图.我没还在这刷有的没的活动. 国 ...

  5. 搞 Java 的年薪 50w 什么水平?

    年薪 50w 真的难吗? 在我看来,程序员达到年薪 50w 的薪资水平,并不难. 而且这个群体的数量还挺庞大的. 看看现在的大厂招聘 JD 就知道了,月薪 3w+,年薪 50w+ 的不在少数. 可为什 ...

  6. java开发,年薪15W的你和年薪50W的他的差距

    一 在这个IT系统动辄就是上亿流量的时代,Java作为大数据时代应用最广泛的语言,诞生了一批又一批的新技术,包括HBase.Hadoop.MQ.Netty.SpringCloud等等 . 一些独角兽公 ...

  7. java中的NIO和IO到底是什么区别?20个问题告诉你答案

    摘要:NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多. 本文分享自华为云社区<jav ...

  8. 学Java需要数学好吗?数学基础差就不能学Java吗?

    学Java需要数学好吗?数学基础差就不能学Java吗? 其实想学Java的同学不必纠结于此,数学基础好固然能帮大家更快学好Java:但是数学基础差也不会太影响Java的学习,因此可以说学Java并没有 ...

  9. 为什么总是有人在说现在Java要求越来越高?原因到底是什么?

    老是听到xxx要求越来越高的声音,其实回顾多年的职业生涯,作为经常当面试官的我,出来说句公道话,其实大厂技术招聘层面的要求一只就在那里,对核心技能的要求并没有太大的改变. 可能你要反驳分布式.高并发. ...

最新文章

  1. java递归url目录_Java递归实现某个目录下所有文件和目录
  2. 云时代的安全解读:云安全≠云计算安全
  3. 撒花!吴恩达《Machine Learning Yearning》英文版完结!
  4. VS C++生成dll和静态调用dll的方法
  5. Blazor 应用如何使用 Azure Active Directory 认证登录
  6. vue 文件及描述信息一起上传_vue+element 实现选取文件,提交上传全部表单信息(同步)...
  7. pytorch 数据类型
  8. python如何爬虫股票数据_自学python之爬虫3股票数据爬虫
  9. WPF在一个窗口中实现多个视图
  10. Java七大设计模式原则(附相关电子图书下载)
  11. 会议OA之我的审批(查询签字)
  12. 阿里开源自研语音识别模型DFSMN
  13. SVN服务器搭建和使用
  14. Arcgis专题制图流程
  15. [Unity]DrawLine与DrawRay的区别
  16. SpringBoot快速上手
  17. Redis总结_实战篇
  18. 驾考一点通维语版_维语版驾考宝典
  19. ROS基础(四)——话题消息的定义与使用
  20. ABP zero 4.2 发布

热门文章

  1. Educational Codeforces Round 78 (Rated for Div. 2)B~C[前缀和]
  2. mysql添加自团_Mysql入门基础 数据库创建篇
  3. 模板 - 上下界网络流
  4. tidb mysql hbase_HBase/TiDB都在用的数据结构:LSM Tree,不得了解一下?
  5. php 小炒花生,炒花生的做法_炒花生怎么做_炒花生的家常做法
  6. java 读取txt字符串_java读取txt文档需要匹配文档中的字符串
  7. win下ubuntu安装mysql_MySQL在Win10与Ubuntu下的安装与配置
  8. Spring Boot日志学习记录【2】
  9. 自学大数据需要从哪里入手 收藏了一份详细的学习路线图
  10. 【翻译】A Next-Generation Smart Contract and Decentralized Application Platform