搞 Java 的年薪 40W 是什么水平?
文章首发于【陈树义的博客】,点击跳转到原文https://www.cnblogs.com/chanshuyi/p/how_to_earn_400_thousand_per_year.html
我 2014 年毕业,现在工作 6 年了,目前年薪已经超过了 40W。所以我来回答这个问题,应该算是比较有发言权的,能代表了一部分人的情况。能达到年薪 40W,按我了解到的,有两种可能性:一种是应届毕业生拿到大厂(BAT)的 SP Offer,另一种则是工作年限较长(三年以上)。
第一种情况,拿到 SP Offer 的人,毕竟是少数,不然怎么能叫 SP Offer 呢。而要拿到 SP Offer 的前提肯定是你非常非常优秀,而且可能毕业学校要不错。我一个中山大学硕士研究生毕业的同学,前几年毕业拿了华为的 SP Offer 也就 18K 的月薪,算上有 5 个月年终 ,那年薪也就 30W 左右吧。所以应届毕业生要拿到 40W 年薪还是蛮难的,而且也需要有不错的运气。
第二种情况,就是像楼主这样的,工作年限较长,一路升级打怪慢慢涨到 40 万年薪。下面聊聊要达到 40W 应该有什么样的水平。
我之前写过一篇文章:聊聊阿里面试的三个层次。在这篇文章里,我将阿里对面试者的能力分为了三个层次:基础知识、项目经验、项目深度。
基础知识
能拿到年薪 40W 的人了,Java 基础知识肯定是需要了熟于心的了。
对于 Java 开发岗位上来说,这些知识点包括但不限于:
集合 HashMap 的原理,与 Hashtable、ConcurrentHashMap 的区别?
Java 线程池的核心属性以及处理流程
Java 并发包原理、Synchronized 关键字、锁
线程的生命周期
JVM 类加载机制
JVM 内存模型
JVM 分代以及垃圾回收机制
Spring Bean 容器生命周期
Spring AOP 原理
Dubbo 请求流程以及原理
数据库 SQL 优化、数据库索引、索引原理
……
看到这么多的知识点,我一下子就懵逼了,这么多得看到什么时候才看得完啊?但后面我想明白了,其实你不需要全部都懂,但需要了解大部分知识点,并且在这大部分知识点中,还需要有部分是了解得非常深入的。如果达到这个水平,基本上都能通过考核。
关于这块知识,其实我们需要将其体系化,形成自己的知识体系。我在去年工作五周年的时候,写了一篇文章,梳理了一下目前我的知识体系:聊聊我的知识体系。这篇文章基本上就概括了年薪 40W 的我掌握了哪些知识点,可能无法做到非常深入,但是绝大多数都使用过并且有一定了解。这块的基础知识,至少需要掌握的是:集合源码
并发集合源码
并发包源码
阻塞队列源码
线程池源码
JVM 原理
基本上这几块东西,我面试的时候必问。如果回答不出来,不要说年薪 40W了,连 30W 都没机会。关于这几块知识点,我梳理了一些系列文章,感兴趣的同学可以翻翻看。
- 集合源码系列文章:01.集合系列 - 随笔分类 - 陈树义 - 博客园
- JVM 基础系列文章:05.JVM基础系列 - 随笔分类 - 陈树义 - 博客园
- JVM 规范系列文章:06.JVM规范系列 - 随笔分类 - 陈树义 - 博客园
文章首发于【陈树义的博客】,点击跳转到原文https://www.cnblogs.com/chanshuyi/p/how_to_earn_400_thousand_per_year.html
项目经验
如果你知识掌握了上面的基础知识,但是没有不错耐看的项目经验,大概率还是拿不到 40W 年薪的。这里说的不错耐看的项目经验,指的是复杂度较高、有一定并发量的系统开发、设计经验。
复杂度较高,可以简单粗暴地理解为项目中使用到了消息队列、缓存、微服务,这几个是最基础的。稍微复杂些的,可以用到了 netty,用到了 ElasticSearch,用到了 Canal、Otter 等。越复杂越能从某一程度上说明你的技术实力。
除了用到这些复杂些的框架,你还要知道为什么要用这些框架,解决了什么问题,他们的应用在哪些场景,优缺点是什么。如果你只是在项目里打酱油,框架都没用过,也不知道为啥要用,那这个项目对你来说没有任何意义。例如我做过一个「会员信息搜索重构项目」,其中用到了 ElasticSearch + Canal 去实现千万级的实时搜索。

另一个项目是 IM 即时通讯的开发和改造,其中用到了 RocketMQ + Netty 去实现。

如果你有过类似这样的项目经验,并且能把项目中涉及到的框架、技术都了解清楚,那么可以认为你在项目经验这块已经没问题了。
项目深度
如果你有了上面的项目经验之后,基本上你对整个项目都会有一个全面的认识,应用层面上的问题基本上不会难倒你了。但在「项目思考深度」的考核上,就不仅仅只是考核应用层面上的问题了。
还是用我做过的一个搜索项目作为例子,其中 Canal 这个开源框架暂时是没有实现集群这个功能的,那么面试官就问了:
- 你如何去改造这个项目,从而实现 Canal 的集群功能?
这个时候,你会发现你懵逼了,因为你从来没有去思考过这个问题。你所有的工作内容都是在想如何使用开源框架,而没有进一步思考这些开源框架好不好,有什么可以改进的地方。
所以,在这一个层次上考核的是你对开源框架的思考深度,这些框架到底好不好,好在哪里,不好在哪里,有什么可以改进的地方。
对于「项目思考深度」的考核同样发生在技术面试的三四轮。在这个层次上,你不仅要对项目本身理解足够深刻,还要跳出项目本身,去思考开源框架本身的问题。
总结
在我的理解力,年薪 40W 的人应该能够独立完成一个复杂系统的设计,并且作为核心开发带团队去完成系统的落地、交付。在我所在的公司里,我们有高级工程师(P5)和资深工程师(P6)之分,他们之间一个很重要的区别就是:是否能否独立完成一个复杂的项目。
如果你能够独立完成一个复杂的项目,那么你才有资格升级为 P6,而我们公司 P6 的薪资才能达到 40 万的年薪。如果只是 P5,那么大概只有25-30万。但是要成为 P6,不仅仅要能独立完成一个复杂的项目,还要求你在沟通能力、表达能力、项目管理达到一定水平。
文章首发于【陈树义的博客】,点击跳转到原文https://www.cnblogs.com/chanshuyi/p/how_to_earn_400_thousand_per_year.html
原文发表于知乎回答:搞 Java 的年薪 40W 是什么水平? - 陈树义的回答 - 知乎
搞 Java 的年薪 40W 是什么水平?的更多相关文章
- 搞Java的年薪 40W 是什么水平?
既然楼主提到年薪40w,那我们看看什么公司,什么级别可以给到,再看看要求.阿里是Java大厂,所以可以参考阿里的标准. 阿里一般是16薪水,所以就是税前2.5w,在阿里应该是P6就可以达到,而对P6的 ...
- 同样是搞Java,年薪15W和50W到底差在哪里?
同样是搞Java,年薪15W和50W到底差在哪里? 一.总结 一句话总结: 学习 挑战 1.扩宽自己的眼界,学着从全局看待问题,并且勇于挑战别人眼中的难题 2.持续提升你的学习能力,虽然有很多人以「在 ...
- 阿里巴巴Java开发程序猿年薪40W是什么水平?
对于年薪40万的程序员,不只是技术过硬,还有一个原因是他们所在的公司福利高,或者会直接持股.在BAT中就是一个很好的案例,例如阿里巴巴P7,P8级别的员工不仅是年薪30到80万不等,还有更多股票持有. ...
- 二本毕业,我是如何逆袭成为BAT年薪40W的Java工程师的?
身边的师弟师妹经常问到:非计算机专业出身,你是在2年内如何逆袭成BAT年薪40W的资深开发工程师的.其实很简单——努力! 我16年毕业于普通的二本学校,非计算机专业出身,只因为对软件开发感兴趣,所以找 ...
- 去了字节跳动,才知道年薪40W的测试有这么多?
最近脉脉职言区有一条讨论火了: 哪家互联网公司薪资最'厉害'? 下面的评论多为字节跳动,还炸出了很多年薪40W的测试工程师 我只想问一句,现在的测试都这么有钱了吗? 前几天还有朋友说,从腾讯跳槽去 ...
- 搞JAVA在北京月薪15K的朋友来到厦门却很难找到工作
朋友是搞JAVA开发的,从北京来.来前朋友们都感觉他在厦门应该很快就能找到工作,因为厦门的IT人员很缺. 没想到来厦门大概半个多月了,到现在都还没着落.面试单位每周基本只有两家,而且面试的感觉都说不错 ...
- 突破这个四个阶段年薪没有50W,还好意思说是搞Java的?
该视频教程总共分为四个阶段来学习.逐步进阶,并且还会不定期更新.我简介一下每一个阶段的视频资源,学习顺序不分先后. 第一阶段 第一阶段主要从 svn/git 版本号控制.Java高并发.JVM虚拟机. ...
- 搞Java
上班之余,开始研究Java了. 想想从三月份开始自己啃书以来,Spring+Mybatis+公司框架的用法,基本都是速成来的,还是有些恐惧的. Spring万般爽,annotion用的很舒服,但还是想 ...
- 搞java的都土鳖
spring不就几个破框架让人们下载使用吗,但是官网什么都有,就是没有下载链接.java程序员被那些垃圾框架强奸的体无完肤,还乐在其中,还什么SSH,哇哦!java好像跟企业干上了,什么企业bean, ...
随机推荐
- Python的序列数据和变量
本篇内容涉及字符串.列表.元组.Python中的报错,以及变量本质,包括引用计数技术 该篇只为抛砖引玉,其内容来自Python学习中总结,另外感谢李老师的教导和Python班同学们的帮助 附上李老师和 ...
- magento 2 cronjob setup
crontab -u magento_user -e */5 * * * * php /var/www/html/bin/magento cron:run >> /var/www/html ...
- 一篇文章快速搞懂Qt文件读写操作
导读:Qt当中使用QFile类对文件进行读写操作,对文本文件也可以与QTextStream一起使用,这样读写操作会更加简便.QFileInfo可以用来获取文件的信息.QDir可以用于对文件夹进行操作. ...
- pandas - 异常值处理
异常值概念:是指那些远离正常值的观测,即“不合群”观测.异常值的出现一般是人为的记录错误或者是设备的故障等,异常值的出现会对模型的创建和预测产生 严重的后果.当然异常值也不一定是坏事,有些情况下,通过 ...
- Jmeter+Ant+jenkins实现api自动化测试的持续集成
0基础上手教程 @jmeter的使用 jmeter是一个基于java语言编写的开源测试工具,广泛应用于接口测试,性能测试,自动化测试. 接口自动化的编写教程,将于后续分享. 问题一:为什么用ant,而 ...
- 速记OSI七层协议模型
OSI七层协议模型 第一层:物理层(Physical) 第二层:数据链路层(Data-Link) 第三层:网络层(NetWork) 第四层:传输层(Transport) 第五层:会话层(Session ...
- Windows 远程桌面鼠标光标不可见
一.问题描述 通过在云端的主机上部署 frp 服务,实现「使用Windows 远程桌面(RDP)从互联网侧访问内网的主机」.但是,使用 Windows 自带的远程桌面工具 RDP 连接到另一台计算机时 ...
- 正则表达式断言精讲 Java语法实现
目录 断言 1.2.3.1 情景导入 什么是断言 断言的语法规则 零宽断言为什么叫零宽断言 零宽 前行 负向 断言DEMO 断言的基础应用和实际用处 验证不包含 验证开头包含 验证开头包含且匹配到的数 ...
- 深度优先搜索(DFS)解题总结
定义 深度优先搜索算法(Depth-First-Search),是搜索算法的一种.它沿着树的深度遍历树的节点,尽可能深的搜索树的分支. 例如下图,其深度优先遍历顺序为 1->2->4-&g ...
- 【Android】Android开发实现带有反弹效果,仿IOS反弹scrollview详解教程
作者:程序员小冰,GitHub主页:https://github.com/QQ986945193 新浪微博:http://weibo.com/mcxiaobing 首先给大家看一下我们今天这个最终实现 ...