您的位置 首页 java

程序员:搞Java年薪40W是什么水平?我:也就这样(滑稽)

前言

所以年薪40W在不同的城市,要求的水平就不一样,在成都、西安、武汉这些新一线城市,年薪40W,到了北上广深差不多可以拿70W。反过来在北上广深拿40W,去新一线城市,差不多拿26W左右。

柿子当然是捡软的捏,我们看看在北上广深拿40W大概需要什么样的技术水平。国内目前以 Java 技术栈为主的公司有阿里、美团、京东等等,我们从中选择一家,看看年薪40W的要求是什么,就能明白要求的技术水平。

按照网上流传的互联网公司薪酬表格,年薪40W,相当于阿里的 P6 ,资深工程师的水平。

阿里的P6的要求是什么?从阿里的社招官网我们可以很容易的查到:

职位详情 – 阿里巴巴集团招聘

抛开第5和第6条,我们仔细分析下岗位要求中的技术条目。

首先要求JAVA基础扎实,这里面包括熟练掌握 数据结构、 多线程 编程,掌握常用的设计模式; 熟悉 JVM ,包括内存模型、类加载机制以及性能优化。

数据结构是个老生常谈的东西了, 这是程序员的基本功,不限于Java程序员。只不过为什么要考察数据结构和 算法 ,很多人其实并不知道,用知乎上一位大牛的说法:

  1. 程序员这个群体也是有金字塔结构的。如果连基本的算法和数据结构都不会,基本上就比较底层,底层就意味着低薪酬。
  2. 没有扎实的算法和数据结构基础,很难及时发现问题并提出独到的见解。
  3. 技术栈日新月异,如何快速适应新技术和新环境?要求程序员必须具有以不变应万变的的计算机思维、算法思维和逻辑思维能力。

对于年薪40W来说,数据结构和算法仅仅掌握数组、链表、栈、队列,基本的排序和查找肯定是不够的,如何计算算法的复杂度,图论,动态规划等等还是需要掌握的,除此之外必要的刷题和面试前对常见大厂算法面试题的突击,无疑在面试中可以大大的加分。

多线程编程,也就是我们常说的并发编程,只会用线程池和JUC下的并发工具类,不能算基础扎实。 至少应该包括但不限于通晓CAS的原理和问题,阅读过JUC中诸如AbstractQueuedSynchronizer之类的源码,明白Java内存模型JMM和相关的并发安全问题,对synchronized和volatile的底层实现有一定的涉猎等等,才够得上对多线程编程基础扎实。

设计模式和JVM,虽然是两个完全不同的知识,但是对于年薪40W来讲,却有一定的相似性。 什么相似性?两者都是仅仅记住概念和理论是远远不够的,一定要有实际的经验。

  • 例如JVM,岗位上面的要求是 “熟悉JVM,包括内存模型、类加载机制以及性能优化” ,类加载机制和相关联的双亲委派模型的概念半天就记住
  • JVM性能优化也无非就是那几条原则, 比如尽可能减少FULLGC的次数,缩短每次GC的时长等等
  • 但是具体在生产环境中应该如何做呢?通过阅读 GC日志能发现JVM哪些可以调整的地方 ?项目中内存泄漏问题怎么排查?内存占用过高怎么解决?

再看第二条,精通spring mvc、orm框架(ibatis或 hibernate ),熟悉 前端开发 (js、html、css)。在现在前后端分离的大趋势下,对Java程序员来说,前端的知识不会要求特别高,一般来说能看懂就差不多了。 而对各种开源框架,知道或者用过里面的常用注解,能写出一个完整的SSM程序就算精通了?我想,在IT职场待过一年以上的人,都会有一个共同的答案,不是! 什么是对开源框架的精通?必然包括阅读过框架的源码,对底层的原理和机制非常熟悉,出了问题,能快速定位到具体的原因和位置; 或者接触了一个从未用过的公司内部框架后, 能够从已知的开源框架原理和机制里得到的知识迅速地推断、掌握这个陌生的框架。

第三条,“熟悉常见的 中间件 分布式 解决方案及其原理:分布式缓存、SOA、消息中间件,负载均衡、连接池等;”,虽然只有一句话,包含的信息量却很大。

  • 首先,常见的中间件包括的东西是很多的,Redis、Zookeeper、Dubbo、以Kafak或RcketMQ为代表的消息中间件、MongoDB、分库分表相关的数据库中间件、Nginx等等。
  • 其次,只知道这些中间件的用法,层次显然不够拿年薪40W。继续往高层次前进,仅以Redis为例,它的两种持久化方式,从原理的角度再结合自己的业务哪种更适合?在分布式架构下常见的可用性,伸缩性问题,在我们使用Redis的过程中怎么解决?其他的各种中间件当然都各有各的原理需要掌握。

第四条,“具有一定的项目规划和决策能力,善于捕捉业务需求、 架构设计 中存在的问题,并给出有效的解决措施和方法; ”,很明显,指明了需要架构设计经验和解决相关问题的能力,这条和前面的第三条是密切关联的,没有第三条作为基础,架构设计经验和解决相关问题的能力都是无根之水,无本之木。

  1. 比如分库分表后的唯一性ID,根据业务情况,是Redis自动生成、雪花算法还是Mysql提前序列表更适合我们?
  2. 分库分表后的分布式事务,应该选择哪种解决方案?柔性事务还是TCC?
  3. 按照业务的发展趋势用标准的分布式还是转向微服务?
  4. 海量订单数据如何存储和检索?
  5. 超卖、秒杀等高并发场景怎么设计?

上述的这些,都是在业务和架构设计中都有可能遇到的问题,能不能给出有效的解决措施和方法,这些都是年薪40W甚至更高应该达到的水平。

总的来说,掌握的技术越精通,越全面薪资越高。经过总结和细化, 下面的思维导图中的技能掌握了,年薪40W就问题不大了:

具体的提升架构进阶路线图私信我【学习】即可获取 源文件 免费领取方式!

温馨提示:若图片不清晰可以通过上面领取方式查看原图

相信这份路线图对于你系统进阶以及准备 Java 方向的面试都很有帮助!正如作者说的那样,这是一份: 涵盖大部分 Java 程序员所需要掌握的核心知识的 Java 学习+面试指南!

说明:收集内容过多,限于篇幅,本文只做部分内容的目录展示。由于机制,不能带外部链接,在线版和离线版点击下面卡片加入即可来免费获取完整版解析文档或在线链接进行学习,有需要的话我这边可以免费分享给大家,麻烦转发后私信我【学习】即可获取源文件免费领取方式!

Java程序员所需要掌握的核心知识的 Java 学习+面试指南

1. Java基础知识面试题

2. Dubbo面试题

3. Java异常面试题

4. Java虚拟机(JVM)面试题

5. Java集合容器面试题

6. Linux面试题

7. MyBatis面试题

8. MySQL数据库面试题

9. Netty面试题

10. Redis面试题

11. Spring面试题

12. Spring Boot面试题

13. Spring Cloud面试题

14. Spring MVC面试题

15. Tomcat面试题

16. ZooKeeper面试题

17. 并发编程面试题

18. 消息中间件MQ与RabbitMQ面试题

面试攻略

1. 面试前的准备

2. 面试中的技巧

文章来源:智云一二三科技

文章标题:程序员:搞Java年薪40W是什么水平?我:也就这样(滑稽)

文章地址:https://www.zhihuclub.com/172388.shtml

关于作者: 智云科技

热门文章

网站地图