Java年薪30w该达到什么水平?(完结)
Java 年薪 30w 该达到什么水平?(完结)
球友好,我是二哥呀。
在《Java 面试指南》里面追加这个主题的内容,是因为确实会有不少球友对这个话题感
兴趣。这里就姑且谈一谈。
年薪 30 万
Java 要做到年薪 30w,也就是月薪 25k,其实不仅要靠技术,更要靠公司。
比如在一些小城市的公司里,估计顶了天也只能给到 15k,如果在一些大城市的外包公司
或小公司里,顶了天只能给到 20k 一个月,但如果在互联网公司或外企,大概 3 到 5 年
开发经验就能要到这个价位,甚至新人就能拿到这个数,还是白菜价,SSP 的甚至能在第
一年拿到 50 万(我有一个读者就是这样)。
但人的出身不同,能力不同,所以还是要看情况而定。
下面我先列些我见到的 Java 年薪 30w 的案例。
1 上海,一家外企,大概 5 年经验,会增删改查,能给到这个价。
2 上海,另一家外企,4 年经验,也只会增删改查,给到了约 28w 一年,相当于也是 30w
一年,一个 94 年的,有 6,7 年开发经验,年薪要到了 45w。
3 上海,一家互联网公司,3 年开发经验,会增删改查,外加一些分布式技能,要到了
32w,同样一个运维,3 年经验,要到了 35w。
4 相比之下还是大公司好拿高薪,另外我见到上海一家用 java 技术的小公司,要 10 年
+开发经验的部门经理,薪资才能到 28w 左右,资历再高些的技术总监,大概在 35w 左
右,一般员工,有 8 年左右开发经验,比较资深了,大概也就 22k 左右的水平。
顺带再说个题外话,做 java,或者是做 IT 的,相比其他行业,薪资确实不低。
1 我见过一些小公司的总监级别的,比如财务总监人事总监,有 10 多年工作经验,薪资
水平 2w 左右算高了。
2 一些其他行业公司的文员,哪怕快 35 了,累积跳槽加薪,薪资能到 15k 的真不错了。
3 我知道的一些做机械化工等行业的人,快 30 了,薪资不到 1w 的大有人在,25 岁到 28
岁之间的,薪资一般也在 6k 到 8k 的水平,所以这些人还真想转 IT。
4 哪怕是在上海,一些在厂子里干的年轻人,大概在 23 岁左右,一个月能挣到 7,8k 就算
多了,而且可能真是每天要加班干 10 多个小时,甚至可能周末才休息一天。同样的年龄
比如做 java,可能真能拿到月薪 1w,而且每天虽然有加班,但不会这样辛苦。
5 至于想一些做店员餐饮服务员,或者是超市收银或卡车司机,在包吃住的情况下,月入
真未必能有 8k。
所以至少在当下,IT 行业,或者说 Java 行业,确实能给予高薪机会,但不过话也说回
来,有些高薪的 IT 工作也是得靠加班来换,而且加班情况未必比在工厂里要好。
下面再结合上海 2022 年的 java 行情,说下各薪资区间所需要的技术。
1 本科学历,应届生,只要能找到 java 工作,一般能要要 9k 到 12k 的薪资,大概是年入
10w 到 15w 的水平。这里找到工作的一般标准是,能证明项目经验,能证明自己能做基
本的增删改查。如果是大专学历的话,薪资一般是会打 8 折,当然如果面试好,不打折也
有可能。
2 本科,有 3 年 java 工作经验,面试时能证明能用增删改查技能做熟项目,那能要到 15k
左右的薪资,如果再提升一下,能证明做分布式高并发微服务的项目,能要到 20k,如果
这个时间点再通过提升面试技巧,能进大厂,要到 25k 一个月都有可能。
也就是说,3 年 java 开发经验,一般都能要到将近 20w 的水平,而且我见过大量的做外
包的 java 3 年开发,都能要到这个水平,当然这个时间点如果能力好,进大厂的话,薪资
能有 35w 甚至更高。
对于 3 年开发经验的大专 java 开发,一般也能要到个 20w 一年,但大专程序员要进大
厂,不是说不行,但难度会高于本科学历的 Java 开发。
3 本科,有 5 年开发经验,此时多少能会些高并发技能,这样哪怕凭资历不凭技术,都能
要到 2w 一个月了,或者如果但凭资历,要到 30w 一年,其实问题也不大,此时如果有
高并发的项目经验,或者退而求其次,面试时能展现高并发经验,要到 30w 一年,问题
真不大。
但这个工作年龄段,薪资的差异就拉开了,比如同样的能力,如果在小公司或者外包公
司,熬个年薪 25w 的也有,但如果在外企或大厂,真能给到 30w 甚至更多。也就是说,
有 5 年 java 开发经验的程序员,要高薪真的得开始挑平台了,当然学历也得提升。
4 再说说 java 程序员年薪 50w 的情况吧。一般有个 6,7 年开发经验,能要到这个薪资,
甚至这些开发年限,进外企,好歹也能要到这个价。
或者说,有 8,9 年 java 开发经验,也就是 30 岁出头些,只要能进大厂或外企,一般都离
年薪 50w 不远了,甚至能直接达到这个水平(应届生 SSP 顶薪),但如果依然在小公
司,那么 30 岁出头,凭资历,估计要个 3w 月薪都难,一般也就个 2w 到 2.5w 的水平
吧。
看了那么多,其实大家也能感受到,java 层面怎么能要到高薪呢?
1 自然确保有足量的项目开发经验,当然学历得到位。
2 在 25 到 27 岁左右的时候,熬个 2 年,别跳槽太频繁,争取在 28 岁的时间点进大公司
或者是外企。这其实不仅要靠技术,更要靠面试技巧。
3 千万注意,别在小公司久呆,同样的能力,只要面试技术得当,或者找到合适的渠道,
进个大公司或外企,其实不是什么难事。真有可能在大公司里干的和小公司差不多的活,
但两边的薪资差个个 3,5 成都有可能。
3 年工作经验
30 万年薪,其实和 3 年工作经验是能够划等号的,所以二哥之前在星球回答一个球友 3
年工作经验应该掌握得技术,这里也很适用于年薪 30 万的要求。
三年,对程序员来说是一个门槛,这个阶段会淘汰掉一批不适合写代码的人,这部分人即
便是没有被淘汰,也几乎失去了上升的空间,要么被领导欺负,要么被新人吊打,价值感
荡然无存。
这一阶段,我们走出校园,迈入社会,正式成为一名程序员。在学校阶段学到的那些理论
知识,究竟能不能在企业级开发中得到应用,都会得到验证。
我们要学会团队协作、使用项目管理工具、项目版本控制、要能将业务转换成代码,写完
代码要做 review,要做单元测试,要做集成测试,要完成线上运行,要及时维护并修复
bug。
这个阶段我们会积累一定的开发经验,对代码也有了一定深入的认知,是一个比较纯粹的
coder。
1)项目经验
介绍产品时,面试官会考察应聘者的沟通能力和思考能力,大部分情况下,我们只会做产
品的一个功能或者负责一个模块,但即使是这样,自己也要努力具备把握整体系统架构或
者把产品梳理清楚的能力。
比如说,为什么要做这个系统?这个系统的价值是什么?这个系统有哪些比较亮眼的功
能?优缺点有哪些?如果让你重新设计这个系统你会如何设计?
也许你做的只是项目中微不足道的模块,也许你只会增删改查,如何扭转这种劣势呢?
你要想办法弄明白这几点:
• 明确项目到底是做什么的,有没有价值,有哪些功能?
• 明确项目的整体架构,面试的时候能给面试官描述清楚
• 明确你的模块在整个项目中处于什么样的位置,作用是什么
• 明确你的模块用到了哪些技术,有没有更好的技术方案?
如果你在项目经验这块真的是拿不出手,那就要懂得适当的包装了,不要当傻白甜。
2)专业技能
这里就只说一名 3 年工作经验的 Java 后端工程师应该具备的技能吧,这可能是球友们比
较关心的内容。下面列举的内容不一定你都要掌握,但掌握得越多,最终能拿到的薪水肯
定也会更高。
01、基本语法
• static、final、transient、instanceof 等等关键字的作用
• foreach 循环的原理
举个例子,我问你 static 关键字有哪些作用?你回答出 static 可以修饰变量修饰方法,我
觉得你和刚毕业的学生差不多;如果能答出静态代码块,我会认为你还算合格;如果能答
出静态内部类,我会认为你的确不错;如果能答出静态导包我会对你很满意。
02、集合框架
这部分涉及到数据结构和算法,非常重要。
基本上就是 List、Map、Set,问的是各种实现类的底层实现原理,包括 ArrayList、
LinkedList、HashMap、ConcurrentHashMap、CopyOnWrite、Queue 等等。
你比如说:
• ConcurrentHashMap 的锁分段技术
• ConcurrentHashMap 的读是否要加锁,为什么
• ConcurrentHashMap 的迭代器是强一致性的迭代器还是弱一致性的迭代器
03、多线程
这也是必问的一块,因为有三年的工作经验,所以基本上不会再问你怎么实现多线程了,
而是会问得深入一些。
比如说 Thread 和 Runnable 的区别、多次 start 一个线程会怎么样、线程有哪些状态?
这些都是非常基本的。还有线程池这块也会经常问到,常用的线程池有几种?这几种线程
池之间有什么区别和联系?线程池的实现原理是怎么样的?
有时候,会给你一些具体的场景,让你回答这种场景该使用什么样的线程池比较合适。
还有 synchronized 和 ReentrantLock 的区别、synchronized 锁普通方法和锁静态方法、死
锁的原理及排查方法等等
04、JVM
懂 JVM 的不多,但如果你懂,显然很牛。简单列一些 Java 虚拟机中比较重要的内容吧。
• (1)Java 虚拟机的内存布局
• (2)GC 算法及几种垃圾收集器
• (3)类加载机制,也就是双亲委派模型
• (4)Java 内存模型
• (5)happens-before 规则
• (6)volatile 关键字使用规则
05、JDK 源码
想拿高工资,JDK 的源码是不能不读的。到底喜不喜欢技术,JDK 源码就是一个很好的评
价标准。
比如说,String 的 hashCode()方法是怎么实现的?
具体哪些 JDK 源码要研究,这里总结一下:
• List、Map、Set 实现类的源代码;
• ReentrantLock、AQS 的源代码;
• AtomicInteger 的实现原理,主要能说清楚 CAS 机制并且 AtomicInteger 是如何利用
CAS 机制实现的;
• 线程池的实现原理;
• Object 类中的方法以及每个方法的作用。
研究源码是枯燥的,需要花费很大精力,但如果你肯下定决心去研究,一定是值得的,不
仅仅是为了应付面试。
06、框架
Spring 全家桶(包括 MyBatis、Druid 等等),肯定是要问一些原理性质的。比如说:
如果要你在 spring 初始化 bean 的时候做一些事情该怎么做、想要在 bean 销毁的时候做
一些事情该怎么做、MyBatis 中 $和 井号的区别。
这部分就要在平常工作中积累了。
07、数据库
数据库十有八九肯定是要问的。除了一些 SQL 语句,比如说 union 和 union all 的区别、
left join、几种索引及其区别。
还有就是数据库的性能优化,分库分表啊!
08、设计模式
这部分也是很重要的,23 种设计模式最好能研究个十来种,并且能在工作中应用。比如
说手写一个单例模式(双重检查锁机制)。
09、数据结构与算法分析
数组、链表是基础,栈和队列也要兼顾,还有树,比较重要的树有 AVL 、红黑树等等,
即便是手撕不出来,也要能明白二叉查找树、什么是平衡树,AVL 树和红黑树的区别。
比如说 你知道索引使用的是哪种数据结构实现吗?
10、Web 方面的一些问题
比如说 Session 和 Cookie 的区别,session 的实现原理、HTTPS 的原理,http 属于什么层
协议?与 https 的区别是什么?Tcp 协议属于那一层?OSI 七层网络模型有哪些?三次握
手和四次挥手的过程?为什么握手要三次,挥手要四次?
最好还能研究一下 SOA、RPC 等等。
11、微服务分布式高并发
你比如说 Nginx 负载均衡、分布式缓存技术(Redis、MongoDB)、数据库分库分表
(mycat、Shardingsphere)、分布式架构基础、并发编程(juc)、分布式通信框架
(NIO、 Netty)、Zookeeper、分布式定时任务、分布式消息中间件(kafka、
RabbitMQ、RocketMQ 等等)
12、开发工具
这部分可能面试中不问,但工作中肯定是必须的,比如说 postman、git、Shell、Intellij
IDEA、bug 分析工具、性能测试工具等等。
除此之外,你像:
redis 的缓存淘汰策略有哪些?LRU 和 LFU 区别,手写一个 LRU
线上 cpu 占用率高怎么办?如何排查这个问题,用哪些命令
给你一个秒杀场景,如何应对短时间的高峰请求问题?数据库如何防止并发问题?秒杀如
何实现不同的客户端的时间一致性?
rabbitmq 消息重复和丢失如何处理?
总结
不管是年薪 30 万,还是 3 年工作经验,还是更多,总之是,学无止
境!!!!!!!!!!!!!!
Java 后端开发要学的技术是层出不穷的,但最起码在这三年内,要能做到,公司交给你的
任务是能够完成的,尤其是能够独立完成,遇到 bug 自己能通过各种手段解决掉。
我觉得在这三年的职业生涯里,我们会变化很大,一定要多向公司的前辈学习,多交几个
好朋友,缓解工作上的压力,处理好人际关系。
三年后,很可能面临买房、结婚、买车等等压力,所以技术的积累就是最好的屏障,可以
为我们的生活保驾护航。
年薪 30 万,和所在的城市,所从事的工作,学历、工作年限,都很有关系,所以,如果
职业生涯前期最好去一线城市,跳槽的机会会比较多,技术成长也会比较快。
在大学阶段,千万不要放松,说句不好听的,不要躺平不要摆烂,自己最好能偷偷的卷,
拿到个大厂的白菜价,一年也有 30 万的年薪了。
当然了,如果自身实力比较差,就更得付出更多的努力了,对吧?不然你拿什么和那些卷
王比呢?