小鹏汽车Java后端一面面经
- 轮次
- 一面
- 时间
- 2026-08
- 来源
- 牛客网
《面试题目》
- 请做一下自我介绍。
- 你在实习公司的发布平台中负责哪些模块,遇到过哪些亮点或挑战?
- 你如何验证自动调优后的提示词效果?
- 项目在技术层面的主要难点是什么?
- 除此之外,项目还遇到过哪些挑战?
- 这个项目是否主要属于 AI 应用层项目?
- 通过这个项目,你对 AI 的认识有哪些提升?
- 二叉树的基本结构是怎样的?
- 在 Java 或 C 语言中如何定义二叉树节点?
- ThreadLocal 有什么作用,底层如何实现?
- Java 中如何定义和使用全局变量?
- 分布式锁解决了什么问题?
- 如何使用 Redis 实现分布式锁?
- MySQL 有哪些事务隔离级别?
- 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+ 树索引查询:非叶子节点保存用于导航的键和子页指针,查询时逐层定位到叶子页。叶子节点按键有序并通过链表相连,适合范围扫描。聚簇索引叶子节点保存整行数据,二级索引叶子节点保存主键值,命中后可能需要再回聚簇索引取完整记录。