有这么一位Java大牛
他是前 Oracle 首席工程师,负责过北京Java核心类库、国际化、分发服务等技术团队的组建。大家都知道,Java 就是 Oracle 公司的,他对Java的理解会与众不同。他把Java程序员的成长路线划分为新手、高级新手、胜任者、精通者和专家,让大家少走弯路。
创一个小群,供大家学习交流聊天
如果有对学JAVA方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学习一起进步呀。
也希望大家对学JAVA能够持之以恒
JAVA爱好群,
如果你想要学好JAVA最好加入一个组织,这样大家学习的话就比较方便,还能够共同交流和分享资料,给你推荐一个学习的组织:快乐学习JAVA组织 可以点击组织二字,可以直达
一、新手
如果你是新手阶段,全面、扎实地掌握语言的基本要素是当务之急。在这个阶段是有无限可能的,因此并不建议完全用专栏作为Java语言入门的课程,而是更应该找到更基础的、系统的Java书籍或者课程。
你可以从专栏的基础模块,看到Java领域长期的热点话题(十年前面试就会问,一直问到今天),比如:
1. | Exception和Error有什么区别?
2. | 谈谈final、finally、finalize有什么不同?
3. | 强引用、软引用、弱引用、幻象引用有什么区别?
二、高级新手
工作了几年,整天忙于业务代码,很容易困惑下一步的方向在哪里,相当多的程序员长期停留在高级新手的阶段。一个常见的表现就是发展成为了“面向搜索引擎”编程工程师,擅长快速利用开源项目或者以往成果,完成一些“OK”的工程任务。这本无可厚非,职业路线很多,未必每个人都想成为底层专家。
第4讲 | 动态代理是基于什么原理?
第5讲 | 对比Hashtable、HashMap、TreeMap有什么不同?
第6讲 | Java提供了哪些IO方式?NIO如何实现多路复用?
第7讲 | 什么情况下Java会产生死锁?如何定位、修复?
第8讲 | Java常见的垃圾收集器有哪些?
我建议你即使未来你不在一线编码,或者未来不再使用Java,同样的思维习惯和积累也是很有帮助的。
三、胜任者
那如何才能算是摆脱了高级新手的阶段呢?或者换句话说,如何成长为团队的核心成员?这取决于你能背多大的锅、填多大的坑,比如你已经可以:
独立负责做GC调优,即使没有历史经验,也能给出有说服力的方案。
在JVM领域有充足的技术经验和知识储备。
全面评估评估后台变慢等问题的复杂度、风险点、解决的可能性。
对于所谓本质的思考和理解,能听懂深入的抽象观点。
并且,除了Java/JVM,还要掌握更完整的技能树,例如分布式系统设计、数据库隔离级别选型等。另外,我也推荐你看看专栏里这些内容:
第9讲 | 谈谈常用的分布式ID的设计方案?Snowflake是否受冬令时切换影响?
第10讲 | 谈谈MySQL支持的事务隔离级别,悲观锁和乐观锁的原理和应用场景?
四、精通者和专家
如果你已经精通Java语言或者是特定领域的专家了,那这个专栏对你的帮助可能体现在不同角度,可以当作特定领域的、不同视角吧。例如,在这个阶段,精通者或专家能够:
提炼并发工具类的一般性指导方法。
告诉团队如何写出安全的Java代码,防范看似安全下隐藏的风险。
借鉴Java/JVM中的一些技术,从基础能力上提高自身平台的能力。例如,PHP 7中引入的JIT,带来了极大的性能提升,第35讲中对JIT的介绍,就有了新的用武之地。
如何通过Container-Aware技术,提高Kubernetes集群中JVM负载的可靠性。
创造某一类问题的解决方法。例如,似乎Java工程师动不动就是Happen-Before,除了耍酷,能不能从更高的高度看待:JMM是如何实现了编译器工程师、JVM工程师、Java开发者甚至不同厂商之间的一致性规范?如何创造性地避免了早期C++内存模型在不同厂商之间的混乱?