🔥 一、Java核心与JVM高频题
-
HashMap vs ConcurrentHashMap
-
HashMap :非线程安全,JDK1.8后采用数组+链表/红黑树,扩容可能死循环(JDK1.7)134。
-
ConcurrentHashMap :JDK1.8改用CAS+synchronized优化锁粒度,分段锁淘汰134。
-
-
synchronized vs ReentrantLock
-
synchronized:JVM内置锁,非公平锁,不可中断134。
-
ReentrantLock:支持公平锁、可中断、Condition条件队列134。
-
-
volatile的作用与局限性
- 保证可见性 (强制主存读取)和有序性 (禁止指令重排序),但不保证原子性 (如
i++
需AtomicInteger
)134。
- 保证可见性 (强制主存读取)和有序性 (禁止指令重排序),但不保证原子性 (如
-
JVM内存模型
-
线程私有:虚拟机栈、本地方法栈、程序计数器134。
-
线程共享:堆、方法区(JDK1.8后为元空间)134。
-
-
G1垃圾回收器特点
- Region分区 、可预测停顿、适合大内存应用134。
-
OOM排查方法
jmap -dump
导出堆内存 → MAT分析内存泄漏 →jstack
查死锁14。
-
类加载机制
- 双亲委派模型 (
BootStrap → Extension → Application
),打破方式(如Tomcat的WebAppClassLoader
)14。
- 双亲委派模型 (
⚡ 二、并发编程实战
-
线程池参数设置
-
corePoolSize
(核心线程数)、maxPoolSize
(最大线程数)、workQueue
(任务队列)、拒绝策略134。 -
IO密集型 :
CPU核心数 * 2
;CPU密集型 :CPU核心数 + 1
134。
-
-
AQS(AbstractQueuedSynchronizer)原理
- 核心:
state
(资源状态)+CLH队列
(线程排队),实现类如ReentrantLock
、CountDownLatch
134。
- 核心:
-
分布式锁方案
- Redis (
SETNX + RedLock
)、ZooKeeper (临时节点 +Watch
机制)134。
- Redis (
🌐 三、高并发与分布式系统
-
**如何设计一个百万级QPS的秒杀系统?**357
-
核心问题:超卖、库存一致性、高并发请求14。
-
解决方案:
-
分层削峰 :
Nginx限流
→Redis预减库存
(Lua脚本保证原子性)→消息队列(Kafka/RocketMQ)异步处理
134。 -
热点隔离 :独立
Redis
集群处理秒杀商品134。 -
风控防刷:IP限流、验证码、用户行为分析4。
-
-
-
分布式事务解决方案357
-
TCC模式 (
Try-Confirm-Cancel
):适用于金融支付系统14。 -
SAGA长事务:适用于补偿机制较强的业务14。
-
本地消息表:最终一致性方案,适用于订单系统14。
-
-
CAP理论应用
- 支付系统侧重CP (一致性+分区容错性),社交系统可能选择AP(高可用性)35。
-
缓存一致性方案357
-
延迟双删:先删缓存 → 更新DB → 再删缓存134。
-
订阅Binlog (
Canal
监听MySQL变更)134。
-
-
十亿级数据分页优化357
-
ES
search_after
(深度分页)134。 -
覆盖索引 + 禁止跳页 (
LIMIT 10000, 10
优化)134。
-
💾 四、数据库与缓存优化
-
MySQL索引失效场景357
LIKE '%xx'
、函数计算 、OR
条件、隐式类型转换134。
-
MVCC实现原理357
ReadView
+Undo Log
版本链,解决不可重复读 & 幻读134。
-
缓存雪崩预防357
- 随机过期时间 + 多级缓存 (本地→
Redis→DB
)+ 熔断降级 (Sentinel
)134。
- 随机过期时间 + 多级缓存 (本地→
-
热点Key探测
redis-cli --hotkeys --pattern "user:*"
14。
🏗️ 五、微服务与系统设计
-
Spring Boot自动配置原理
@EnableAutoConfiguration
+META-INF/spring.factories
+ 条件注解 (@Conditional
)134。
-
服务熔断策略
Sentinel
动态调整阈值(基于慢调用比例触发降级)134。
-
全链路灰度发布
- 流量标记 (
Header
传递)+ Service Mesh (Istio
动态路由)134。
- 流量标记 (
-
设计一个高可用支付系统35
-
一致性:TCC事务 + 对账机制35。
-
容灾:同城多活(数据同步:MySQL Binlog + Kafka)35。
-

