在北京做Java开发五年,拿到月薪3万+,到底需要掌握或者精通哪些技术栈?

首先三万的月薪在BAT实在太普遍了,一般是高级工程师和资深工程师的职位。在阿里是p6左右,在百度是t5左右,腾讯是t2-3左右,京东是t3-1,美团是p6左右,其他的我不了解。这种级别是他们主要码农层级,加班多,能解决大部分问题,但对系统的整体架构能力和深入分析瓶颈的能力还需要培养。

其次掌握的技能树主要有三个方面:
第一个是基础。

比如对集合类,并发包,类加载,IO/NIO,JVM,内存模型,泛型,异常,反射,等有深入了解,最好是看过源码了解底层的设计。比如一般面试都会问ConcurrentHashMap,CopyOnWrite,线程池,CAS,AQS,虚拟机优化等知识点,因为这些对互联网的企业是绝对重要的。而且一般人这关都过不了,还发牢骚说这些没什么用,为什么要面试。举一例子,在使用线程池时,因为使用了无界队列,在远程服务异常情况下导致内层飙升,怎么去解决?你要是连线程池都不清楚,你怎么去玩?再举一例,由于对ThreadLocal理解出错,使用它做线程安全的控制,导致没能实现真的线程安全。还有遇到内存泄露怎么排查问题,怎么优化系统性能。所以作为一个拿三万的JAVA程序员这点基础是要有的。

第二你需要有全面的互联网技术相关知识

从底层说起,你起码得深入了解mysql,redis,nginx,tomcat,rpc,jms等方面的知识。你要问需要了解到什么程度,我可以给你说个大慨。首先对于MySQL,你要知道常见的参数设置,存储引擎怎么去选择,还需要了解常见的索引引擎,知道怎么去选择。知道怎么去设计表,怎么优化sql,怎么根据执行计划去调优。高级的你需要去做分库分表的设计和优化,一般互联网企业的数据库都是读写分离,还会垂直与水平拆分,所以这个也有经验的成分在里面。然后redis几乎是必须的技能,而nginx和tomcat几乎都是JAVA互联网方面必配。至于rpc相关的就多的去,必须各种网络协议,序列化技术,SOA等等,你要有一个深入的理解。现在应用比较广的rpc框架,在国内就是dubbo了,开源的还有spring cloud相关技术栈,可以自行搜索。至于jms相关的起码得了解原理吧,一般情况下不是专门开发中间件系统和支撑系统的不需要了解太多细节,国内企业常用的主要是activeMQ和kafka。你能对我说的都有研究,阿里p7都不是太大问题的。

第三就是编程能力,编程思想,算法能力,架构能力

首先2W程序员对算法的要求我觉得还是比较低,再高级也最多红黑树吧,但是排序和查询的基本算法得会。编程思想是必须的,问你个AOP和IOC你起码的清清楚楚,设计模式不说每种都用过,但也能了解个几种。编程能力这个我觉得不好去评价,但是拿一个2000W用户根据姓名年龄排序这种题目也能信手拈来。最后就是架构能力,这种不是说要你设计个多牛逼多高并发的系统,起码让你做一个秒杀系统,得有一个明确的思路和方向。

针对以上三点,小编整理了一整套的Java学习笔记,足够你的月薪达到3W左右!(为了不影响大家的阅读体验,这份笔记的免费获取方式在放在了文末!)

JVM篇

线程

JVM内存区域(程序计数器(线程私有)、虚拟机栈(线程私有)、本地方法区(线程私有)、堆(Heap-线程共享) -运行时数据区、方法区/永久代(线程共享))

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

JVM运行时内存(新生代、老年代、永久代

垃圾回收与算法(如何确定垃圾、标记清除算法(Mark-Sweep)、复制算法(copying)、标记整理算法(Mark-Compact)、分代收集算法

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

JAVA四种引用类型(强引用、软引用、弱引用、虚引用

GC分代收集算法VS分区收集算法(分代收集算法、分区收集算法

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

GC垃圾收集器(Serial垃圾收集器(单线程、复制算法)、ParNew垃圾收集器(Serial+多线程)、Parallel Scavenge收集器(多线程复制算法、高效)、Serial Old收集器(单线程标记整理算法)、Parallel Old收集器(多线程标记整理算法)、CMS收集器(多线程标记清除算法)

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

JAVA IO/NIO(阻塞IO模型、非阻塞IO模型、多路复用IO模型、信号驱动IO模型、异步IO模型、JAVA IO包、JAVA NIO、Channel 、Buffer、Selector

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

JVM类加载机制(加载、验证、准备、解析、符号引用、直接引用、初始化、类构造器< client>、类加裁器、双亲委派、OSGI (动态模型系统)

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

JAVA集合篇

接口继承关系和实现

List(ArrayList (数组)、Vector (数组实现、线程同步)、LinkList (链表)

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

Set(HashSet (Hash表)、TreeSet (二叉树)、LinkHashSet (HashSet+ LinkedHashMap)

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

Map(HashMap (数组+链表+红黑树)、ConcurrentHashMap、HashTable (线程安全)、TreeMap (可排序)、LinkHashMap (记录插入顺序)

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

多线程与高并发篇

JAVA并发知识库

JAVA线程实现/创建方式(继承Thread类、实现Runnable接口、ExecutorService、Callable <Class>、Future有返回值线程、基于线程池的方式

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

4种线程池(newCachedThreadPool、newFixedThreadPool、newScheduledThreadPool、newSingleThreadExecutor

线程生命周期(新建状态(NEW)、就绪状态(RUNNABLE)、运行状态(RUNNING)、阻塞状态(BLOCKED) 、线程死亡(DEAD)

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

终止线程4种方式(正常运行结束、使用退出标志退出线程、Interrupt方法结束线程、stop方法终止线程(线程不安全)

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

sleep与wait区别

start与run区别

JAVA后台线程

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

JAVA锁(乐观锁、悲观锁、自旋锁、Synchronized同步锁、ReentrantLock、Semaphore信号量、AtomicInteger、可重入锁(递归锁)、公平锁与非公平锁、ReadWriteLock读写锁、共享锁和独占锁、重量级锁(Mutex Lock)、轻量级锁、偏向锁、分段锁、锁优化

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

线程基本方法(线程等待(wait)、线程睡眠(sleep)、线程让步(yield)、线程中断(nterrupt)、Join等待其他线程终止、为什么要用join0方法?、线程唤醒(notiy)、其他方法

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

线程上下文切换(进程、上下文、寄存器、程序计数器、PCB-“切换桢”、上下文切换的活动、引起线程上下文切换的原因

同步锁与死锁

线程池原理(线程复用、线程池的组成、拒绝策略、Java线程池工作过程

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

JAVA阻塞队列原理(阻塞队列的主要方法、Java中的阻塞队列、ArrayBlockingQueue (公平、非公平)、LinkedBlockingQueue (两个独立锁提高并发)、PriorityBlockingQueue (compareTo排序实现优先)、DelayQueue (缓存失效、定时任务)、SynchronousQueue (不存储数据、可用于传递数据)、LinkedTransferQueue、LinkedBlockingDeque

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

CyclicBarrier. CountDownLatch. Semaphore的用法

volatile关键字的作用(变量可见性、禁止重排序)

如何在两个线程之间共享数据

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

ThreadLocal作用(线程本地存储)

synchronized和ReentrantLock的区别

ConcurrentHashMap并发(减小锁粒度、ConcurrentHashMap分段锁

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

Java中用到的线程调度(抢占式调度、协同式调度、JVM的线程调度实现(抢占式调度)、线程让出cpu的情况

进程调度算法(优先调度算法、高优先权优先调度算法、基于时间片的轮转调度算法

什么是CAS (比较并交换-乐观锁机制-锁自旋)

什么是AQS (抽象的队列同步器)

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

Spring原理篇

Spring特点(轻量级、控制反转、面向切面、容器

Spring核心组件

Spring常用模块

Spring主要包

Spring常用注解

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

Spring第三方结合

Spring IOC原理(概念、Spring容器高层视图、IOC容器实现、Spring Bean作用域、Spring Bean生命周期、Spring依赖注入四种方式、5种不同方式的自动装配

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

Spring APO原理(概念、AOP核心概念、AOP两种代理方式、实现原理

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

Spring MVC原理

Spring Boot原理(创建独立的Spring应用程序、嵌入的Tomcat,无需部署WAR文件、简化Maven配置、自动配置Spring、提供生产就绪型功能,如指标,健康检查和外部配置、绝对没有代码生成和对XML没有要求配置

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

JPA原理(事务、本地事务、分布式事务、两阶段提交

Mybatis缓存(一级、二级)

Tomcat架构

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

数据库篇

存储引擎(概念、InnoDB (B+树)、TokuDB (Fratal Tree节点带数据)、MyIASM、Memory

索引

数据库三范式.第一范式(1st NF -列都是不可再分)、第二范式(2nd NF-每个表只描述件事情、第三范式(3rd NF-不存在对非主键列的传递依赖)

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

数据库是事务(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、永久性(Durability)

存储过程(特定功能的SQL语句集)

触发器(一段能自动执行的程序)

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

数据库并发策略(乐观锁、悲观锁、时间戳

数据库锁(行级锁、表级锁、页级锁

基于Redis分布式锁

分区分表(垂直切分(按照功能模块)、水平切分(按照规则划分存储)

两阶段提交协议(准备阶段、提交阶段、缺点

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

三阶段提交协议(CanCommit阶段、PreCommit阶段、doCommit阶段

柔性事务

CAP(一致性 、可用性、分区容忍性

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

这份知识点内容真的太多了,一篇文章根本写不完,我让大家看看这份笔记的目录吧

在北上深杭做Java开发如何拿到三万月薪,需要什么程度技术?

这份笔记的每一个部分都涵盖了很多内容,从基础到进阶,同时这份笔记有近1000页,全部都是笔记作者自己最精华部分的总结,今天是免费赠送的,需要免费领取的朋友,麻烦帮忙一键三连这篇文章+关注我,扫码获取!

猜你喜欢

转载自blog.csdn.net/weixin_45825082/article/details/109135090