汽车之家 Java 后端二面面经|27届校招 10.22
# 汽车之家 Java 后端二面面经|27届校招(项目 + Java基础 + AI Agent)
分享一下今天的汽车之家 Java 后端二面,整体感觉比较偏向项目深挖和技术交流,除了传统 Java 后端技术,也聊了不少 AI Coding、Agent 开发和未来技术趋势。
我是 27 届本科生,人工智能专业,有两段 Java 后端实习经历,分别涉及智能驾培系统和保险理算系统开发。此外,简历上还有一个 Spring Cloud Alibaba 微服务项目,以及一个 AI Agent 全栈项目。
下面按照面试内容整理,部分问题根据记忆还原,可能与原话略有出入。
## 一、自我介绍及实习项目
**1. 自我介绍**
主要介绍了技术栈、两段实习经历、微服务项目和 Agent 项目,以及个人职业规划。
**2. 介绍一下目前实习的业务和负责的模块。**
目前主要负责智能驾培中控系统的后端开发,涉及预警接口、随机上呼、Agent 接入及鉴权审计等功能。
**3. 介绍一下车辆频繁刹车预警的业务背景,以及具体如何实现。**
业务场景是监控车辆因车门打开、进入特定电子围栏等原因产生的非手动紧急刹车事件。
聊到了方案的演进过程:
- 初版在接口查询时直接统计近五分钟的刹车次数,性能不太理想。
- 后来改为通过定时任务统计并判断预警阈值。
- 满足条件后写入预警事件表,前端查询接口直接读取预警结果,减少实时重复计算。
## 二、分布式内容资讯平台项目
**4. 介绍一下你的微服务项目,主要有哪些业务?**
项目基于 Spring Cloud Alibaba,涉及文章发布、内容审核、定时发布、全文检索等业务。
**5. 为什么要自己实现延迟队列?具体怎么实现?**
主要用于文章定时发布。
- MySQL 持久化任务数据及执行状态。
- Redis ZSet 按执行时间戳排序,维护即将到期的任务。
- Redis List 存储已经到期、等待消费的任务。
- 消费者从 List 中获取任务并执行对应业务。
- 通过 MySQL 持久化记录和补偿机制处理任务未完成的情况。
**6. 延迟任务重复执行,如何保证业务幂等?**
讨论了两个不同业务环节:
- 自媒体端通过条件更新控制状态流转,避免同一个状态变更被重复执行。
- App 端保存文章时,通过数据库唯一索引避免重复插入。
这部分主要围绕业务状态、条件更新及数据库约束展开。
## 三、Java 基础与并发编程
**7. 进程和线程有什么区别?**
主要从资源分配、CPU 调度、内存共享以及上下文切换开销等方面回答。
**8. Runnable 和 Callable 有什么区别?**
重点讨论任务是否需要返回值,以及如何获取异步任务的执行结果。
## 四、MySQL 事务与 MVCC
**9. MySQL 有哪些事务隔离级别?默认是什么?**
聊到了 MySQL InnoDB 默认的可重复读(RR)隔离级别。
**10. MySQL 的 MVCC 是怎么实现的?**
重点包括:
- Undo Log 版本链。
- Read View。
- 快照读。
- RR 隔离级别下如何实现可重复读。
**11. 幻读如何处理?快照读和当前读有什么区别?**
讨论了 MVCC 下的快照读,以及 `SELECT ... FOR UPDATE` 等当前读场景中的加锁机制,包括间隙锁和临键锁。
## 五、SSE 与 WebSocket
**12. 你的 Agent 是如何实现流式输出的?**
使用 SSE 实现大模型文本的流式推送,让用户能够逐步看到生成结果。
**13. 为什么选择 SSE,而不是 WebSocket?**
主要从通信方向和业务场景回答:
- SSE 基于 HTTP,适合服务端持续向客户端推送内容。
- WebSocket 支持全双工通信,适合双方需要频繁双向交互的场景。
- 大模型文本流式输出通常以服务端推送为主,因此 SSE 比较符合需求。
## 六、AI Coding 实践
**14. 平时如何使用 AI 辅助开发?**
我主要把精力放在需求理解、方案设计、任务拆解和最终验收上。
对于比较简单的需求,可以直接让 AI 完成实现,之后审查代码并测试。
对于复杂需求,会按照软件工程的思路先拆解任务,明确模块边界、依赖关系和验收标准,再分阶段让 AI 实施,避免一次性修改过多代码。
**15. 你觉得 AI 给软件开发带来了哪些实际变化?**
聊到了 AI Coding 对编码效率和技术学习成本的影响。
个人感觉 AI 已经显著降低了技术实现门槛,但企业研发中还有不少沟通、需求确认和跨团队协作成本。
**16. 如果希望进一步提高端到端研发效率,你会怎么做?**
讨论了通过标准化流程,将需求分析、开发、代码审查、测试等环节尽可能串联起来。
理想情况下,人主要负责明确需求、决策和验收,AI 承担更多具体执行工作,但仍然需要必要的质量控制。
## 七、Agent 原理、工具选型与技术趋势
**17. Agent 是如何调用工具的?Function Calling 的原理是什么?**
主要回答了模型根据工具定义生成结构化调用请求,再由 Agent Runtime 解析参数、执行工具,并将执行结果返回给模型的流程。
**18. 平时使用哪些 AI Coding 工具?有什么区别?**
聊到了 Claude Code 和 Pi Agent。
- Claude Code 的工具调用、权限管理和整体开发体验比较完整。
- Pi Agent 的设计相对精简,更强调通过插件和扩展实现自定义能力。
也讨论了 Agent 执行代码时的权限控制、沙箱隔离等安全问题。
**19. 你怎么看 Agent 接下来的发展?**
这是比较开放的交流题。
我谈到 Agent 正在从程序员使用的开发工具,逐渐向办公自动化和个人助手等更多场景扩展。
同时也讨论了移动端 Agent 的生态问题,比如应用之间的协作、系统权限和第三方服务接入等。
**20. 最近有没有关注或者研究什么新的 AI 项目?**
分享了近期接触的一个逆向工具相关开源项目,主要思路是把已有工具能力封装成 MCP 接口,使 Agent 能够调用这些能力完成实际任务。
## 八、职业规划与公司 AI 方向
**21. 未来的职业规划是什么?**
我的回答是:
短期还是希望深耕 Java 后端,提升业务理解、系统设计和工程实践能力。
长期希望结合 AI 技术扩展自己的能力边界,逐步掌握前端、移动端等技术,成为能够独立完成复杂应用开发的工程师。
**22. 关于公司目前的 AI 应用方向**
面试官也分享了一些公司内部推进 AI 应用的思路。
主要包括:
- 研发侧利用 AI 提升从需求到交付的整体效率。
- 业务侧探索使用 Agent 改造现有工作流程。
- 通过 AI 技术提高效率、降低业务成本。
这一部分更偏向技术趋势和业务交流。
公众号进入网站体验更佳

