程序员:搞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是什么水平?我:也就这样(滑稽)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/350772

相关文章

Java实现数据库图片上传与存储功能

《Java实现数据库图片上传与存储功能》在现代的Web开发中,上传图片并将其存储在数据库中是常见的需求之一,本文将介绍如何通过Java实现图片上传,存储到数据库的完整过程,希望对大家有所帮助... 目录1. 项目结构2. 数据库表设计3. 实现图片上传功能3.1 文件上传控制器3.2 图片上传服务4. 实现

Spring、Spring Boot、Spring Cloud 的区别与联系分析

《Spring、SpringBoot、SpringCloud的区别与联系分析》Spring、SpringBoot和SpringCloud是Java开发中常用的框架,分别针对企业级应用开发、快速开... 目录1. Spring 框架2. Spring Boot3. Spring Cloud总结1. Sprin

Java实现MD5加密的四种方式

《Java实现MD5加密的四种方式》MD5是一种广泛使用的哈希算法,其输出结果是一个128位的二进制数,通常以32位十六进制数的形式表示,MD5的底层实现涉及多个复杂的步骤和算法,本文给大家介绍了Ja... 目录MD5介绍Java 中实现 MD5 加密方式方法一:使用 MessageDigest方法二:使用

Java中的runnable 和 callable 区别解析

《Java中的runnable和callable区别解析》Runnable接口用于定义不需要返回结果的任务,而Callable接口可以返回结果并抛出异常,通常与Future结合使用,Runnab... 目录1. Runnable接口1.1 Runnable的定义1.2 Runnable的特点1.3 使用Ru

Java中Runnable和Callable的区别和联系及使用场景

《Java中Runnable和Callable的区别和联系及使用场景》Java多线程有两个重要的接口,Runnable和Callable,分别提供一个run方法和call方法,二者是有较大差异的,本文... 目录一、Runnable使用场景二、Callable的使用场景三、关于Future和FutureTa

Spring 中 BeanFactoryPostProcessor 的作用和示例源码分析

《Spring中BeanFactoryPostProcessor的作用和示例源码分析》Spring的BeanFactoryPostProcessor是容器初始化的扩展接口,允许在Bean实例化前... 目录一、概览1. 核心定位2. 核心功能详解3. 关键特性二、Spring 内置的 BeanFactory

Spring组件初始化扩展点BeanPostProcessor的作用详解

《Spring组件初始化扩展点BeanPostProcessor的作用详解》本文通过实战案例和常见应用场景详细介绍了BeanPostProcessor的使用,并强调了其在Spring扩展中的重要性,感... 目录一、概述二、BeanPostProcessor的作用三、核心方法解析1、postProcessB

Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)

《Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)》:本文主要介绍Java导入、导出excel的相关资料,讲解了使用Java和ApachePOI库将数据导出为Excel文件,包括... 目录前言一、引入Apache POI依赖二、用法&步骤2.1 创建Excel的元素2.3 样式和字体2.

Java实现将Markdown转换为纯文本

《Java实现将Markdown转换为纯文本》这篇文章主要为大家详细介绍了两种在Java中实现Markdown转纯文本的主流方法,文中的示例代码讲解详细,大家可以根据需求选择适合的方案... 目录方法一:使用正则表达式(轻量级方案)方法二:使用 Flexmark-Java 库(专业方案)1. 添加依赖(Ma

Spring Boot拦截器Interceptor与过滤器Filter详细教程(示例详解)

《SpringBoot拦截器Interceptor与过滤器Filter详细教程(示例详解)》本文详细介绍了SpringBoot中的拦截器(Interceptor)和过滤器(Filter),包括它们的... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)详细教程1. 概述1