蔚来工具链云平台全栈开发实习面经

面试题目

后端部分

  1. 用户下单库存扣减时机、下单与支付阶段区分?
  2. 库存扣减策略:如何处理恶意下单、长期占用及库存释放?
  3. 消息队列选型:Kafka vs RabbitMQ 的区别与选择依据?
  4. 缓存异常:什么是缓存击穿、穿透?布隆过滤器的作用、底层结构、参数设置及与业务规模关系?
  5. Spring Boot 缓存预热实现(监听容器启动事件)?
  6. Java 线程池使用:配置方式、线程创建时机及存活策略?
  7. 基础能力:常用 Linux 命令、Git 命令。

前端部分

  1. 项目经历与 Vue 选型原因?
  2. Vue3 深度理解:生命周期有哪些?
  3. 常用 UI 组件库与栅格系统理解?
  4. 什么是响应式单页面应用?

其他部分

  • AI 闲聊及职业规划(30分钟)。

参考解析

  1. 库存扣减:通常分预扣(下单)和实扣(支付)。恶意占用通过 Redis 设置过期时间或订单超时定时任务处理,配合分布式锁保证数据一致性。
  2. Kafka vs RabbitMQ:Kafka 吞吐量极高,适用于日志处理与大数据流;RabbitMQ 延迟低、功能丰富(支持复杂路由),适用于金融等一致性要求高的业务。
  3. 缓存穿透与击穿:穿透是查不存在的数据,布隆过滤器可拦截;击穿是热点 Key 过期,通过加互斥锁或逻辑过期解决。布隆过滤器大小应根据预估总量和容错率计算。
  4. 缓存预热:可利用 Spring 的 ApplicationReadyEvent 事件或实现 CommandLineRunner 接口在容器启动后执行预热逻辑。
  5. 线程池:推荐 ThreadPoolTaskExecutor。线程创建遵循核心线程 -> 阻塞队列 -> 最大线程 -> 拒绝策略;空闲时核心线程通常保持存活,非核心线程受 keepAliveTime 限制。