唯品会广告中台实习生一二面面经

唯品会 · 广告中台实习生 · 一二面 · 2026-07

《面试题目》

  1. 简单介绍项目主要工作流程。
  2. 审核机制中是否有投放后的 AI 纠错机制。
  3. 通过哪些监控指标和告警判断服务是否可用。
  4. 首页需要并发调用多个下游接口,如果某个服务超时无返回,如何兜底。
  5. 线程池有哪些核心参数,什么情况下会触发拒绝策略。
  6. 首页多接口并发场景下如何选择线程池拒绝策略,理由是什么。
  7. 使用线程池提交任务后,如何获取执行结果。
  8. Future.get 设置 40ms 超时后,子任务是否还会继续执行,如何快速中断。
  9. 数据库慢查询的排查和优化思路是什么。
  10. SQL 有目标索引但执行计划没走索引时,如何强制指定索引。
  11. ThreadLocal 的底层数据结构是什么,使用时有哪些注意事项。
  12. 在线程池中使用 ThreadLocal 会产生什么问题,如何避免脏数据。
  13. Redis 缓存击穿如何处理,分布式锁方案和逻辑过期方案各有什么优缺点。
  14. MySQL 数据同步到 ES 时如何保证一致性。
  15. Kafka 同步 MySQL 到 ES 时,写入 ES 失败有哪些降级方案。
  16. MySQL 和 ES 存在短暂不一致时,如何感知并纠正。
  17. ES 深度分页问题如何解决。
  18. 运维 Agent 能重启机器、容器和服务时,如何管控高危操作。
  19. RAG 知识库文档切片如何实现,过程中可能遇到哪些问题。
  20. 算法题:K 个一组反转链表。
  21. 二面算法题:原地删除数组中的重复元素。
  22. String 相关代码片段会创建多少对象,最终变量值是什么。
  23. Java 优先队列底层如何实现,堆适合解决哪些问题。
  24. TCP 四次挥手为什么比三次握手多一次。
  25. 举例说明自己的担当和扛事能力。

《参考解析》

  1. 多接口并发兜底:可以用 CompletableFuture 或线程池并行请求,单接口设置超时、默认值和降级结果。主流程要区分强依赖和弱依赖,弱依赖失败不阻塞首页整体返回,并通过监控记录下游超时率。
  2. 线程池拒绝策略选择:首页请求是在线链路,通常不适合无限排队。可以设置有界队列、合理超时和降级策略;拒绝时返回部分数据或默认模块,避免调用方线程被 CallerRunsPolicy 拖垮。
  3. ThreadLocal 在线程池中的风险:线程会复用,ThreadLocalMap 中的旧值若不清理会污染下一次任务,还可能造成内存泄漏。最佳实践是在 try/finally 中调用 remove(),并避免存放大对象。
  4. MySQL 到 ES 的一致性:常见方案是数据库事务提交后写消息或监听 binlog,由消费者异步写 ES。写 ES 失败要进入重试队列或补偿表,定时按更新时间、版本号或校验任务修复不一致。
  5. ES 深度分页from + size 深分页会扫描和排序大量数据。可以使用 search_after 搭配稳定排序字段,或用 scroll/PIT 做批量导出场景;面向用户查询时应限制最大页数。
  6. K 个一组反转链表:先检查剩余节点是否足够 K 个,再在组内做原地反转,最后把上一组尾节点连接到当前组新头。关键是维护 precurnext 三类指针,避免断链。