搞 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, ...
随机推荐
- J20航模遥控器开源项目系列教程(二)使用说明 | 遥控器制作完成了,怎么用?
我们的开源宗旨:自由 协调 开放 合作 共享 拥抱开源,丰富国内开源生态,开展多人运动,欢迎加入我们哈~ 和一群志同道合的人,做自己所热爱的事! 项目开源地址:https://github.com/C ...
- 【接口自动化】Python+Requests接口自动化测试框架搭建【一】
公司项目启用新框架,前后端分离,所以接口测试成为测试工作中不可缺失的一个环节,现在将从0开始搭建接口自动化测试框架的路程,一步步记录下来. 开发语言我们采用Python+第三方库Requests,测试 ...
- springSecurity初识-练气初期
1.写在前面 Spring Security是一个框架,提供针对常见攻击的身份验证,授权和保护.通过对命令式和反应式应用程序的一流支持,它是保护基于Spring的应用程序的事实标准. Spring S ...
- CocosCreator游戏开发(四)实现摇杆控制角色功能
时隔3年,我又开始继续写这个系列的帖子了,也不知道是会写完全系列,还是再次夭折. 废话不多.直接开始主题了 主要实现的功能点包含这些内容:通过摇杆控制角色进行八方位移动,并按照各方位播放对应移动动画 ...
- 牛客网PAT练兵场-德才论
题解:用sort排序即可 题目地址:https://www.nowcoder.com/questionTerminal/97b6a49a85944650b2e3d0660b91c324 /** * C ...
- Java面试题(Java Web篇)
Java Web 64.jsp 和 servlet 有什么区别? jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将 ...
- Laravel 避免 Trying to get property of non-object 错误的六种方法 [新增第六种 data_get]
在使用链式操作的时候,例如: return $user->avatar->url;如果 $user->avatar 为 null,就会引起 (E_ERROR) Trying to g ...
- 数字电路基础(二)TTL与非门输入端悬空和接大电阻的问题
引言 我们在做那些判断与非门输入输出的时候,常常把输入端悬空和接大电阻作为高电平输入处理,比如下边这一例题: 很显然,我们无法直接从与非门逻辑图中看出其内部工作原理,那我们该如何分析呢?那肯定是去分析 ...
- Maxscript中渲染中文版Vray完成贴图(VrayCompleteMap)的方法
Objbakeproperties = $.INodeBakeProperties; --选定对象的烘培节点 Prjbakeproperties = $.INodeBakeProjProperties ...
- 用android studio多渠道打包
1. 官方教程 https://developer.android.com/studio/build/build-variants.html 2. 设置Build Types参数 打开 Project ...