文章首发于【陈树义的博客】,点击跳转到原文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 是什么水平?的更多相关文章

  1. 搞Java的年薪 40W 是什么水平?

    既然楼主提到年薪40w,那我们看看什么公司,什么级别可以给到,再看看要求.阿里是Java大厂,所以可以参考阿里的标准. 阿里一般是16薪水,所以就是税前2.5w,在阿里应该是P6就可以达到,而对P6的 ...

  2. 同样是搞Java,年薪15W和50W到底差在哪里?

    同样是搞Java,年薪15W和50W到底差在哪里? 一.总结 一句话总结: 学习 挑战 1.扩宽自己的眼界,学着从全局看待问题,并且勇于挑战别人眼中的难题 2.持续提升你的学习能力,虽然有很多人以「在 ...

  3. 阿里巴巴Java开发程序猿年薪40W是什么水平?

    对于年薪40万的程序员,不只是技术过硬,还有一个原因是他们所在的公司福利高,或者会直接持股.在BAT中就是一个很好的案例,例如阿里巴巴P7,P8级别的员工不仅是年薪30到80万不等,还有更多股票持有. ...

  4. 二本毕业,我是如何逆袭成为BAT年薪40W的Java工程师的?

    身边的师弟师妹经常问到:非计算机专业出身,你是在2年内如何逆袭成BAT年薪40W的资深开发工程师的.其实很简单——努力! 我16年毕业于普通的二本学校,非计算机专业出身,只因为对软件开发感兴趣,所以找 ...

  5. 去了字节跳动,才知道年薪40W的测试有这么多?

    最近脉脉职言区有一条讨论火了: 哪家互联网公司薪资最'厉害'? 下面的评论多为字节跳动,还炸出了很多年薪40W的测试工程师   我只想问一句,现在的测试都这么有钱了吗? 前几天还有朋友说,从腾讯跳槽去 ...

  6. 搞JAVA在北京月薪15K的朋友来到厦门却很难找到工作

    朋友是搞JAVA开发的,从北京来.来前朋友们都感觉他在厦门应该很快就能找到工作,因为厦门的IT人员很缺. 没想到来厦门大概半个多月了,到现在都还没着落.面试单位每周基本只有两家,而且面试的感觉都说不错 ...

  7. 突破这个四个阶段年薪没有50W,还好意思说是搞Java的?

    该视频教程总共分为四个阶段来学习.逐步进阶,并且还会不定期更新.我简介一下每一个阶段的视频资源,学习顺序不分先后. 第一阶段 第一阶段主要从 svn/git 版本号控制.Java高并发.JVM虚拟机. ...

  8. 搞Java

    上班之余,开始研究Java了. 想想从三月份开始自己啃书以来,Spring+Mybatis+公司框架的用法,基本都是速成来的,还是有些恐惧的. Spring万般爽,annotion用的很舒服,但还是想 ...

  9. 搞java的都土鳖

    spring不就几个破框架让人们下载使用吗,但是官网什么都有,就是没有下载链接.java程序员被那些垃圾框架强奸的体无完肤,还乐在其中,还什么SSH,哇哦!java好像跟企业干上了,什么企业bean, ...

随机推荐

  1. 操作系统-存储管理(6)buffer/cache/swap

    为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没有则通过驱动程序直接操作磁盘. 缓存 ...

  2. .net core 中的经典设计模式的应用

    .net core 中的经典设计模式的应用 Intro 前段时间我们介绍了23种设计模式,今天来分享一下 asp.net core 种我觉得比较典型的设计模式的应用 实例 责任链模式 asp.net ...

  3. 完美解决方案-雪花算法ID到前端之后精度丢失问题

    最近公司的一个项目组要把以前的单体应用进行为服务拆分,表的ID主键使用Mybatis plus默认 的雪花算法来生成. 快下班的时候,小伙伴跑过来找我,:"快给我看看这问题,卡这卡了小半天了 ...

  4. shell脚本同步私人git仓库

    前言 分别在个人电脑.个人服务器.码云三个地方建立了数据仓库用于保存自己的各种数据,通过git+shell进行数据同步. 此举不仅可以避免因存储损坏.版本更迭.数据误操作等因素带来的各种麻烦,也能实现 ...

  5. 从零开始的SpringBoot项目 ( 一 ) Spring、SpringMVC和SpringBoot

    要想开始一个SpringBoot项目 , 首先要知道SpringBoot是什么 , 可以做什么 , 再去研究怎么用 . 一.概念 1.Spring Spring是一个开源容器框架,可以接管web层,业 ...

  6. OpenCV实现人脸检测

    OpenCV实现人脸检测(转载)  原文链接:https://www.cnblogs.com/mengdd/archive/2012/08/01/2619043.html 本文介绍最基本的用OpenC ...

  7. python+requests+unittest执行自动化接口测试

    1.安装requests.xlrd.json.unittest库 <1>pip 命令安装: pip install requestspip install xlrdpip install ...

  8. Python和Nose实现移动应用的自动化测试

    今天跟大家聊的是Python和Nose实现移动应用的自动化测试,希望对你们有帮助,有说的不好的地方,还请多多指教! 采用Appium进行自动化的功能性测试最酷的一点是,你可以使用具有最适合你的测试工具 ...

  9. 力扣Leetcode 46. 全排列

    全排列 给定一个 没有重复 数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], ...

  10. Unity CommandLine

    CommandLineArguments https://docs.unity3d.com/Manual/CommandLineArguments.html Unity3D游戏开发之“unity3D命 ...