面灵AI

得物Java后端面经

时间
2026-09
来源
牛客网

《面试题目》

  1. 分布式 ID 有哪些生成策略?各有什么优缺点?
  2. 常见 RPC 框架有哪些?各有什么优缺点?
  3. 如何定位和解决 JVM 内存泄漏?
  4. 项目中的日志如何处理?
  5. 扫码支付是如何实现的?
  6. 接口幂等性如何实现?
  7. 百万数据导入导出如何实现?有哪些注意事项?
  8. 分布式事务有哪些解决方案?如何实现?
  9. 订单掉单如何解决?
  10. 创建线程池有哪些参数?分别有什么作用?
  11. 项目中哪些地方使用了多线程?

《参考解析》

雪花算法适合高吞吐且可排序的长整型 ID,但必须处理时钟回拨;号段模式减少数据库访问但要接受号段空洞。RPC 选型要同时看协议性能、语言覆盖、服务治理和团队维护成本。

内存泄漏应通过 GC 曲线、堆转储和 GC Roots 定位,重点检查静态集合、监听器、ThreadLocal 和未关闭资源。日志要带请求/业务标识、级别和完整异常,异步落盘并脱敏。

扫码支付通常是下单生成二维码、用户支付、平台异步通知、验签更新订单,前端再查询状态兜底。幂等可组合业务唯一键、状态机、唯一约束和幂等令牌。大批量导入导出采用分页/流式读取与批量写入,控制内存和失败重试。

2PC 偏强一致但阻塞,TCC 侵入业务,Saga 和本地消息表更适合最终一致。订单掉单必须依赖平台重试、回调幂等和定时主动查询。线程池的核心线程数、最大线程数、存活时间、单位、队列、线程工厂和拒绝策略要结合业务压测配置。