暑期实习-拼多多 AI后端开发一面

拼多多 · AI后端开发 · 一面 · 2026-04

面试题目

  1. 实习与项目经历拷打
  2. 论文介绍:解决的问题与创新点
  3. 挑选一个JAVA项目进行详细讲解
  4. 数据库设计:关注表设计方案
  5. 中间件:Canal如何确保消息被安全消费
  6. 缓存:三级缓存存放内容是否一致
  7. 分布式:为什么分布式锁能避免回源风暴
  8. 秒杀系统:库存扣减时机?订单未支付导致库存无效占用的解决方案
  9. Java基础:new String对象创建了几个对象
  10. 多线程:线程池核心参数及任务提交流程
  11. 数据库:MySQL事务特性及其底层实现
  12. JVM:类加载过程及双亲委派机制的作用
  13. Spring:Bean的生命周期(单例/多例)、循环依赖问题及解决方案
  14. 手撕算法:带环链表反转,需分别反转环内与环外部分

参考解析

  • Canal消息消费: Canal通过ACK机制确保消费。消费端在处理完消息后发送ACK给Canal Server,若处理失败或未收到ACK,Canal会进行重发,需结合业务实现幂等性。
  • 分布式锁避免回源: 在缓存失效时,分布式锁保证只有一个请求能查询数据库回写缓存,其余请求阻塞等待或直接返回旧数据,防止高并发请求击穿数据库。
  • 库存扣减与无效占用: 可采用预扣减库存(Redis预减),设置订单过期时间,过期后通过定时任务或延迟队列回补Redis库存,防止恶意占用。
  • new String: 若字符串常量池中无该字符串,创建2个对象(堆中对象+常量池对象);若已有,创建1个对象。
  • Spring循环依赖: Spring通过三级缓存(singletonObjects, earlySingletonObjects, singletonFactories)解决Setter注入产生的循环依赖,通过提前暴露Bean工厂实现对象引用注入。