作为一个Java程序员,因为技术繁杂,即使你很努力,如果方向错了,最终也可能收获甚微,长期处于【低水平勤奋】状态,这是很可怕的事情。
目前的我,应该就属于【低水平勤奋】状态,幸好我看到了韩顺平老师的一个视频,清晰透彻的讲解了Java程序员每个阶段应该了解什么样的技术,应该掌握到什么程序。
程序员最重要的素质:学习能力,沟通能力,语言能力,团队协作能力。
一、Java初级工程师,一般1-3年工作经验
掌握Java基础、SSM、SpringBoot、servlet、restful、webservice、h5、css、JavaScript、jQuery、angular、vue
常用的数据库:Oracle、MySQL、SqlServer、postgres
常用的服务器技术:Tomcat、Apache、nginx
Git、maven、redis、dubbo、zookeeper
多线程、设计模式、IO、nio
网络方面:TCP、UDP、netty
二、Java中级工程师,一般3-5年工作经验
精通springcloud、dubbo、Linux
熟悉中间件技术、分布式技术、rpc技术、缓存、消息系统。
懂互联网业务,要求有大规模高并发访问web应用的经验。
熟悉一些虚拟化技术:docker,vmware,openstack。
网络编程
深入理解数据结构和算法。
精通设计模式(至少常用的七八种设计模式必须达到精通的水平),能将设计模式用到项目中,让项目的代码更加规范。
三、Java高级工程师,一般3-5年工作经验
得会开发,设计还得有领导能力,必须能带领一个团队,分析产品技术设计,负责新功能的技术开发,参与平台的需求分析,业务规划,帮助团队成员解决技术问题。决定技术方向和业务选型。
有些公司还会要求你了解大数据的一些技术;hadoop impala spark flink主流的大数据框架。
精通jvm内存管理,要会jvm调优,性能调优,熟悉分布式常用技术,RPC框架。
使程序健壮、规范性、运行效率、算法、设计模式上的优化、安全性的考虑、网格化技术的应用。
四、架构师,一般5-10年工作经验
参与微服务架构的设计和落地。要发觉和解决复杂问题,关键技术的公关和改进现有的架构。
就是着重于优化和架构设计的工作。要精通多线程,要有高并发,大数据处理的经验。可能会要求主导过大型高可用,高并发,分布式,自动化的项目经验。熟悉自动化部署技术比如k8s。
往期精彩内容: