一、Java 语言 & JVM(必问)
1.1 语言基础
| 考点 | 高频题 | 答题思路与示范答案 |
|---|---|---|
| 集合框架 | HashMap 底层原理(JDK7 vs JDK8)【JCF-01】 | 数组+链表→红黑树;1.8 尾插、扩容 2 次幂、负载因子 0.75;线程不安全 → 引出 ConcurrentHashMap |
| fail-fast | fail-fast 与 fail-safe 区别【JCF-02】 | 迭代器内部 expectedModCount 与 modCount 对比;CopyOnWriteArrayList 快照机制 |
| 泛型 | 类型擦除带来的坑【LANG-03】 | 编译期擦除到 Object,运行时无泛型信息 → 无法 new T(); instanceof T 失败 |
1.2 并发编程(JUC)
| 考点 | 高频题 | 答题思路 |
|---|---|---|
| 线程池 | ThreadPoolExecutor 七大参数【JUC-05】 | 核心、最大、空闲时间、队列、拒绝策略、线程工厂、handler;结合 Executors 的坑 |
| AQS | CountDownLatch / CyclicBarrier / Semaphore 区别【JUC-07】 | 一个阻塞等待 N,一个可复用重置,一个限流;源码:AQS+state 变量 |
| 锁升级 | synchronized 锁升级过程【JUC-12】 | 无锁→偏向锁→轻量级锁→重量级锁;对象头 mark word 变化;JVM 参数 -XX:BiasedLockingStartupDelay=0 |
1.3 JVM & GC
| 考点 | 高频题 | 答题思路 |
|---|---|---|
| 内存模型 | JVM 内存区域划分【JVM-01】 | 程序计数器、虚拟机栈、本地方法栈、堆、方法区(MetaSpace);直接内存 |
| 垃圾收集器 | G1 与 ZGC 差异【JVM-05】 | G1 Region、Remembered Set、SATB;ZGC 染色指针、读屏障、并发标记、并发转移 |
| 调优实战 | 频繁 FullGC 如何排查【JVM-08】 | top → jmap -dump → MAT / VisualVM → 对象分布 → 代码定位 → 调整新生代/老年代比例 |
二、数据存储
2.1 MySQL
| 考点 | 高频题 | 答题思路 |
|---|---|---|
| 索引 | B+ 树 vs Hash 索引【SQL-02】 | B+ 范围、排序、最左前缀;Hash 仅等值;InnoDB 自适应哈希 |
| 事务隔离 | RR 如何避免幻读【SQL-05】 | MVCC + Next-key Lock;快照读 vs 当前读 |
| 调优 | 慢查询如何优化【SQL-09】 | explain → type 从 ALL→range→ref;加联合索引、覆盖索引、避免回表 |
2.2 Redis
| 考点 | 高频题 | 答题思路 |
|---|---|---|
| 数据结构 | SDS、跳表实现【RED-01】 | O(1) 获取长度;跳表多层索引;ZSET 同时用跳表+dict |
| 缓存问题 | 缓存雪崩/穿透/击穿【RED-04】 | 雪崩:随机过期;穿透:布隆过滤器;击穿:互斥锁/热点 key 永不过期 |
| 高可用 | Redis Cluster 扩容流程【RED-07】 | 槽迁移;meet、replicate、migrate;ASK 重定向 |
2.3 消息队列
| 考点 | 高频题 | 答题思路 |
|---|---|---|
| RocketMQ | 如何保证消息不丢【MQ-03】 | 同步双写/异步刷盘;Broker 配置 flushDiskType=SYNC_FLUSH;消费者 offset 持久化 |
| Kafka | 高水位与 leader epoch【MQ-06】 | HW 保证副本一致性;leader epoch 解决数据丢失;ISR 动态伸缩 |
三、框架 & 中间件
3.1 Spring
| 考点 | 高频题 | 答题思路 |
|---|---|---|
| IOC 容器 | Bean 生命周期【SPR-01】 | 实例化→属性赋值→Aware→BeanPostProcessor→init→destroy |
| AOP | JDK/CGLIB 动态代理区别【SPR-03】 | JDK 基于接口;CGLIB 字节码继承;Spring 3.2 默认 JDK→CGLIB |
| 事务 | @Transactional 失效场景【SPR-07】 | 非 public 方法、同类内部调用、异常被 catch、数据库引擎不支持事务 |
3.2 RPC & 微服务
| 考点 | 高频题 | 答题思路 |
|---|---|---|
| Dubbo | 调用链路 filter 顺序【RPC-02】 | ProtocolFilterWrapper 构建责任链;ConsumerContext→Monitor→Future→Timeout |
| SpringCloud | Hystrix 熔断器状态机【RPC-05】 | Closed→Open→Half-Open;滑动窗口 bucket;异常比例阈值 |
| 注册中心 | Nacos CP/AP 模式切换【RPC-08】 | Distro 协议 AP;Raft 协议 CP;切换参数 nacos.core.protocol=raft |
3.3 分布式基础
| 考点 | 高频题 | 答题思路 |
|---|---|---|
| 分布式锁 | RedLock 算法的争议【DIST-01】 | 过半节点加锁;时钟跳跃问题;Redisson 看门狗机制 |
| 限流 | Sentinel 滑动窗口 vs 漏桶【DIST-04】 | 滑动窗口 QPS 实时;漏桶匀速;令牌桶突发流量支持 |
| 一致性 | CAP 与 BASE 理论【DIST-07】 | CP:ZooKeeper;AP:Eureka;BASE:最终一致性+软状态 |
四、设计模式 & 工程化
| 考点 | 高频题 | 答题思路 |
|---|---|---|
| 单例模式 | 为什么用枚举【DP-01】 | 线程安全、防反射、防反序列化破坏 |
| 工厂模式 | Spring BeanFactory 与 FactoryBean 区别【DP-03】 | BF 容器;FactoryBean 自定义创建逻辑 |
| DevOps | 灰度发布的三种实现【OPS-02】 | 按用户白名单、按流量权重、按地域/标签;网关层、注册中心、MQ 延迟消息 |
五、场景题 & 架构设计
| 场景 | 高频题 | 答题套路 |
|---|---|---|
| 秒杀 | 如何设计 10wQPS 秒杀【SCENE-01】 | 1) 静态化 CDN + 验证码 2) 令牌桶限流 3) 库存预热到 Redis 4) 队列异步扣减 5) 兜底方案:本地缓存 + 熔断 |
| 分布式事务 | 跨行转账最终一致性【SCENE-05】 | 1) TCC try-confirm-cancel 2) 可靠消息最终一致(本地事务表 + MQ)3) Saga 状态机 |
| 海量数据 | 1 亿用户签到系统【SCENE-08】 | BitMap(365MB)→Redis String;按天 key;Lua 脚本;异步刷 DB;冷热分离 |
六、行为问题(HR)
| 问题 | STAR 模板 |
|---|---|
| 最困难的项目 | Situation 200 字 → Task 100 字 → Action 300 字 → Result 100 字 |
| 职业规划 | 3 年技术深耕→5 年架构→10 年技术管理/技术专家 |
七、30天滚动背诵计划
| 周次 | 每日任务 | 题量 | 工具 |
|---|---|---|---|
| 第 1 周 | Java 基础+JVM | 2 题/天 | Anki 卡片 |
| 第 2 周 | 并发+MySQL | 3 题/天 | 手写脑图 |
| 第 3 周 | Redis+MQ+Spring | 3 题/天 | 录音复述 |
| 第 4 周 | 微服务+分布式 | 2 题/天 | 白板演练 |
| 第 5 周 | 场景题+设计模式 | 1 大题/天 | 模拟面试 |
八、思维导图

2133

被折叠的 条评论
为什么被折叠?



