基础
String的不变性如何理解
- 实现
String的equals方法
StringBuilder和StringBuffer,哪个是线程安全的,如何实现线程安全的?
Long和Integer的缓冲机制
- 自动拆箱/自动装箱
volatile修饰有什么用
- 反射
集合类
HashMap的源码实现(1.7/1.8都要看,差别比较)
HashMap的put方法、扩容方法
HashMap的初始容量为什么要是2的幂?
HashMap如何解决哈希冲突?
ConcunrrentHashMap的源码实现(1.7/1.8都要看,同时要跟HashMap比较)
- 快速失败/安全失败
ArrayList的源码分析,重要方法的实现步骤
LinkedList的源码分析,重要方法的实现步骤
并发
- 乐观锁与悲观锁的区别
Java中如何实现乐观锁/悲观锁?
CAS实现
ABA问题如何解决?
AQS
CountDownLatch、CyclicBarrier、Semaphore
ThreadLocal
ReentrantLock底层实现
synchronized原理
- 锁优化
线程池
- 如何实现一个线程池?(也就是线程池底层是如何实现的)
- 核心线程数、最大线程数的区别
- 线程池的拒绝策略
JVM
JAVA运行时数据区如何划分?
- 双亲委派模型
- 类加载机制
- 垃圾回收算法有哪些?
- 垃圾回收器有哪些?
去哪找答案?
拓展
Spring
IOC、AOP原理
Bean的创建方式、生命周期
- Spring 框架中用到了哪些设计模式
- 事务的实现方式和实现原理
分布式
CAP原理和BASE理论
- 分布式一致性算法(
Raft、Paxos等)
- 分布式事务
- 本地消息表
- 分布式锁






Loading Comments...