有人说这只能是大企业或者互联网企业工程师才能拿到。是的,小公司或者非互联网企业三万的不太可能是码农了。还有区域问题,这个不在我的考虑范围内,因为除了北上广深杭,其他地方也很难达。
还有人提到其实工资是跟面试表现有关的,也跟其他综合水平有关,比如你是985,TOP10,或者研究生学历,也或者懂点节点,懂点大数据等等,或者表达能力强,击中面试官痛点都会加分。有其他优秀的表现还会在这个基础上加分。但纯java方面待遇是比较吻合的。还有SSH真的不是我要黑,3W水平的面试几乎很少问SSH的知识,要问也是问架构层次的还有设计模式的。例如MyBatis的是如何管理会议和高速缓存的.spring里面有哪些你熟悉的设计模式,你怎么理解和应用的。
高薪在BAT实在太普遍了,一般是高级工程师和资深工程师的职位。在阿里是P6〜P7左右,在百度是T5左右,腾讯是T2-3左右,京东是T3-1,美团是P6左右,其他的我不了解。这种级别是他们主要码农层级,加班多,能解决大部分问题,但对系统的整体架构能力和深入分析瓶颈的能力还需要培养。
以阿里巴巴招聘标准举例
image
分析
1.Java基础扎实,理解IO,多线程,集合等基础框架可以理解为熟悉J2SE,J2EE;对JVM原理有一定的了解,可以理解为对什么是JVM,JVM内存模型以及JVM运行时数据区熟练掌握,为什么JVM要划分为新生代,老年代,永久代等。
2.对你用过的开源框架,能了解它的原理和机制;对Spring,ibatis的开源框架熟悉可以理解为用过主流的SSM,网状等框架,并且一定程度上看过它们的源码,不能一直停留在写业务代码上,不然永远突破不了你的技术瓶颈。
掌握多线程以及高性能的设计与编码,这块需要对并发编程有所认识,比如从JMM角度看并发,知道同步状语从句:volitile关键字的原理等。
性能调优可以理解为对JVM,Tomcat,Mysql的优化;
具有高并发应用开发经验,实际上是对分布式这块的概括,比如你使用过zookeeper,dubbo,Redis缓存,nginx负载均衡等。
最好再能有微服务经验,比如Spring Boot,Spring Cloud等。
4 . 对技术有浓厚兴趣......这块是对软实力的一个要求,说明你积极向上,能吃苦耐劳,敢于拼搏。这种软技能,实际上还有一方面要考察你的探索学习能力,比如你有没有研究过netty源码的底层实现,有没有经常写一些自己的博客,有没有在github上经常活动,更好地是做一些contribution。
有做过大型项目的技术PLA / PM者优先。这句话是对你能力以及经验有一个加分项的考量。
总结概括你需要拥有全面的互联网技术相关知识:
从底层说起,你起码得深入了解的MySQL和Redis的的,的MongoDB的响应,Nginx等的Tomcat的,RPC,JMS等方面的知识。
当我们聊技术实力的时候,我们到底在聊什么?需要了解到什么程度?
首先对于MySQL的,你要知道常见的参数设置,存储引擎怎么去选择,还需要了解常见的索引引擎,知道怎么去选择。知道怎么去设计表,怎么优化SQL,怎么根据执行计划去调优。高级的你需要去做分库分表的设计和优化,一般互联网企业的数据库都是读写分离,还会垂直与水平拆分,所以这个也有经验的成分在里面。然后redis的,mongodb的都是需要了解原理,需要会调整参数的,而nginx的和tomcat的几乎都是JAVA互联网方面必配,其实跟阿里的技术栈选择有点关系。至于RPC相关的就多的去,必须各种网络协议,序列化技术,SOA等等,你要有一个深入的理解。现在应用比较广的RPC框架,在国内就是Dubbo了。一般情况下不是专门开发中间件系统和支撑系统的不需要了解太多细节,国内企业常用的主要是ActiveMQ的和kafka。总结一个非常全面的互联网Java架构技术学习路线总纲:
image
image
image
image
作者:
链接:https://www.imooc.com/article/36288
来源:慕课网