程序员:搞Java年薪40W是什么水平?我:也就这样(滑稽)

2023-11-05 15:30

本文主要是介绍程序员:搞Java年薪40W是什么水平?我:也就这样(滑稽),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

按照一贯的尿性,脱离了剂量谈毒性都是耍流氓,年薪这种事,脱离了地域城市谈多少钱也是耍流氓。我有个同事,最近去了腾讯,职级为8级,从他那里获得的信息是,在深圳,8级可以拿到将近50W,而在非北上广深的城市,即使也是在腾讯,8级一般拿到是30W左右,相比在深圳,基本上要打个6、7折。

所以年薪40W在不同的城市,要求的水平就不一样,在成都、西安、武汉这些新一线城市,年薪40W,到了北上广深差不多可以拿70W。反过来在北上广深拿40W,去新一线城市,差不多拿26W左右。

柿子当然是捡软的捏,我们看看在北上广深拿40W大概需要什么样的技术水平。国内目前以Java技术栈为主的公司有阿里、美团、京东等等,我们从中选择一家,看看年薪40W的要求是什么,就能明白要求的技术水平。

按照网上流传的互联网公司薪酬表格,年薪40W,相当于阿里的P6,资深工程师的水平。

阿里的P6的要求是什么?从阿里的社招官网我们可以很容易的查到:

职位详情 - 阿里巴巴集团招聘

抛开第5和第6条,我们仔细分析下岗位要求中的技术条目。

首先要求JAVA基础扎实,这里面包括熟练掌握数据结构、多线程编程,掌握常用的设计模式;熟悉JVM,包括内存模型、类加载机制以及性能优化。

数据结构是个老生常谈的东西了, 这是程序员的基本功,不限于Java程序员。只不过为什么要考察数据结构和算法,很多人其实并不知道,用知乎上一位大牛的说法:

  1. 程序员这个群体也是有金字塔结构的。如果连基本的算法和数据结构都不会,基本上就比较底层,底层就意味着低薪酬。
  2. 没有扎实的算法和数据结构基础,很难及时发现问题并提出独到的见解。
  3. 技术栈日新月异,如何快速适应新技术和新环境?要求程序员必须具有以不变应万变的的计算机思维、算法思维和逻辑思维能力。

对于年薪40W来说,数据结构和算法仅仅掌握数组、链表、栈、队列,基本的排序和查找肯定是不够的,如何计算算法的复杂度,图论,动态规划等等还是需要掌握的,除此之外必要的刷题和面试前对常见大厂算法面试题的突击,无疑在面试中可以大大的加分。

多线程编程,也就是我们常说的并发编程,只会用线程池和JUC下的并发工具类,不能算基础扎实。 至少应该包括但不限于通晓CAS的原理和问题,阅读过JUC中诸如AbstractQueuedSynchronizer之类的源码,明白Java内存模型JMM和相关的并发安全问题,对synchronized和volatile的底层实现有一定的涉猎等等,才够得上对多线程编程基础扎实。

设计模式和JVM,虽然是两个完全不同的知识,但是对于年薪40W来讲,却有一定的相似性。 什么相似性?两者都是仅仅记住概念和理论是远远不够的,一定要有实际的经验。

  • 例如JVM,岗位上面的要求是“熟悉JVM,包括内存模型、类加载机制以及性能优化”,类加载机制和相关联的双亲委派模型的概念半天就记住
  • JVM性能优化也无非就是那几条原则,比如尽可能减少FULLGC的次数,缩短每次GC的时长等等
  • 但是具体在生产环境中应该如何做呢?通过阅读GC日志能发现JVM哪些可以调整的地方?项目中内存泄漏问题怎么排查?内存占用过高怎么解决?

再看第二条,精通spring mvc、orm框架(ibatis或hibernate),熟悉前端开发(js、html、css)。在现在前后端分离的大趋势下,对Java程序员来说,前端的知识不会要求特别高,一般来说能看懂就差不多了。 而对各种开源框架,知道或者用过里面的常用注解,能写出一个完整的SSM程序就算精通了?我想,在IT职场待过一年以上的人,都会有一个共同的答案,不是!什么是对开源框架的精通?必然包括阅读过框架的源码,对底层的原理和机制非常熟悉,出了问题,能快速定位到具体的原因和位置; 或者接触了一个从未用过的公司内部框架后,能够从已知的开源框架原理和机制里得到的知识迅速地推断、掌握这个陌生的框架。

第三条,“熟悉常见的中间件、分布式解决方案及其原理:分布式缓存、SOA、消息中间件,负载均衡、连接池等;”,虽然只有一句话,包含的信息量却很大。

  • 首先,常见的中间件包括的东西是很多的,Redis、Zookeeper、Dubbo、以Kafak或RcketMQ为代表的消息中间件、MongoDB、分库分表相关的数据库中间件、Nginx等等。
  • 其次,只知道这些中间件的用法,层次显然不够拿年薪40W。继续往高层次前进,仅以Redis为例,它的两种持久化方式,从原理的角度再结合自己的业务哪种更适合?在分布式架构下常见的可用性,伸缩性问题,在我们使用Redis的过程中怎么解决?其他的各种中间件当然都各有各的原理需要掌握。

第四条,“具有一定的项目规划和决策能力,善于捕捉业务需求、架构设计中存在的问题,并给出有效的解决措施和方法;”,很明显,指明了需要架构设计经验和解决相关问题的能力,这条和前面的第三条是密切关联的,没有第三条作为基础,架构设计经验和解决相关问题的能力都是无根之水,无本之木。

  1. 比如分库分表后的唯一性ID,根据业务情况,是Redis自动生成、雪花算法还是Mysql提前序列表更适合我们?
  2. 分库分表后的分布式事务,应该选择哪种解决方案?柔性事务还是TCC?
  3. 按照业务的发展趋势用标准的分布式还是转向微服务?
  4. 海量订单数据如何存储和检索?
  5. 超卖、秒杀等高并发场景怎么设计?

上述的这些,都是在业务和架构设计中都有可能遇到的问题,能不能给出有效的解决措施和方法,这些都是年薪40W甚至更高应该达到的水平。

总的来说,掌握的技术越精通,越全面薪资越高。经过总结和细化,下面的思维导图中的技能掌握了,年薪40W就问题不大了:

具体的提升架构进阶路线图点赞支持一下。

温馨提示:若图片不清晰可以通过上面领取方式查看原图

相信这份路线图对于你系统进阶以及准备 Java 方向的面试都很有帮助!正如作者说的那样,这是一份:涵盖大部分 Java 程序员所需要掌握的核心知识的 Java 学习+面试指南!

说明:收集内容过多,限于篇幅,本文只做部分内容的目录展示。由于机制,不能带外部链接,在线版和离线版点击下面卡片加入即可来免费获取完整版解析文档或在线链接进行学习,有需要的话点赞支持一下。

Java程序员所需要掌握的核心知识的 Java 学习+面试指南

1. Java基础知识面试题

2. Dubbo面试题

3. Java异常面试题

4. Java虚拟机(JVM)面试题

5. Java集合容器面试题

6. Linux面试题

7. MyBatis面试题

8. MySQL数据库面试题

9. Netty面试题

10. Redis面试题

11. Spring面试题

12. Spring Boot面试题

13. Spring Cloud面试题

14. Spring MVC面试题

15. Tomcat面试题

16. ZooKeeper面试题

17. 并发编程面试题

18. 消息中间件MQ与RabbitMQ面试题

面试攻略

1. 面试前的准备

2. 面试中的技巧

这篇关于程序员:搞Java年薪40W是什么水平?我:也就这样(滑稽)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/jjc4261/article/details/129830109
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/350772

相关文章

SpringBoot使用ffmpeg实现视频压缩

《SpringBoot使用ffmpeg实现视频压缩》FFmpeg是一个开源的跨平台多媒体处理工具集,用于录制,转换,编辑和流式传输音频和视频,本文将使用ffmpeg实现视频压缩功能,有需要的可以参考... 目录核心功能1.格式转换2.编解码3.音视频处理4.流媒体支持5.滤镜(Filter)安装配置linu

在Spring Boot中实现HTTPS加密通信及常见问题排查

《在SpringBoot中实现HTTPS加密通信及常见问题排查》HTTPS是HTTP的安全版本,通过SSL/TLS协议为通讯提供加密、身份验证和数据完整性保护,下面通过本文给大家介绍在SpringB... 目录一、HTTPS核心原理1.加密流程概述2.加密技术组合二、证书体系详解1、证书类型对比2. 证书获

Java使用MethodHandle来替代反射,提高性能问题

《Java使用MethodHandle来替代反射,提高性能问题》:本文主要介绍Java使用MethodHandle来替代反射,提高性能问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录一、认识MethodHandle1、简介2、使用方式3、与反射的区别二、示例1、基本使用2、(重要)

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

eclipse如何运行springboot项目

《eclipse如何运行springboot项目》:本文主要介绍eclipse如何运行springboot项目问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目js录当在eclipse启动spring boot项目时出现问题解决办法1.通过cmd命令行2.在ecl

Java中的Closeable接口及常见问题

《Java中的Closeable接口及常见问题》Closeable是Java中的一个标记接口,用于表示可以被关闭的对象,它定义了一个标准的方法来释放对象占用的系统资源,下面给大家介绍Java中的Clo... 目录1. Closeable接口概述2. 主要用途3. 实现类4. 使用方法5. 实现自定义Clos

Jvm sandbox mock机制的实践过程

《Jvmsandboxmock机制的实践过程》:本文主要介绍Jvmsandboxmock机制的实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、背景二、定义一个损坏的钟1、 Springboot工程中创建一个Clock类2、 添加一个Controller

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

MQTT SpringBoot整合实战教程

《MQTTSpringBoot整合实战教程》:本文主要介绍MQTTSpringBoot整合实战教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录MQTT-SpringBoot创建简单 SpringBoot 项目导入必须依赖增加MQTT相关配置编写