这门课解决什么问题

很多做 Java 开发的人在工作两三年后,会遇到一个瓶颈:平时写增删改查很顺,但一遇到线上 CPU 飙高、Full GC 频繁、消息队列积压这类生产事故,就不知道怎么排查;面试时被问到 JVM 内存模型、垃圾回收算法、MQ 选型和高可用设计,也只能背几句概念,经不住追问。这门课就是针对这种“能写代码但答不深”的状态设计的。它把面试中高频出现的底层原理和中间件问题,按 JVM 和消息队列等专题做了拆分,帮你把散落在各处的八股文整理成一套能自圆其说的技术体系。它不是教你写代码,而是教你把已经写过的代码讲明白。

适合什么基础,怎么配合资料练习

这套资料适合有一定实际开发经验、至少完整做过一两个业务系统的人。如果你还在学语法,看这些会觉得很虚;但如果你踩过线上内存泄漏的坑,或者处理过消息重复消费的问题,再来看这些内容就会有很强的代入感。建议你不要只当成音视频去听,而是把它当成面试模拟。比如看 JVM 专题时,先暂停,自己试着画一遍运行时数据区,把堆、栈、方法区的关系讲清楚,再对照视频查漏补缺。资料里关于类加载和 GC 的部分,最好配合本地的 JConsole 或者 Arthas 工具,自己写一段死循环或者大对象分配的代码,实际观察一下对象在内存里的变化。看 MQ 专题时,重点放在选型逻辑和常见故障场景上,自己列一张表,把不同队列在吞吐、延迟、可靠性上的差异写一遍,这样面试时被问到“为什么选这个”就能有理有据。

建议先看哪几块,学完能独立做什么

拿到资料后,建议先从 JVM 专题的运行时数据区和 GC 垃圾回收看起,这两块是 Java 后端面试的必考题,也是理解后续性能调优的基础。把对象内存布局和几款常见垃圾回收器的特点理清后,再切入 MQ 专题,重点看消息队列的选型对比以及重复消费、消息丢失这些经典问题。学完这套内容,你应该能在面试中独立把一个技术点讲透,比如被问到“你们项目怎么用 MQ”,你不仅能说出业务场景,还能从高可用、消息可靠性、最终一致性这几个维度去分析架构上的取舍,而不是简单回答“用来异步解耦”。对于平时工作,这套思路也能帮你在线上出问题时,更快定位是内存、网络还是中间件配置的问题。


01 JVM专题 · 02 MQ专题 · 03 NoSQL专题 · 04 多线程专题 · 05 分布式专题 · 06 数据库专题 · 07 算法专题 · 08

课程目录

*   01 JVM专题/

  *   01 运行时数据区

  *   02 Java对象

  *   03 Java对象-字节码

  *   04 类加载机制-上

  *   05 类加载机制-下

  *   06 GC垃圾回收-1

  *   07 GC垃圾回收-2

  *   08 GC垃圾回收-3

  *   09 GC垃圾回收-4

*   02 MQ专题/

  *   01 面试专题-消息队列-为什么要用MQ-1

  *   02 面试专题-消息队列-为什么要用MQ-2

  *   03 面试专题-消息队列-为什么要用MQ-3

  *   04 面试专题-消息队列-为什么要用MQ-4

  *   05 面试专题-消息队列-为什么要用MQ-5

  *   06 面试专题-消息队列-为什么要用MQ-6

  *   07 面试专题-消息队列-怎样选型MQ-1

  *   08 面试专题-消息队列-怎样选型MQ-2

  *   09 面试专题-消息队列-怎样选型MQ-3

  *   10 面试专题-消息队列-RabbitMQ面试题-1

  *   11 面试专题-消息队列-RabbitMQ面试题-2

  *   12 面试专题-消息队列-RabbitMQ面试题-3

  *   13 面试专题-消息队列-RocketMQ面试题-1

  *   14 面试专题-消息队列-RocketMQ面试题-2

  *   15 面试专题-消息队列-RocketMQ面试题-3

  *   16 面试专题-消息队列-RocketMQ面试题-4

  *   17 面试专题-消息队列-RocketMQ面试题-5

*   03 NoSQL专题/

  *   01 01-Redis数据结构_01

  *   02 02-Redis数据结构_02

  *   03 03-Redis持久化

  *   04 04-Redis缓存淘汰

  *   05 05-Redis高可用_01

  *   06 06-Redis高可用_02

  *   07 07-其他

*   04 多线程专题/

  *   01 面试专题-多线程-线程的创建方式-1

  *   02 面试专题-多线程-线程池-1

  *   03 面试专题-多线程-线程池-2

  *   04 面试专题-多线程-线程池-3

  *   05 面试专题-多线程-线程池-4

  *   06 面试专题-多线程-Synchronized-1

  *   07 面试专题-多线程-Synchronized-2

  *   08 面试专题-多线程-Synchronized-3

  *   09 面试专题-多线程-Synchronized-4

  *   10 面试专题-多线程-Synchronized-5

  *   11 面试专题-多线程-多线程编程-1

  *   12 面试专题-多线程-多线程编程-2

  *   13 面试专题-多线程-多线程编程-3

  *   14 面试专题-多线程-多线程编程-4

  *   15 面试专题-多线程-CAS-1

  *   16 面试专题-多线程-CAS-2

  *   17 面试专题-多线程-AQS-1

  *   18 面试专题-多线程-AQS-2

  *   19 面试专题-多线程-AQS-3

  *   20 面试专题-多线程-Disruptor-1

  *   21 面试专题-多线程-Disruptor-2

  *   22 面试专题-多线程-JUC-1

  *   23 面试专题-多线程-JUC-2

  *   24 面试专题-多线程-JUC-3

  *   25 面试专题-多线程-JUC-4

  *   26 面试专题-多线程-JUC-5

  *   27 面试专题-多线程-JUC-6

*   05 分布式专题/

  *   01 面试专题-分布式-理论-1

  *   02 面试专题-分布式-理论-2

  *   03 面试专题-分布式-分布式锁-1

  *   04 面试专题-分布式-分布式锁-2

  *   05 面试专题-分布式-分布式锁-3

  *   06 面试专题-分布式-生成唯一主键-1

  *   07 面试专题-分布式-长短连接转换-1

  *   08 面试专题-分布式-分布式事务-1

  *   09 面试专题-分布式-分布式事务-2

  *   10 面试专题-分布式-分布式事务-3

  *   11 面试专题-分布式-分布式事务-4

  *   12 面试专题-分布式-缓存一致性-1

*   06 数据库专题/

  *   01 面试专题-数据库-三大范式-1

  *   02 面试专题-数据库-三大范式-2

  *   03 面试专题-数据库-数据库引擎-1

  *   04 面试专题-数据库-数据库优化-1

  *   05 面试专题-数据库-数据库优化-2

  *   06 面试专题-数据库-索引-1

  *   07 面试专题-数据库-索引-2

  *   08 面试专题-数据库-索引-3

  *   09 面试专题-数据库-索引-4

  *   10 面试专题-数据库-索引-5

  *   11 面试专题-数据库-索引优化-1

  *   12 面试专题-数据库-事务-1

  *   13 面试专题-数据库-事务-2

  *   14 面试专题-数据库-事务-3

  *   15 面试专题-数据库-事务-4

  *   16 面试专题-数据库-数据库锁-1

  *   17 面试专题-数据库-数据库锁-2

  *   18 面试专题-数据库-日志机制-1

  *   19 面试专题-数据库-百万数据删除-1

  *   20 面试专题-数据库-优化手段-1

  *   21 面试专题-数据库-分库分表-1

  *   22 面试专题-数据库-分库分表-2

*   07 算法专题/

  *   01 数据结构与算法基础_01

  *   02 数据结构与算法基础_02

  *   03 数据结构与算法基础_03

  *   04 数据结构与算法基础_04

  *   05 01-冒泡-选择

  *   06 02-插入-归并

  *   07 03-快排

  *   08 04-堆排序

  *   09 01-二分查找

  *   10 02-二分-链表

  *   11 03-链表

  *   12 04-二叉树

  *   13 01-LRU

  *   14 02-双指针1

  *   15 03-双指针2

  *   16 04-滑动窗口

  *   17 05-位运算

*   08 网络编程专题/

  *   01 面试专题-网络篇-请求流程-1

  *   02 面试专题-网络篇-请求流程-2

  *   03 面试专题-网络篇-请求流程-3

  *   04 面试专题-网络篇-三次握手-1

  *   05 面试专题-网络篇-四次挥手-1

  *   06 面试专题-网络篇-粘包半包-1

  *   07 面试专题-网络篇-HTTP和HTTPS的区别-1

  *   08 面试专题-网络篇-HTTP和HTTPS的区别-2

  *   09 面试专题-网络篇-RPC-1

  *   10 面试专题-网络篇-RPC-2

  *   11 面试专题-网络篇-IO模型-1

  *   12 面试专题-网络篇-同步异步-1

  *   13 面试专题-网络篇-13

*   09 JDK专题-基础篇/

  *   01 jdk面试基础篇01-String,StringBuffer,StringBuilder-01

  *   02 jdk面试基础篇01-String,StringBuffer,StringBuilder-02

  *   03 jdk面试基础篇01-String,StringBuffer,StringBuilder-03

  *   04 jdk面试基础篇02-ArrayList,LinkedList-01

  *   05 jdk面试基础篇02-ArrayList,LinkedList-02

  *   06 jdk面试基础篇02-ArrayList,LinkedList-03

  *   07 jdk面试基础篇03-HashSet,LinkedHashSet-01

  *   08 jdk面试基础篇03-HashSet,LinkedHashSet-02

  *   09 jdk面试基础篇03-HashSet,LinkedHashSet-03

  *   10 jdk面试基础篇04-HashMap,ConcurrentHashMap-01

  *   11 jdk面试基础篇04-HashMap,ConcurrentHashMap-02

  *   12 jdk面试基础篇04-HashMap,ConcurrentHashMap-03

  *   13 jdk面试基础篇05-Comparable,Comparator-01

  *   14 jdk面试基础篇05-Comparable,Comparator-02

  *   15 jdk面试基础篇06-InputStream,OutputStream-01

  *   16 jdk面试基础篇06-InputStream,OutputStream-02

  *   17 jdk面试基础篇06-InputStream,OutputStream-03

  *   18 jdk面试基础篇07-泛型K,V,T,E-01

  *   19 jdk面试基础篇07-泛型K,V,T,E-02

  *   20 jdk面试基础篇07-泛型K,V,T,E-03

  *   21 jdk面试基础篇08-Date,SimpleDateFormat,Calendar-01

  *   22 jdk面试基础篇08-Date,SimpleDateFormat,Calendar-02

  *   23 jdk面试基础篇08-Date,SimpleDateFormat,Calendar-03

  *   24 jdk面试基础篇08-Date,SimpleDateFormat,Calendar-03

*   10 JDK专题-进阶篇/

  *   01 jdk面试进阶篇01-jdk动态代理、cglib代理-01

  *   02 jdk面试进阶篇01-jdk动态代理、cglib代理-02

  *   03 jdk面试进阶篇01-jdk动态代理、cglib代理-03

  *   04 jdk面试进阶篇02-BIO、NIO、IO多路复用、AIO-01

  *   05 jdk面试进阶篇02-BIO、NIO、IO多路复用、AIO-02-同步异步阻塞非阻塞

  *   06 jdk面试进阶篇02-BIO、NIO、IO多路复用、AIO-02-区别

  *   07 jdk面试进阶篇02-BIO、NIO、IO多路复用、AIO-03

  *   08 jdk面试进阶篇03-java对象内存结构-01

  *   09 jdk面试进阶篇03-java对象内存结构-02-新生代年龄最大值

  *   10 jdk面试进阶篇03-java对象内存结构-02-对象内存结构

  *   11 jdk面试进阶篇03-java对象内存结构-02-synchronized锁信息

  *   12 jdk面试进阶篇03-java对象内存结构-03-对象访问

  *   13 jdk面试进阶篇03-java对象内存结构-03-对象是否可回收

  *   14 jdk面试进阶篇04-Java线程协同-01

  *   15 jdk面试进阶篇04-Java线程协同-02-3个线程交替打印

  *   16 jdk面试进阶篇04-Java线程协同-02-如何终止一个线程

  *   17 jdk面试进阶篇04-Java线程协同-02-3个线程交替打印

  *   18 jdk面试进阶篇04-Java线程协同-03

*   11 源码专题/

  *   01 源码面试-01-容器对象的区别

  *   02 源码面试-02-factoryBean和beanFactory区别

  *   03 源码面试-03-事务传播行为

  *   04 源码面试-04-单例bean是否线程安全

  *   05 源码面试-05-如何解决有状态bean线程安全问题

  *   06 源码面试-06-Spring拓展点(IOC流程)

  *   07 源码面试-07-Bean生命周期

  *   08 源码面试-08-循环依赖问题概览

  *   09 源码面试-09-什么是循环依赖

  *   10 源码面试-10-缓存查找顺序

  *   11 源码面试-11-为什么三级缓存要存入ObjectFactory

  *   12 源码面试-12-循环依赖经典面试

  *   13 源码面试-13-Spring事务失效情况

  *   14 源码面试-14-Bean注入容器的方式

  *   15 源码面试-15-SpringMVC父子容器

  *   16 源码面试-16-AOP实现原理和通知类型

  *   17 源码面试-17-EnableAspectJAutoProxy 的原理

  *   18 源码面试-18-AOP自动代理的实现过程

  *   19 源码面试-19-JDK动态代理和CGLIB动态代理的区别

  *   20 源码面试-20-Mybatis执行器的区别

  *   21 源码面试-21-Mybatis分页方式及分页插件原理

  *   22 源码面试-22-Mybatis插件原理

  *   23 源码面试-23-MyBatis中的Cachekey如何保证的唯一

  *   24 源码面试-24-MyBatis的缓存机制

  *   25 源码面试-25-SpringBoot自动配置

  *   26 源码面试-26-HashMap的底层数据结构

  *   27 源码面试-27-hashmap解决哈希冲突,为什么不直接用红黑树

  *   28 源码面试-28-默认加载因子为什么是0.75

  *   29 源码面试-29-HahsMap数组长度为什么是2的幂次方

  *   30 源码面试-30-HashMap扩容机制

  *   31 源码面试-31-ConcurrentHashMap线程安全&扩容&并发度

  *   32 源码面试-32-ConcurrentHashMap1.8如何保证线程安全

*   12 分布式框架专题/

  *   01 分布式面试-01-架构模式1

  *   02 分布式面试-02-架构模式2

  *   03 分布式面试-03-进程通信1

  *   04 分布式面试-04-进程通信2

  *   05 分布式面试-05-进程通信-socket

  *   06 分布式面试-06-TCP-连接建立

  *   07 分布式面试-07-TCP-连接断开

  *   08 分布式面试-08-TCP高级特性1

  *   09 分布式面试-09-TCP高级特性2

  *   10 分布式面试-10-IO模型

  *   11 分布式面试-11-epoll

  *   12 分布式面试-12-ET和LT

  *   13 分布式面试-13-JAVA中的IO和线程模型

  *   14 分布式面试-14-协议设计

  *   15 分布式面试-15-序列化

  *   16 分布式面试-16-RPC流程

  *   17 分布式面试-17-服务发现

  *   18 分布式面试-18-健康监测

  *   19 分布式面试-19-服务路由

  *   20 分布式面试-20-负载均衡和集群容错

  *   21 分布式面试-21-优雅启停

  *   22 分布式面试-22-dubbo-spi

*   13 项目管理专题/

  *   01 项目构建-1-项目为什么选用Maven进行构建

  *   02 项目构建-2-Maven仓库分哪几种

  *   03 项目构建-3-什么是Maven私服

  *   04 项目构建-4-Maven生命周期有那些

  *   05 项目构建-5-Maven坐标含义

  *   06 项目构建-6-Maven传递依赖原则

  *   07 项目构建-7-Maven如何处理依赖冲突

  *   08 项目构建-8-Maven常见的依赖范围有哪些

  *   09 项目构建-9-Maven项目结构约定是什么

  *   10 项目构建-10-Maven版本是如何定义的

  *   11 项目构建-11-Maven中的dependencies和dependencyManagement有什么区别

  *   12 版本控制-1-代码版本管理为什么要用git

  *   13 版本控制-2-Git 工作区-暂存区和版本库

  *   14 版本控制-3-git中常用的命令有哪些

  *   15 版本控制-4-为什么 gitignore 里的规则却没有效果

  *   16 版本控制-5-如何删除GitHub上误提交文件

  *   17 版本控制-6-git fetch与git pull的区别

  *   18 版本控制-7-git reset 时 soft-mixed和hard的区别

  *   19 版本控制-8-代码出现bug,是如何解决的

  *   20 版本控制-9-从拉分支到上线完成,是如何管理分支的

  *   21 版本控制-10-Git中你是如何解决代码冲突的

  *   22 工程管理-1-公司项目是如何划分的

  *   23 工程管理-2-项目中的日志如何管理的

  *   24 工程管理-3-接口如何管理的

  *   25 工程管理-4-服务指标是如何监控

  *   26 工程管理-5-跨部门协同开发

  *   27 工程管理-6-文档管理

  *   28 工程管理-7-项目灰度测试

  *   29 工程管理-8-代码审查及Review

  *   30 开发流程-1-项目研发流程

  *   31 开发流程-2-需求迭代排期

  *   32 开发流程-3-功能迭代管理

  *   33 开发流程-4-功能升级方式及时间

  *   34 开发流程-5-上线-功能数据汇报