面灵AI
时间
2026-08
来源
牛客网

《面试题目》

  1. 在秒搭平台中 Spring Session + Redis 实现会话水平拓展,在 Redis 做持久化机制吗?
  2. 在 Redis 存储会话历史记录,这个量会不会很大?Redis 能不能存的下?(这里面试官对我的表述产生了误解,其实 Redis 仅作为会话历史的临时存储,最终会持久化到 MySQL
  3. Redis 的持久化机制有了解吗?
  4. RPC 框架有接触过吗?
  5. 多路复用这个概念了解吗?底层是个什么样的过程?
  6. Java多线程相关
  7. Java 创建 Thread 对象 t,连续执行两次t.start() 会发生什么?为什么?
  8. 线程池是如何实现线程复用的?
  9. 项目中使用虚拟线程和直接使用平台线程有什么区别?
  10. 线程池的核心参数一般怎么设置?
  11. IO密集型任务和CPU密集型任务会影响什么地方技术的选型?
  12. 数据库相关
  13. A,B,C)构成的联合索引,查询条件为WHERE B = 1 && C = 2,会走索引吗?
  14. 请介绍常见的几种索引失效场景。
  15. MySQL 中 INSERT 语句的执行流程。
  16. MySQL的日志文件。
  17. 三个 log 文件分别起什么作用?
  18. 某大流量明星发帖,会对数据库产生巨大压力?如何解决或优化?

《参考解析》

  1. Redis常用于缓存、分布式锁和计数。缓存与数据库更新通常采用“先写数据库、再删除缓存”,并通过重试、延时双删或消息补偿处理删除失败。
  2. MySQL索引通常使用B+树,叶子节点按顺序连接,适合范围查询;设计索引时结合选择性、最左匹配原则和执行计划,避免无效索引与回表开销。
  3. 并发问题应先明确共享状态和一致性边界,再选择锁、CAS或队列。线程池需要根据任务是CPU密集还是IO密集设置核心线程数、队列容量和拒绝策略,并监控活跃数与队列长度。