超星集团java一面面经

超星集团 · Java后端开发 · 一面 · 2026-03

面试题目

一、基础与中间件

  1. 线程池的参数一般怎么设置?依据是什么?
  2. G1 垃圾回收器的设计原理是什么?
  3. MySQL 可重复读(RR)下如何避免幻读?
  4. SQL 走了索引还是很慢,怎么优化?
  5. 如何保证缓存(Redis)和数据库的一致性?
  6. Redis 缓存雪崩怎么解决?
  7. Kafka 如何保证消息不丢失、不重复消费?
  8. Spring AOP 如何实现方法耗时统计?

二、项目与实习 9. 请讲一段你实习中做得比较关键的项目。 10. 项目中有用到事务吗?如何保证一致性?

三、AI 与开放设计 11. MCP 是什么? 12. 如果让你用 AI 优化教务系统,你会怎么做?

四、行为与规划 13. 你未来的职业规划是什么? 14. 你有什么想问我们的?


参考解析

  1. 线程池: IO密集型建议核心线程设为2N,CPU密集型为N+1。需依据任务等待时间与计算时间比例进行压测调整。
  2. G1: 核心在于Region分区回收,将堆内存划分为多个小区域,通过Remembered Set记录跨区引用,使用Mixed GC回收垃圾比例最高的Region。
  3. MySQL幻读: RR级别下,InnoDB使用Next-Key Lock(记录锁+间隙锁)锁定范围,防止其他事务在间隙插入数据。
  4. SQL优化: 先通过EXPLAIN分析执行计划;排查索引失效(隐式转换、函数操作);大数据量下考虑分库分表或ES检索;引入缓存降低DB压力。
  5. 一致性: 推荐“Cache-Aside”策略:更新DB后删除缓存。若追求强一致性需引入分布式锁或二次确认机制。
  6. 缓存雪崩: 设置随机过期时间分散压力;热点Key失效时采用互斥锁或逻辑过期,仅一个线程重建缓存。
  7. Kafka: 不丢消息需设置acks=all及重试机制;不重复消费需在消费端利用数据库唯一索引或Redis实现幂等处理。
  8. Spring AOP: 定义@Around增强,在ProceedingJoinPoint执行前后调用System.currentTimeMillis()计算差值即可统计。