java面试八股 重点篇

数字马力后端开发(郑州)一面突击复习清单

面试时间:12月5日
背景说明:因国考时间紧张,Java 八股仅系统复习了 Redis 和 MySQL。本清单聚焦校招一面常见、基础、高频问题,按模块分类整理,优先掌握加粗项。


一、Redis 篇

  1. 缓存三兄弟问题是什么?分别如何解决?
    • 缓存穿透、缓存击穿、缓存雪崩
  2. Redis 持久化机制有哪些?RDB 和 AOF 的区别?
  3. 如何保证 Redis 与 MySQL 的双写一致性?
  4. Redis 分布式锁如何实现?需要注意哪些问题?(如锁过期、可重入)
  5. Redis 为什么执行速度快?
  6. Redis 和 MySQL 的核心区别是什么?适用场景有何不同?
  7. Redis 是单线程的吗?为什么还能这么快?

二、MySQL 篇

  1. 如何定位慢查询?(开启慢日志、使用 EXPLAIN)
  2. 常见的 SQL 优化手段有哪些?
  3. MySQL 索引的底层数据结构是什么?为什么用 B+ 树?
  4. 哪些情况会导致索引失效?
  5. 联合索引 (a, b, c) 查询 a=1 AND c=3 能走索引吗?
  6. 什么是覆盖索引?它有什么好处?

三、框架篇(Spring / Spring Boot / MyBatis)

  1. Spring 是如何解决循环依赖的?三级缓存分别是什么?
  2. Spring Boot 自动装配的原理是什么?(@EnableAutoConfiguration + spring.factories)
  3. MyBatis 如何防止 SQL 注入?#{} 和 ${} 的区别?
  4. MyBatis-Plus 相比原生 MyBatis 有哪些优势?常用注解有哪些?
  5. Spring、Spring Boot、Spring Cloud 三者有什么区别?
  6. Spring Cloud 和 Spring MVC 的定位有何不同?
  7. Spring Boot 的启动流程是怎样的?SpringApplication.run() 做了哪些事?
  8. MyBatis 的一级缓存和二级缓存有什么区别?默认开启吗?存在什么问题?
  9. @Autowired 和 @Resource 的区别是什么?

四、消息中间件篇

  1. Kafka / RabbitMQ 如何保证消息不丢失?(从生产端、中间件、消费端三方面回答)
  2. RabbitMQ、Kafka、MQTT、Redis Pub/Sub 的发布/订阅机制有什么区别?(从可靠性、持久化、适用场景对比)
  3. Kafka 为什么吞吐量高?核心设计思想是什么?

五、Java 基础篇

集合

  1. HashMap 的底层结构是什么?JDK 8 做了哪些优化?
  2. HashMap 默认初始容量和负载因子是多少?
  3. ConcurrentHashMap 是如何保证线程安全的?

并发编程

  1. 进程和线程的区别是什么?
  2. 并发和并行的区别?
  3. 死锁产生的四个必要条件是什么?如何避免?
  4. 什么是线程安全?如何实现?
  5. 线程池的核心参数有哪些?拒绝策略有哪几种?
  6. corePoolSize=2, maxPoolSize=4, queue=100,提交5个任务会怎么执行?

JVM

  1. JVM 内存结构包括哪些区域?
  2. 什么是类加载机制?什么是双亲委派模型?
  3. 常见的垃圾回收算法有哪些?新生代和老年代分别用什么?
  4. Minor GC 和 Full GC 的触发条件是什么?

六、企业场景题(系统设计简答)

问题:一套系统同时负责很多地方的摄像机接入,压力大,如何解决?

思考方向:

    • 使用消息队列(如 Kafka)削峰填谷
    • 视频/图片文件存储到对象存储(OSS/MinIO),数据库只存 URL
    • 设备状态信息缓存到 Redis,减少数据库压力
    • 服务部署集群 + Nginx 负载均衡
    • 数据库读写分离、分库分表(如 ShardingSphere)
posted @ 2025-12-03 17:05  财神给你送元宝  阅读(1)  评论(0)    收藏  举报