深圳跨境电商 Java 面试:导入失败、优惠券与顺序消费
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- 负责哪些模块,最深刻的问题是什么,怎样解决?
- EasyExcel 解析中途失败后如何处理?
- 优惠券已经过期但查询状态仍有效,应该怎样处理?
- 项目各模块提供什么业务价值?
- 责任链如何支持动态编排?
- ZSet 使用什么结构,项目用了哪些 Redis 数据类型?
- 智能体项目来自业务需求还是个人研究?
- 常用哪些消息队列,RocketMQ 如何保证顺序消费?
- synchronized 锁实例方法和静态方法有什么区别?
- 如何优化 SQL,哪些条件会影响索引利用?
- B+ 树与 B 树有什么区别?
- 你的个人优势是什么?
《参考解析》
优惠券有效性
展示状态可以是缓存,但核销必须以服务端时间、有效期和可用状态做原子校验。更新时把未使用、未过期作为条件,检查实际影响行数,防止并发核销成功两次。定时任务更新状态只能改善展示,不能充当唯一的过期判据。
顺序消费的范围
先说明要保证同一订单有序,还是所有消息全局有序。把同一业务键的消息送到同一有序处理单元,并按顺序提交处理结果;多队列之间不能自然推出全局顺序。失败消息需要明确阻塞、重试和人工处置规则,否则跳过一条后继续执行可能破坏业务状态。
实例锁与类锁
实例同步方法锁住当前对象,静态同步方法锁住对应 Class 对象。不同实例可以各自进入实例同步方法;同一个类的静态同步方法则竞争同一把类锁。