本文章转自:乐字节
文章主要讲解:百万年薪JAVA架构师需要掌握的基本技能
获取更多Java相关资料及项目可以关注公众号《乐字节》 发送:999
年薪100万左右的Java技术专家是个什么概念,最直观的说明就是阿里p9级别Java专家!
通常阿里P9高级技术专家,是一线Team leader或者二级域架构师,需要对一个领域的业务非常熟悉并且能够将影响力辐射到其他合作团队。
一般来说一些业务架构、应用架构、产品功能决策、技术选型、协作分工等问题应该在P9层次终结,P9是一线作战的小队长,向下提供决策,向上提供有效的信息。
P9的薪资能达到什么水平呢?
阿里是Java大厂,所以可以参考阿里的标准,而对P9的要求是什么呢,以下可以作为参考。
技能要求解读
编程能力
对工程师而言,编程是最基础的能力,必备技能。其本质是一个翻译能力,将业务需求翻译成机器能懂的语言。
Java语言本身,包括语言的各个方面包括对并发的理解,对内存使用对理解,对Java运维的理解等等,语言本身外,社区里常用的框架是否可以十分清晰的了解,包括spring,包括他实现的ioc,aop,orm,web机制是否有清楚的认识,有丰富的经验等等。
常见的编程范围:
数据结构算法,比如:经典排序:插入排序、冒泡排序、快排(分划交换排序)、直接选择排序、堆排序、合并排序等。
高级语言特性:JVM、类装载机制、多线程并发
设计模式:常见的单例、工厂等。
UML建模:详细设计必备。
网络与安全:网络协议、安全等。
开源系列:spring、maven、redis、memcached、activeMQ等。
调试能力
本质上讲,通过不断调试可以持续强化其通过静态代码去预测运行状态的能力。
所以调试能力也是编程能力提升的关键手段。
编译部署能力
编译并在线上部署运行程序是系统上线的最后一个环节。
随着微服务架构的普及以及业务复杂度的增加,本地编译和运行并不能完全模拟系统在线运行。
为了快速验证所编写程序的正确性,编译并在线上部署就成了必要环节。所以编译部署能力是一个必备技能。
性能优化能力
随着使用量的增加和业务复杂度的增加,大部分系统最终都会碰到性能问题,性能优化能力是一个综合能力。
因为影响系统性能的因素众多,包括:数据结构、操作系统、虚拟机、CPU、存储、网络等。
性能调优集中在:JVM调优,线程池调优、SQL调优、索引优化、数据库垂直拆分等。
在线运维能力
如果说性能优化能力体现的是静态思考能力,在线运维能力考验的就是动态反应能力。
残酷的现实是,无论程序多么完美,Bug永远存在。
为了对线上故障进行快速处理,标准化的监控、上报、升级,以及基本应对机制当然很重要,通过所观察到的现象,快速定位、缓解以及解决相关症状也相当关键。
在线运维本质上是一个强化学习的过程。
很多能力都可以通过看书、查资料来完成,但在线运维能力往往需要大量的实践来提升。
对常用中间件的理解
毕竟在一个大系统中,各种中间件是是否常见的,缓存中间件,消息中间件,例如 redis、memcache、rmq这些,要理解常用中间件使用场景,使用姿势(例如redis的常用命令),甚至包括他的一些运维,一旦出了问题,除了专门的运维人员,也需要你参与问题的排查,因为有时候这些中间件出现问题,是不当的使用姿势引起的。
架构、业务落地能力
里面涵盖了几乎90%左右的架构设计:并发编程、缓存、消息队列、大数据等。
前面提到了语言本身,各种中间件,如果你有很好的业务抽象能力和架构思维,就可以把一款部门内部产品很好的设计并实施了,这点蛮难的,想必都有过接手现有项目的经历吧,有时候真恨不得把之前的设计者拿出来批斗,作为一个设计者,你能否做到当下一个接手它的人会说一句,这个系统设计的真好,稳定又可拓展,理解起来也很容易。
沟通协作
毕竟一个部门内部产品,是不可能由一个人完成的,所以需要沟通协作,把设计好的方案,要和2-3个小伙伴一起实施,包括同样身份的后端人员,前端人员,产品等角色,这个级别的人可能会参与带2-3个人,例如应届毕业等,所以你自己对知识的把握,分享精神,leadership都是很好的加分项。
成为BAT的程序员是每个技术人的梦想,这样的薪资是不是也让你非常心动呢?但是很多零基础的人,会觉得实现很难,当真正开始学习的时候难免不知道从哪入手,学习时频繁踩坑,导致效率低下影响继续学习的信心,最终浪费大量时间。
Java软件工程师一般月薪范围在8K-14k之间,远远超过了应届毕业生月薪4500元的平均水平。通常来说, 稍微用点心,出去工作一年。有一年工作经验的Java高级软件工程师的薪酬大致在年薪10—17万左右。
如果你想要拿到高薪,最可靠的方式就是靠自己的努力,梦想如果只想就会成为梦。
感谢大家的认同与支持,小编会持续转发《乐字节》优质文章
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。