面灵AI

美菜网 Java 后端一面复盘

时间
2026-08
来源
牛客网

《面试题目》

  1. 时间:8月14日
  2. 公司:美菜网
  3. 形式:一面,45分
  4. 自我介绍后开始问
  5. 订单查询怎么避免慢查询?
  6. 退款成功但订单状态没变怎么排查?
  7. 重复回调怎么保证幂等?
  8. 对账金额不一致怎么处理?
  9. Spring事务在哪些情况下会失效?
  10. MySQL联合索引怎么判断是否生效?
  11. Redis锁续期、误删怎么处理?
  12. MQ重复消费、丢消息怎么兜底?
  13. JVM内存突然上涨怎么定位?
  14. 手写LRU缓存。
  15. 支付几题追得比较细。我在对账补偿上刚开始只说了重试,被问到会不会重复退款,才补充先查渠道真实状态、复用原退款单号,再按状态机补偿。算法写出来了,边界处理改了一次。最后反问了团队支付链路和上线频率。

《参考解析》

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