面经-2
- 时间
- 2026-08
- 来源
- 牛客网
《面试题目》
- 在秒搭平台中 Spring Session + Redis 实现会话水平拓展,在 Redis 做持久化机制吗?
- 在 Redis 存储会话历史记录,这个量会不会很大?Redis 能不能存的下?(这里面试官对我的表述产生了误解,其实 Redis 仅作为会话历史的临时存储,最终会持久化到 MySQL
- Redis 的持久化机制有了解吗?
- RPC 框架有接触过吗?
- 多路复用这个概念了解吗?底层是个什么样的过程?
- Java多线程相关
- Java 创建 Thread 对象 t,连续执行两次t.start() 会发生什么?为什么?
- 线程池是如何实现线程复用的?
- 项目中使用虚拟线程和直接使用平台线程有什么区别?
- 线程池的核心参数一般怎么设置?
- IO密集型任务和CPU密集型任务会影响什么地方技术的选型?
- 数据库相关
- A,B,C)构成的联合索引,查询条件为WHERE B = 1 && C = 2,会走索引吗?
- 请介绍常见的几种索引失效场景。
- MySQL 中 INSERT 语句的执行流程。
- MySQL的日志文件。
- 三个 log 文件分别起什么作用?
- 某大流量明星发帖,会对数据库产生巨大压力?如何解决或优化?
《参考解析》
- Redis常用于缓存、分布式锁和计数。缓存与数据库更新通常采用“先写数据库、再删除缓存”,并通过重试、延时双删或消息补偿处理删除失败。
- MySQL索引通常使用B+树,叶子节点按顺序连接,适合范围查询;设计索引时结合选择性、最左匹配原则和执行计划,避免无效索引与回表开销。
- 并发问题应先明确共享状态和一致性边界,再选择锁、CAS或队列。线程池需要根据任务是CPU密集还是IO密集设置核心线程数、队列容量和拒绝策略,并监控活跃数与队列长度。