🚀 前言:为什么要写这个专栏?
无论是校招、社招还是跳槽,Java 面试始终绕不开三大核心:
- 知识体系是否完整?
- 理解是否深入?
- 能否用底层原理解释现象?
但现实情况是:
- 大部分人只会背八股文
- 很多知识点只停留在表层定义
- 很难真正把"原理 → 代码 → 实战"串起来
因此,我决定系统整理出一套 《Java 面试 100 题深度解析》 ,
从基础到底层,从概念到源码,从现象到原理,
带你完整构建一份"可用于真实面试的 Java 核心能力体系"。
📌 专栏目标(非常重要)
这个专栏不是简单的八股文合集。
每一道题都会包含:
- ✦ 原理深度解析
- ✦ 源码级理解(必要时贴源码)
- ✦ 真实面试官追问
- ✦ 易错点 / 易混点
- ✦ 场景化示例
让你不仅能背,还能真正理解。
不仅能答,还能答得专业、有说服力。
👇 这个专栏适合谁?
✔ 即将面试的 Java 开发者(校招/社招)
✔ 想补齐 Java 技术体系的同学
✔ 想系统掌握并发、JVM、集合底层原理的人
✔ 想提升底层理解能力的在职程序员
✔ 计算机专业学生
如果你想构建一个"真正扎实的 Java 技术体系",这里适合你。
🎯 专栏共 20 篇,100 道高频 + 高质量题目
每篇 5 题,逐步深入。
下面是完整目录(可作为收藏参考)。
🧩 Part 1:Java 基础与集合(第 1~7 篇)
第 1 篇:Java 基础核心(5 题)
- 重载 vs 重写的底层区别
- 为什么 equals 必须重写 hashCode?
- String 为什么不可变?
- new String("abc") 创建几个对象?
- Integer 缓存机制与自动装箱原理
第 2 篇:StringBuilder、final、类加载机制(5 题)
- final 的底层含义是什么?
- 为什么 StringBuilder 不是线程安全?
- 字符串拼接为什么效率不一样?
- 类加载的双亲委派机制
- 运行时常量池 vs 静态常量池
第 3 篇:ArrayList、LinkedList 底层(5 题)
- ArrayList 扩容机制
- LinkedList 底层是怎么实现的?
- 随机访问为何 ArrayList 更快?
- 为什么不推荐使用 Vector?
- 迭代器 fail-fast 原理
第 4 篇:HashMap 深度解析(5 题)
- 1.7 vs 1.8 底层差异
- 为什么要引入红黑树?
- 扩容时节点如何重新分布?
- HashMap 为什么不是线程安全?
- 扰动函数(hash)如何工作?
第 5 篇:ConcurrentHashMap(5 题)
- 1.7 分段锁原理
- 1.8 CAS + synchronized 实现
- get 操作为何无锁?
- put 流程
- size 为何不准确?
第 6 篇:BlockingQueue(5 题)
- ArrayBlockingQueue vs LinkedBlockingQueue
- 生产者消费者模型
- put/take 的锁语义
- 超时等待机制
- 无界队列隐患
第 7 篇:TreeMap、LinkedHashMap、WeakHashMap(5 题)
- TreeMap 有序性来源
- compareTo 冲突问题
- LinkedHashMap 如何实现 LRU?
- WeakHashMap 弱键原理
- LRU 的三种实现方式
🧩 Part 2:多线程与并发(第 8~13 篇)
第 8 篇:线程基础(5 题)
- 创建线程的三种方式
- 线程的六种状态
- start vs run 区别
- 线程上下文切换是什么?
- 守护线程和用户线程区别
第 9 篇:synchronized(5 题)
- 对象头与 MarkWord
- 锁升级流程
- synchronized 可重入性
- 偏向锁撤销过程
- 锁消除、锁粗化
第 10 篇:volatile(5 题)
- 防止指令重排原理
- 可见性保证
- volatile 不能保证原子性
- DCL 为什么必须加 volatile?
- happens-before 规则
第 11 篇:CAS / Atomic / Unsafe(5 题)
- CAS 原理
- ABA 问题
- AtomicInteger 为什么能原子?
- LongAdder 更快原因
- Unsafe 的能力与风险
第 12 篇:ReentrantLock & Condition(5 题)
- 公平锁 vs 非公平锁
- Condition 原理
- AQS 获取与释放流程
- ReadWriteLock 读写分离机制
- 锁降级
第 13 篇:线程池(5 题)
- ThreadPoolExecutor 7 个关键参数
- 为什么不推荐 Executors?
- 拒绝策略
- 队列大小策略
- 核心线程 vs 最大线程
🧩 Part 3:JVM(第 14~16 篇)
第 14 篇:JVM 内存模型(5 题)
- JVM 运行时数据区
- 方法区 vs 元空间
- 对象如何分配?
- TLAB 原理
- Escape Analysis(逃逸分析)
第 15 篇:GC 垃圾回收器(5 题)
- CMS 原理与缺陷
- G1 Mixed GC
- ZGC 如何实现低延迟?
- GC Roots
- Minor/Full GC 触发条件
第 16 篇:类加载机制(5 题)
- 类加载五大阶段
- 双亲委派细节
- 如何破坏双亲委派?
- 自定义 ClassLoader 场景
- 类卸载机制
🧩 Part 4:数据库 & Redis(第 17~19 篇)
第 17 篇:MySQL(5 题)
- 为什么用 B+Tree?
- 聚簇索引 vs 非聚簇索引
- 覆盖索引
- 回表原理
- 索引失效的场景
第 18 篇:事务、隔离级别、MVCC(5 题)
- 四种隔离级别
- 脏读、不可重复读、幻读
- MVCC 如何实现?
- undo log 与 read view
- InnoDB 为什么能避免幻读?
第 19 篇:Redis(5 题)
- 五大数据结构
- 为什么 Redis 快?
- RDB vs AOF
- 缓存穿透、击穿、雪崩
- 布隆过滤器
🧩 Part 5:微服务 & 手写题(第 20 篇)
第 20 篇:微服务 + 手写代码(5 题)
- Nacos vs Eureka
- 网关的作用
- 如何设计幂等性?
- 分布式锁如何实现?
- 手写 LRU / Singleton / 线程安全计数器
📅 更新频率
每周更新 2 篇 (视情况可能提前更新),
10 周完成完整 100 题讲解。
⭐ 最后
如果你想:
- 系统补齐 Java 面试知识体系
- 真正理解底层原理,而不是背答案
- 在面试中比别人更专业
欢迎收藏本专栏,也欢迎持续关注后续更新。