面灵AI

小鹏汽车Java后端一面面经

轮次
一面
时间
2026-08
来源
牛客网

《面试题目》

  1. 请做一下自我介绍。
  2. 你在实习公司的发布平台中负责哪些模块,遇到过哪些亮点或挑战?
  3. 你如何验证自动调优后的提示词效果?
  4. 项目在技术层面的主要难点是什么?
  5. 除此之外,项目还遇到过哪些挑战?
  6. 这个项目是否主要属于 AI 应用层项目?
  7. 通过这个项目,你对 AI 的认识有哪些提升?
  8. 二叉树的基本结构是怎样的?
  9. 在 Java 或 C 语言中如何定义二叉树节点?
  10. ThreadLocal 有什么作用,底层如何实现?
  11. Java 中如何定义和使用全局变量?
  12. 分布式锁解决了什么问题?
  13. 如何使用 Redis 实现分布式锁?
  14. MySQL 有哪些事务隔离级别?
  15. MySQL 如何通过 B+ 树索引查找数据?

《参考解析》

1. 提示词效果验证:先建立覆盖真实业务分布的固定评测集,为准确性、格式遵循、稳定性和成本等指标定义可重复的判定标准,再对基线提示词与候选提示词做离线对比。上线前应检查典型失败样本,上线后通过小流量实验观察真实任务成功率,而不能只依赖少量主观案例。

2. ThreadLocal 原理:每个线程内部维护一个 ThreadLocalMap,键是 ThreadLocal 对象的弱引用,值是该线程独享的数据。因此不同线程访问同一个 ThreadLocal 时互不干扰。在线程池中使用后应在 finally 中调用 remove(),避免线程长期存活时遗留值造成内存占用或数据串用。

3. Redis 分布式锁:加锁通常使用 SET key value NX PX timeout 保证占锁与设置过期时间的原子性,value 应是请求唯一标识。解锁必须用 Lua 脚本先比较 value 再删除,防止误删其他请求后来获取的锁。业务执行时间可能超过租期时还需设计可靠的续期机制。

4. MySQL 事务隔离级别:SQL 标准定义读未提交、读已提交、可重复读和串行化四级。InnoDB 默认使用可重复读,通过 MVCC 提供一致性读,并结合锁机制处理当前读。隔离级别越高,并发冲突通常越多,应按业务一致性要求选择。

5. B+ 树索引查询:非叶子节点保存用于导航的键和子页指针,查询时逐层定位到叶子页。叶子节点按键有序并通过链表相连,适合范围扫描。聚簇索引叶子节点保存整行数据,二级索引叶子节点保存主键值,命中后可能需要再回聚簇索引取完整记录。