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

《面试题目》

  1. 时间:8月19日(复盘
  2. 公司:作业帮
  3. 批次:秋招
  4. 形式:一面,时长约50分钟
  5. 用户下单后,Redis里怎么避免订单重复占用库存?
  6. 数据库慢查询一般按哪三步去定位?
  7. 事务里为什么@Transactional有时不回滚?
  8. MQ消息积压,消费者挂掉后如何保证幂等?
  9. JVM老年代持续增长,先查哪两块指标?
  10. 两个有序数组找第K大,不能直接暴力合并。
  11. 第三题我被追问了一下异常回滚边界,确实卡了2分钟;后来补了“传播级别和手工捕获点”这层。
  12. MQ那题我先说幂等表,面试官又问“抖动时重试上限”,改成状态机+死信队列后算是说清了。

《参考解析》

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