我是在35+的年纪从某银行技术团队leader跳槽到BAT的程序员,目前职级大致对应阿里的P8水平,工作10多年来从未离开过开发一线。平时也会面试一些P6/P7的程序员,所以这个问题我可以给些建议。

Java程序员从初、中级过渡到高级,需要的知识体系大概是这样的(以阿里技术序列职级为例):

java中级笔试 中级java什么水平_编程语言

P5(校招)Java语言高级特性 + 关系数据库 + 面向对象/设计模式

  • Java语言高级特性简单来说就是教科书不怎么讲的东西,比如并发、算法、线程、模板使用等等;
  • 关系数据库,不是说知道个Oracle和Mysql就完了,它们的区别是什么?索引怎么建?索引算法是什么?怎么调优?从百万到亿级数据量之间要做些什么工作?
  • 面向对象/设计模式则一般通过简历上的项目来了解,关于设计模式的学习可以看我在九章算法讲的《大厂高频设计模式应用及分析》(付款时输入折扣码:EF3666,即可9元获得课程)

P6:Spring 框架 + Sharding + ORM + 高速缓存 + 并发/多线程编程 + 动态代理 + RPC框架 + 网络通。面试一般就是抓住简历中的项目,不断深挖技术,主要看你是不是真的做过和理解。

P7: 高可用架构 + JVM原理和优化 + 微服务架构和Spring Cloud,国内与国外差异比较大,国内非常重要所以是面试重点关注内容。用过Spring cloud的话,面试官会跟你深入沟通一番;如果能再懂点云计算,那么这个P7含金量就比较高了。

知道了大概的知识体系后,就可以开始规划学习路径了。这里可以根据自身条件,结合求职目标,选择网上公开的资源或者课程来学习。

单从求职角度来说,我们的目标应该是达到大厂程序员的视野和水平,在面试时能够从容地“对打”面试官,准确命中你应有级别的offer。

整个学习过程和目标我分了3个阶段:

一阶段:高质量的coding能力

这个阶段要专注于技术栈的通透理解,包括算法和数据结构的正确操作,关系数据库的高效使用,运用设计模式改善软件架构。通过项目输出的形式,为Java语言特性、面向对象/设计模式、数据库、算法与数据结构打下基础。

java中级笔试 中级java什么水平_面试_02

二阶段:独立的架构能力

完成一阶段后,基本已经达到P5~P6-的水平的。接下来需要专注体系化的架构思维,即培养独立的架构能力。

这个阶段我建议你在MVC和Spring体系下搭建一个通用的电商平台,然后在对其进行一次架构升级。这样你就基本具备了主流框架思想以改善系统架构,了解主流中间件的原理和运用,以及高可用架构的设计实施能力

java中级笔试 中级java什么水平_面试_03

三阶段:技术专家的能力底蕴

最后这个阶段,需要重点搞定高可用架构,包括微服务架构理论和实践、高可用架构设计思想、以及熟知JVM/框架/中间件底层。

java中级笔试 中级java什么水平_面试_04

到了这个层级,就不是纸上谈兵就能蒙混过关的。高可用架构做过就是做过,没做过就是没做过,面试官是看得出来的。