面灵AI

深圳跨境电商 Java 面试:导入失败、优惠券与顺序消费

时间
2026-09
来源
牛客网

《面试题目》

  1. 负责哪些模块,最深刻的问题是什么,怎样解决?
  2. EasyExcel 解析中途失败后如何处理?
  3. 优惠券已经过期但查询状态仍有效,应该怎样处理?
  4. 项目各模块提供什么业务价值?
  5. 责任链如何支持动态编排?
  6. ZSet 使用什么结构,项目用了哪些 Redis 数据类型?
  7. 智能体项目来自业务需求还是个人研究?
  8. 常用哪些消息队列,RocketMQ 如何保证顺序消费?
  9. synchronized 锁实例方法和静态方法有什么区别?
  10. 如何优化 SQL,哪些条件会影响索引利用?
  11. B+ 树与 B 树有什么区别?
  12. 你的个人优势是什么?

《参考解析》

优惠券有效性

展示状态可以是缓存,但核销必须以服务端时间、有效期和可用状态做原子校验。更新时把未使用、未过期作为条件,检查实际影响行数,防止并发核销成功两次。定时任务更新状态只能改善展示,不能充当唯一的过期判据。

顺序消费的范围

先说明要保证同一订单有序,还是所有消息全局有序。把同一业务键的消息送到同一有序处理单元,并按顺序提交处理结果;多队列之间不能自然推出全局顺序。失败消息需要明确阻塞、重试和人工处置规则,否则跳过一条后继续执行可能破坏业务状态。

实例锁与类锁

实例同步方法锁住当前对象,静态同步方法锁住对应 Class 对象。不同实例可以各自进入实例同步方法;同一个类的静态同步方法则竞争同一把类锁。