高频笔试/面试题
【Java 基础】
• HashMap 1.7 vs 1.8 差异、扩容死锁问题
• synchronized 升级流程(无锁→偏向→轻量→重量)
• ThreadLocal 内存泄漏场景与解决方案
• 线程池七大参数及拒绝策略自定义
【JVM & 性能】
• G1 与 ZGC 对比;线上 CPU 飙高如何排查(top → jstack → arthas)
• 一次 Full GC 频繁触发,如何定位泄漏点(jmap + MAT)
【Spring / MyBatis】
• Spring Boot 自动装配原理(@EnableAutoConfiguration + spring.factories)
• MyBatis 一级、二级缓存失效场景
• @Transactional 失效的 5 种常见原因
【中间件 / 分布式】
• Redis 缓存雪崩、穿透、击穿的防护方案
• 实现分布式锁:SETNX + 过期时间 vs Redisson
• RocketMQ 如何保证顺序消息与幂等消费
• MySQL 与 ES 数据一致性(Canal / Binlog 异步)
【项目深挖】
• 日 500 万次搜索,如何设计商品检索(倒排索引 + 分片 + 热点缓存)
• 秒杀库存扣减:Redis 预减 + 消息队列削峰 + 最终一致性
• 分库分表后分页查询怎么做(ES + 宽表 + 游标)
【场景题】
• 突发流量导致订单接口超时,如何 10 分钟内止损?
• 商家批量导入 10 万 SKU,如何保证不重复、不阻塞?
-
Java基础:
- JDK和JRE的区别
- ==和equals的区别
- final在java中的作用
- String类的特点及常用方法3132
-
集合框架:
- HashMap实现原理(数组+链表/红黑树)、扩容机制
- ArrayList与LinkedList应用场景差异
- ConcurrentHashMap的分段锁/CAS优化34
-
多线程:
- 线程生命周期及状态转换
- synchronized锁升级过程
- volatile关键字的作用
- 线程池参数(corePoolSize, maxPoolSize, workQueue)及拒绝策略34
-
JVM:
- 内存模型:堆(Young/Old)、栈、方法区、元空间
- 垃圾回收算法:标记清除、复制、标记整理
- 类加载机制与双亲委派模型34
框架相关问题
-
Spring:
- IOC容器:Bean生命周期、作用域、循环依赖解决
- AOP实现原理(动态代理:JDK Proxy vs CGLIB)
- 事务传播机制34
-
Spring Boot:
- 自动配置原理(@EnableAutoConfiguration + spring.factories)
- Starter机制34
-
MyBatis:
- #{}与${}防注入区别
- 一级/二级缓存34
数据库与中间件
-
MySQL:
- 索引优化:EXPLAIN执行计划解读、索引失效场景
- 事务隔离级别:脏读、不可重复读、幻读及解决方案34
-
Redis:
- 数据类型应用场景(String缓存、Hash购物车等)
- 持久化机制(RDB快照 vs AOF日志)
- 缓存穿透(布隆过滤器)、雪崩、击穿解决方案34
面试建议
-
简历突出高并发、高可用关键词;准备 2 个实战调优案例.
项目实战:
1、如何防止库存超卖?(悲观乐观锁、分布式锁)