合肥某小厂Java后端面经
《面试题目》
- 自我介绍
- 为什么想做这个 Java Agent CLI 的项目?
- ReAct 和 Plan 模式分别是怎么实现的?
- 除了 Claude Code 这类应用,有没有了解过其他 Agent 底层框架,比如 LangChain、LangGraph?OpenClaw 底层用的是什么?
- 项目里有没有体现核心能力,比如 Bash、Read、Grep 这些工具能力?
- 项目里 AI 参与写代码的占比大概是多少?
- Java 自学了多久?
- 简历里 AI 相关项目占比比较高,更偏业务开发,还是更偏 AI 方向?
- 短链项目的设计初衷?
- 本身对 Linux 是否比较感兴趣?
- 简历里的博弈大赛和蓝桥杯主要是什么比赛内容?
- 最近还做过什么项目?
- 自己的优势是什么?
- 平时用什么 AI 编程工具?
- 了解过 RAG 吗?讲一下 RAG 的基本流程?
- 这个网站有没有套 Cloudflare?
《参考解析》
- ReAct 模式的实现:ReAct(Reasoning+Acting)让模型在每一步交替输出「思考(Thought)」和「行动(Action)」,行动触发外部工具调用后把「观察结果(Observation)」拼回上下文,再让模型继续推理,循环直到得出最终答案。实现上通常是一个循环:拼接 prompt → 调用 LLM → 解析出工具调用指令 → 执行工具 → 把结果追加进对话历史 → 再次调用 LLM,直到模型输出终止标志。
- Plan 模式的实现:Plan-and-Execute 先让模型一次性生成完整的任务分解(多步计划),再逐步执行每个子任务,执行中可根据中间结果对后续计划做局部调整(Re-plan),相比 ReAct 逐步试探,Plan 模式减少了每步都要重新推理全局的开销,更适合目标明确、步骤可预判的复杂任务。
- RAG 基本流程:包括离线的知识库构建(文档切分 chunk → embedding 向量化 → 存入向量数据库)和在线的检索增强生成(用户问题 embedding 化 → 向量相似度检索出 Top-K 相关片段 → 拼接进 prompt 上下文 → 交给 LLM 生成回答),核心目的是让模型回答基于外部真实知识而非纯参数记忆,降低幻觉。
- Agent CLI 中的工具能力设计:一般会抽象出 Bash(执行命令)、Read/Write(文件读写)、Grep/Glob(代码检索)等原子工具,配合统一的工具描述(tool schema)暴露给模型,模型根据任务自主选择调用哪个工具、传什么参数,工具执行结果再反馈给模型驱动下一步决策,这是 Agent 具备「自主操作环境」能力的核心机制。