搞 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, ...
随机推荐
- three.js 制作逻辑转体游戏(下)
上一篇已经对绕非定轴转动有所了解,这篇郭先生继续说一说逻辑转体游戏的制作,这部分我们同样会遇到一些小问题,首先是根据数据渲染陷阱和目标区域,然后是对可以转动的判定,最后是获胜的判定. 1. 根据数据渲 ...
- Python中print()函数不换行的方法以及分隔符替换
一.让print()函数不换行 在Python中,print()函数默认是换行的.但是,在很多情况下,我们需要不换行的输出(比如在算法竞赛中).那么,在Python中如何做到这一点呢? 其实很简单.只 ...
- Java——注解
注解的产生背景以前,xml以低耦合的方式得到了广大开发者的青睐,xml在当时基本上能完成框架中的所有配置.但是随着项目越来越庞大,xml的配置也越来越复杂,维护性也随之降低,维护成本增高.于是就产生了 ...
- 服务器里Centos 7安装KVM,并通过KVM安装Centos 7
一.安装KVM 1.进入系统后,检查cpu参数是否支持虚拟化: [root@localhost ~]# grep -Ei 'vmx|svm' /proc/cpuinfo 如果有出现vmx或者svm关键 ...
- 推荐一款万能抓包神器:Fiddler Everywhere
搞IT技术的同行,相信没有几个人是不会抓包这项技能的(如果很不幸你中枪了,那希望这篇文章给你一些动力),市面上的抓包工具也有很多,常用的有:Charles.Fiddler.Burpsuite.Wire ...
- 06.深入学习redis replication的完整流程和原理
一.replication的完整流程 slave配置master ip和port # slaveof <masterip> <masterport> slaveof 127.0 ...
- python练习 英文字符的鲁棒输入+数字的鲁棒输入
鲁棒 = Robust 健壮 英文字符的鲁棒输入 描述 获得用户的任何可能输入,将其中的英文字符进行打印输出,程序不出现错误. ...
- Azure Storage 系列(一)入门简介
一,引言 今天作为新的Azure 资源介绍的开篇,我们来学习一个新的服务,Azure Storage.众所周知,我们实际在开发过程中,会需要存储一些比如说日志,图片,等等,各种类型的数据.比如说存储图 ...
- 【Unity C#编程】自定义数据
译林军 灰魅|2014-03-04 10:52|10589次浏览|Unity(315)移动应用(31)技术开发(16)0 在这篇Unity C#的文章中,你将会创建一个简单的数据结构,然后写下它的属性 ...
- Java 中基本数据类型的变量的转换规则
基本数据类型之间的转换 变量之间的转换规则 布尔型变量在和其他 7 种基本数据类型做运算时,无法转化为其他的数据类型,所以下面所说的运算都是除了布尔型的其他 7 种基本数据类型之间的转换. 1.自动类 ...