蔚来工具链云平台全栈开发实习面经
面试题目
后端部分
- 用户下单库存扣减时机、下单与支付阶段区分?
- 库存扣减策略:如何处理恶意下单、长期占用及库存释放?
- 消息队列选型:Kafka vs RabbitMQ 的区别与选择依据?
- 缓存异常:什么是缓存击穿、穿透?布隆过滤器的作用、底层结构、参数设置及与业务规模关系?
- Spring Boot 缓存预热实现(监听容器启动事件)?
- Java 线程池使用:配置方式、线程创建时机及存活策略?
- 基础能力:常用 Linux 命令、Git 命令。
前端部分
- 项目经历与 Vue 选型原因?
- Vue3 深度理解:生命周期有哪些?
- 常用 UI 组件库与栅格系统理解?
- 什么是响应式单页面应用?
其他部分
- AI 闲聊及职业规划(30分钟)。
参考解析
- 库存扣减:通常分预扣(下单)和实扣(支付)。恶意占用通过 Redis 设置过期时间或订单超时定时任务处理,配合分布式锁保证数据一致性。
- Kafka vs RabbitMQ:Kafka 吞吐量极高,适用于日志处理与大数据流;RabbitMQ 延迟低、功能丰富(支持复杂路由),适用于金融等一致性要求高的业务。
- 缓存穿透与击穿:穿透是查不存在的数据,布隆过滤器可拦截;击穿是热点 Key 过期,通过加互斥锁或逻辑过期解决。布隆过滤器大小应根据预估总量和容错率计算。
- 缓存预热:可利用 Spring 的
ApplicationReadyEvent事件或实现CommandLineRunner接口在容器启动后执行预热逻辑。 - 线程池:推荐
ThreadPoolTaskExecutor。线程创建遵循核心线程 -> 阻塞队列 -> 最大线程 -> 拒绝策略;空闲时核心线程通常保持存活,非核心线程受 keepAliveTime 限制。