Skip to content

终极总结

Java 知识体系终极总结,以思维导图风格组织,涵盖 Java 核心、并发、JVM、框架、数据库和分布式六大领域。


一、Java 核心

1.1 基础语法

知识点核心内容重要程度
数据类型8 种基本类型 + 引用类型,自动装箱拆箱,Integer 缓存(-128~127)★★★★
String不可变(final),字符串常量池,StringBuilder/Buffer 区别★★★★★
Object 方法equals/hashCode 契约,toString,clone(浅拷贝 vs 深拷贝)★★★★★
关键字static,final(类/方法/变量),this,super,abstract,transient★★★★
运算符== vs equals,& vs &&,>> vs >>>,三目运算符★★★
控制流if-else,switch(支持 String/枚举),for-each,卫语句★★★

1.2 面向对象

知识点核心内容重要程度
三大特性封装(访问控制),继承(extends,单继承),多态(重写+重载)★★★★★
抽象类 vs 接口抽象类(is-a,模板),接口(like-a,契约),JDK 8+ default 方法★★★★★
内部类成员内部类,静态内部类,局部内部类,匿名内部类,Lambda★★★★
SOLID 原则单一职责,开闭原则,里氏替换,接口隔离,依赖倒置★★★★

1.3 异常

知识点核心内容
异常体系Throwable -> Error(不可恢复) + Exception(可恢复)
分类受检异常(Checked, 编译时) vs 非受检异常(RuntimeException, 运行时)
处理try-catch-finally,try-with-resources(AutoCloseable),throws
最佳实践不吞异常,具体异常,早抛晚捕,异常转换,finally 不 return

1.4 集合框架

类型接口实现类核心特性
ListListArrayList动态数组,O(1)随机访问,尾部插入快
ListListLinkedList双向链表,O(1)头尾插入
SetSetHashSet基于 HashMap,O(1)查找,无序
SetSetLinkedHashSet保持插入顺序
SetSetTreeSet红黑树,有序,O(log n)
MapMapHashMap数组+链表+红黑树,O(1)
MapMapLinkedHashMap保持插入顺序,LRU 缓存
MapMapTreeMap红黑树,键有序
MapMapConcurrentHashMap线程安全,CAS+synchronized

HashMap 核心原理:数组+链表+红黑树,负载因子 0.75,扩容 2 倍,链表长度 >=8 且数组 >=64 时转红黑树。

如何选用集合

  • 需要键值对 -> Map
  • 需要去重 -> Set
  • 需要顺序 -> List
  • 需要线程安全 -> ConcurrentHashMap / CopyOnWriteArrayList / Collections.synchronizedXxx

1.5 IO 与序列化

知识点核心内容
分类字节流(InputStream/OutputStream) vs 字符流(Reader/Writer)
装饰器模式BufferedInputStream,DataInputStream,层层包装
NIOBuffer,Channel,Selector,IO 多路复用
序列化Serializable,transient,serialVersionUID,Externalizable
JSONJackson,Gson,Fastjson(安全漏洞注意)

1.6 泛型

知识点核心内容
类型擦除编译时检查,运行时擦除(可通过反射绕过)
通配符?(无界),? extends T(上界,Producer),? super T(下界,Consumer)
PECS 原则Producer Extends,Consumer Super
泛型方法<T> T method(T t),类型推断
限制不能是基本类型,不能实例化,不能 instanceof

1.7 注解与反射

知识点核心内容
元注解@Target,@Retention,@Documented,@Inherited,@Repeatable
常用注解@Override,@Deprecated,@SuppressWarnings,@FunctionalInterface
反射Class,Field,Method,Constructor,setAccessible,动态代理
应用Spring 依赖注入,ORM 映射,JUnit 测试,AOP

二、并发编程

2.1 基础知识

知识点核心内容
线程 vs 进程进程是资源分配单位,线程是 CPU 调度单位,共享堆和方法区
线程生命周期NEW -> RUNNABLE -> BLOCKED/WAITING/TIMED_WAITING -> TERMINATED
线程创建Thread,Runnable,Callable(有返回值),Future/FutureTask
线程方法start()vs run(),sleep()vs wait(),join(),yield(),interrupt()

2.2 锁机制

锁类型核心内容重要程度
synchronized偏向锁 -> 轻量级锁 -> 重量级锁(锁升级),对象头 Mark Word★★★★★
Lock 接口ReentrantLock(可重入),公平锁/非公平锁,Condition 条件变量★★★★★
ReadWriteLockReentrantReadWriteLock,读共享写互斥,锁降级★★★★
volatile可见性,禁止指令重排(内存屏障),不保证原子性★★★★★
CASCompare And Swap,Unsafe 类,ABA 问题(AtomicStampedReference)★★★★★
AQSAbstractQueuedSynchronizer,CLH 队列,state 状态,模板方法★★★★

2.3 JUC 工具类

分类工具类用途
原子类AtomicInteger/AtomicLong/AtomicReference无锁原子操作
集合ConcurrentHashMap线程安全 Map
集合CopyOnWriteArrayList读写分离 List
集合BlockingQueue(Array/Linked)阻塞队列,生产者-消费者
同步器CountDownLatch等待多个线程完成
同步器CyclicBarrier线程互相等待,可复用
同步器Semaphore信号量,限流
同步器Exchanger线程间交换数据
工具ThreadLocal线程本地变量,用完必须 remove()

2.4 线程池

知识点核心内容
核心参数corePoolSize,maxPoolSize,keepAliveTime,workQueue,threadFactory,handler
执行流程核心线程 -> 队列 -> 最大线程 -> 拒绝策略
拒绝策略AbortPolicy(抛异常),CallerRunsPolicy(调用者执行),DiscardPolicy(丢弃),DiscardOldestPolicy(丢弃最早)
常用线程池newFixedThreadPool,newCachedThreadPool,newSingleThreadExecutor,newScheduledThreadPool
最佳实践不用 Executors 创建(队列无界 OOM),用 ThreadPoolExecutor 构造,设置线程名称,监控

三、JVM

3.1 内存结构

区域线程存储内容GC异常
程序计数器私有字节码行号不涉及
虚拟机栈私有栈帧(局部变量表,操作数栈)不涉及StackOverflowError
本地方法栈私有Native 方法不涉及StackOverflowError
共享对象实例主要 GC 区域OutOfMemoryError
元空间(JDK 8+)共享类信息,常量池,方法数据可配置OutOfMemoryError

堆的分代:新生代(Eden 80% + S0 10% + S1 10%) -> 老年代,Minor GC / Major GC / Full GC。

3.2 垃圾回收

知识点核心内容
判断存活引用计数法(有循环引用问题),可达性分析(GC Roots)
GC Roots栈帧局部变量,静态变量,JNI 引用,活跃线程,常量池引用
回收算法标记-清除(碎片),标记-复制(无碎片,浪费空间),标记-整理(无碎片,耗时)
分代收集新生代用复制算法,老年代用标记-清除/整理
垃圾回收器Serial(单线程),Parallel(吞吐量),CMS(低延迟,已废弃),G1(区域化,JDK 9+ 默认),ZGC(超低延迟)

3.3 类加载

知识点核心内容
加载过程加载 -> 验证 -> 准备 -> 解析 -> 初始化
类加载器Bootstrap(核心类) -> Extension(扩展,JDK 8) -> Application(应用) -> 自定义
双亲委派向上委派,父加载器找不到才自己加载,保证类型安全
打破方式重写 findClass()(推荐,如 Tomcat),重写 loadClass()(如 OSGi)

3.4 JVM 调优

知识点核心内容
常用参数-Xms(初始堆),-Xmx(最大堆),-Xss(栈大小),-XX:+UseG1GC
GC 日志-XX:+PrintGCDetails,-Xlog:gc*(JDK 9+)
内存分析jps,jstat,jmap(heap dump),jstack(线程堆栈),jconsole,jvisualvm
OOM 排查-XX:+HeapDumpOnOutOfMemoryError -> MAT 分析 -> 定位大对象 -> GC Root 引用链
调优目标减少 Full GC 次数,降低停顿时间,提高吞吐量

内存泄漏常见原因

  • ThreadLocal 未 remove()
  • 静态集合持续增长
  • 连接未关闭(数据库连接池、HTTP 连接池)
  • 监听器未注销
  • 内部类持有外部类引用

四、框架

4.1 Spring

知识点核心内容重要程度
IoC/DI控制反转,依赖注入(构造器/Setter/字段),@Autowired,@Resource★★★★★
Bean 生命周期实例化 -> 属性赋值 -> Aware -> BeanPostProcessor -> init -> 就绪 -> destroy★★★★★
Bean 作用域singleton,prototype,request,session★★★★
AOPJDK 动态代理(接口) vs CGLIB(类),@Aspect,@Before/@After/@Around★★★★★
事务@Transactional,传播行为(REQUIRED/REQUIRES_NEW),隔离级别★★★★★
事件ApplicationEvent,@EventListener,观察者模式★★★
循环依赖三级缓存(singletonObjects,earlySingletonObjects,singletonFactories)★★★★

4.2 Spring Boot

知识点核心内容
自动配置@SpringBootApplication -> @EnableAutoConfiguration -> spring.factories -> 条件注解
Starter场景启动器,依赖管理
内嵌容器Tomcat,Jetty,Undertow
配置管理application.yml,@ConfigurationProperties,多环境(profile)
监控Actuator,metrics,health,info

4.3 Spring Cloud

组件用途核心原理
Nacos注册中心 + 配置中心AP 模式(最终一致) + CP 模式
OpenFeign声明式 HTTP 调用动态代理,@FeignClient
GatewayAPI 网关路由,过滤器,断言
Sentinel流量控制,熔断降级滑动窗口,令牌桶
Seata分布式事务AT 模式(2PC),TCC,Saga
Spring Cloud LoadBalancer负载均衡替代 Ribbon

4.4 MyBatis

知识点核心内容
核心组件SqlSessionFactory,SqlSession,Executor,StatementHandler
缓存一级缓存(SqlSession 级别),二级缓存(Mapper 级别,默认关闭)
插件拦截器(Executor,ParameterHandler,ResultSetHandler,StatementHandler)
分页PageHelper(物理分页),RowBounds(逻辑分页,不推荐)
动态 SQLif,choose,foreach,trim,where,set
映射resultMap,association(一对一),collection(一对多)

五、数据库

5.1 MySQL 核心

知识点核心内容重要程度
存储引擎InnoDB(事务,行锁,B+树) vs MyISAM(无事务,表锁,全文索引)★★★★★
索引B+树(聚簇索引 + 二级索引),覆盖索引,最左前缀,索引下推★★★★★
事务ACID,undo log(原子性),redo log(持久性),MVCC(隔离性)★★★★★
隔离级别读未提交,读已提交,可重复读(InnoDB 默认),串行化★★★★★
行锁(Record Lock),间隙锁(Gap Lock),临键锁(Next-Key Lock),表锁★★★★★
MVCCReadView,undo log 版本链,快照读 vs 当前读★★★★★
SQL 优化EXPLAIN,慢查询日志,索引优化,避免 SELECT *,分页优化★★★★★
分库分表垂直拆分(按业务),水平拆分(按 ID 哈希),ShardingSphere★★★★

5.2 Redis

知识点核心内容重要程度
数据结构String,Hash,List,Set,ZSet,BitMap,HyperLogLog,Geo★★★★★
快的原因纯内存,单线程(命令处理),IO 多路复用,高效数据结构★★★★★
持久化RDB(快照,全量),AOF(追加日志,增量),混合持久化★★★★
过期策略惰性删除 + 定期删除,内存淘汰策略(LRU,LFU 等 8 种)★★★★
高可用主从复制,哨兵(Sentinel),集群(Cluster,16384 槽位)★★★★★
缓存问题穿透(布隆过滤器/缓存空值),击穿(互斥锁/逻辑过期),雪崩(随机过期/多级缓存)★★★★★
分布式锁SET NX EX,Redisson 看门狗,Lua 原子解锁,RedLock 争议★★★★★

六、分布式系统

6.1 理论基础

知识点核心内容
CAP一致性(C),可用性(A),分区容错性(P),P 必选,CP 或 AP 权衡
BASEBasically Available(基本可用),Soft State(软状态),Eventually Consistent(最终一致)
一致性协议2PC(两阶段提交),3PC,TCC,Paxos,Raft
共识算法Raft(Leader 选举 + 日志复制,etcd/Nacos),ZAB(ZooKeeper)

6.2 分布式关键技术

技术方案核心原理
分布式锁Redis SET NX + Lua,ZooKeeper 临时顺序节点互斥 + 超时 + 可重入
分布式事务Seata AT/TCC/Saga,RocketMQ 事务消息,本地消息表最终一致性
分布式 IDSnowflake(雪花算法),号段模式(Leaf),Redis 自增全局唯一 + 趋势递增
幂等性唯一索引,Token 机制,状态机,乐观锁重复请求结果一致
限流令牌桶,漏桶,滑动窗口(Sentinel),Guava RateLimiter保护系统
熔断降级断路器(Hystrix/Sentinel),降级策略,Fallback快速失败
负载均衡轮询,随机,加权,一致性哈希,最少连接请求分发
配置中心Nacos,Apollo,Spring Cloud Config动态配置刷新

6.3 消息队列 (MQ)

知识点核心内容
核心作用解耦,异步,削峰填谷
主流 MQRocketMQ(阿里,事务消息),Kafka(大数据,高吞吐),RabbitMQ(AMQP,灵活)
消息可靠性生产确认,Broker 持久化,消费手动 ACK
消息顺序全局有序(单分区/单队列),局部有序(分区有序)
消息重复消费端幂等处理
消息堆积增加消费者,扩容分区,限流生产者

6.4 微服务架构

知识点核心内容
服务拆分按业务域,DDD 界限上下文,单一职责
服务通信同步(REST/RPC/Dubbo),异步(MQ)
服务治理注册发现,配置管理,负载均衡,限流熔断
可观测性日志(ELK),监控(Prometheus+Grafana),链路追踪(SkyWalking/Zipkin)
容器化Docker,Kubernetes,Helm
CI/CDJenkins,GitLab CI,GitHub Actions,ArgoCD

七、学习路线图

阶段一:入门基础(1-2 个月)

Java 语法基础 -> 面向对象 -> 集合框架 -> IO 流 -> 异常处理 -> 泛型 -> 注解 -> 反射

目标:能独立完成小型 Java 项目,理解面向对象思想。

重点

  • 熟练掌握集合框架(HashMap,ArrayList 源码)
  • 理解 equals/hashCode 契约
  • 掌握异常处理最佳实践
  • 能读写文件和处理 JSON

阶段二:进阶提升(2-3 个月)

并发编程 -> JVM -> 设计模式 -> MySQL -> Redis -> Spring/Spring Boot -> MyBatis

目标:能开发企业级后端服务,理解核心原理。

重点

  • 线程池、锁、volatile、CAS 原理
  • JVM 内存模型、GC 算法、调优思路
  • 23 种设计模式中至少掌握 10 种常用模式
  • MySQL 索引优化、事务隔离、MVCC
  • Redis 缓存问题解决方案
  • Spring IoC/AOP/事务源码级理解

阶段三:架构能力(3-6 个月)

微服务 -> 分布式系统 -> 消息队列 -> 容器化 -> 系统设计

目标:能设计分布式系统,具备架构思维。

重点

  • CAP 理论与 BASE 理论
  • 分布式事务解决方案对比
  • 分布式锁实现与选型
  • 分库分表方案
  • 高并发场景设计(秒杀、抢购)
  • 系统性能优化

技能矩阵

阶段核心技能加分技能
初级(0-2年)Java SE,Spring Boot,MySQL,GitLinux,Docker,Redis
中级(2-5年)JVM 调优,并发编程,设计模式,DDD微服务,MQ,K8s
高级(5年+)分布式系统,系统架构设计,团队管理中间件源码,性能调优,技术选型

八、面试高频考点 TOP 20

排名考点所属领域
1HashMap 原理(数组+链表+红黑树,扩容)Java 核心
2ConcurrentHashMap 线程安全原理(CAS + synchronized)并发
3synchronized 锁升级(偏向锁 -> 轻量级锁 -> 重量级锁)并发
4volatile 可见性与禁止指令重排并发
5线程池参数与执行流程(核心 -> 队列 -> 最大 -> 拒绝)并发
6ThreadLocal 原理与内存泄漏并发
7JVM 内存结构(堆,栈,元空间)JVM
8GC 算法与垃圾回收器(CMS vs G1)JVM
9类加载过程与双亲委派模型JVM
10Spring IoC 与 AOP 原理框架
11Spring Bean 生命周期框架
12Spring 事务传播行为框架
13MySQL 索引 B+ 树与最左前缀数据库
14事务隔离级别与 MVCC数据库
15SQL 优化思路(EXPLAIN,慢查询)数据库
16Redis 缓存穿透/击穿/雪崩中间件
17Redis 分布式锁分布式
18分布式事务(TCC,Seata,消息)分布式
19CAP 理论分布式
20设计模式(单例,策略,工厂,代理)设计

九、关键对比速查

对比项结论
ArrayList vs LinkedList数组,O(1) 随机访问链表,O(1) 头尾操作查询多用 ArrayList
HashMap vs ConcurrentHashMap非线程安全,快线程安全,CAS + sync并发用 CHM
synchronized vs LockJVM 关键字,自动JDK 接口,手动简单用 sync,灵活用 Lock
String vs StringBuilder不可变,有常量池可变,无常量池拼接用 StringBuilder
JDK 代理 vs CGLIB基于接口基于继承Spring 自动选择
ArrayList vs Vector非线程安全,快synchronized,慢不用 Vector
Error vs Exception不可恢复可恢复不 catch Error
Redis vs Memcached多数据结构,持久化纯 KV,无持久化通用选 Redis
CMS vs G1标记-清除,碎片标记-复制+整理,分 Region大堆用 G1
RPC vs MQ同步异步看场景

持续学习建议:每天读一点源码,工作中多思考为什么这样设计,面试前深挖原理而非背诵,保持对技术的热情和好奇心。