阿里AI编程面试实战:如何用大模型辅助但不依赖地完成Agent开发
面试官真正在看什么
很多人以为AI编程面试是比谁调API快、谁生成代码多。其实完全不是。
以阿里巴巴这类公司的AI coding题目为例,面试官真正想考察的是:你能不能把一个模糊需求,拆成可交付的工程任务;会不会正确使用大模型加速开发,而不是无脑生成;有没有生产级开发意识——从需求、设计到测试、风险控制的完整闭环。
换句话说,他们要看的是:你在主导开发过程,AI只是你的助手。
如果你一上来就让模型“帮我写个完整的Agent”,那基本就挂了。正确的做法是按一个缩小版的标准研发流程推进:需求澄清 → 方案设计 → 模块拆解 → AI辅助实现 → 测试 → Demo → 风险与优化。
第0步:别急着编码,先理解题目
拿到题目后,先花3到5分钟完整阅读,提取关键信息:
- 这个Agent到底要做什么?
- 输入是什么?(用户输入、系统参数、外部数据)
- 输出是什么?(格式、内容、错误码)
- 哪些是必须完成的核心功能?
- 哪些是可选加分项?
- 在时间限制下,最小可交付版本(MVP)应该包含什么?
脑子里要形成一句话结论:先做一个能跑通主链路的MVP,再补异常处理、测试和文档。
第1步:让模型帮你结构化理解需求
不要直接让模型写代码。第一条提示词建议这样写:
请先不要写代码。我正在做一个AI coding面试题,下面是题目描述。请你先帮我完成以下任务:
- 提炼题目目标
- 明确输入、输出、约束条件
- 区分“必须完成”和“可选加分项”
- 给出一个最小可交付版本(MVP)范围
- 列出3-5个潜在风险点
- 给出建议的项目结构和开发顺序
要求:输出尽量结构化,不要直接生成完整代码,优先帮助我快速推进面试开发流程。
这一步的目的是快速完成需求收敛。拿到模型回复后,不要照抄,自己再整理一遍——这能体现你在主导,而不是被模型牵着走。
第2步:手写一份mini需求文档
即使题目没要求,也建议新建一个docs/plan.md文件,写一个简短的需求说明。你可以用这个模板:
# Agent Development Plan
## 1. Goal
实现一个【题目要求的agent名称/功能】。
## 2. Input
- 用户输入:
- 系统输入:
- 外部资源:
## 3. Output
- 预期输出:
- 输出格式:
## 4. MVP Scope
本次先实现:
1.
2.
3.
暂不实现:
1.
2.
## 5. Risks
1.
2.
3.
## 6. Acceptance Criteria
1.
2.
3.你可以让模型帮你填充内容,但一定要做人工修改。比如模型可能写“支持多种输入格式”,你要改成“只支持JSON格式的用户查询”。这种细节调整能让面试官看到你的判断力。
第3步:做技术方案和模块划分
接着在docs/plan.md里补充设计部分:
## 7. High-level Design
模块划分:
- main: 程序入口
- agent: agent主流程编排
- tools: 工具函数
- prompts: prompt模板
- utils: 通用工具
- tests: 测试
主流程:
1. 接收输入
2. 校验输入
3. 调用tool获取外部信息
4. 组织上下文
5. 调用LLM
6. 后处理输出
7. 返回结果让模型帮你做设计时,提示词可以这样写:
不要写代码,先帮我做技术方案设计。基于下面这个题目,请输出:
- 推荐的最小项目结构
- 核心模块及职责
- 主流程时序
- 哪些部分应该用确定性逻辑实现,哪些部分适合交给LLM
- 哪些风险要在设计层面规避
要求:面向Python项目,优先考虑AI coding面试场景,强调可快速实现、可测试、可解释,尽量不要过度设计。
这一步很关键,因为它直接体现你会任务拆解、懂Agent/tool calling、知道确定性逻辑兜底、有工程设计意识。
第4-5步:搭项目骨架和README
建议用这种轻量结构:
src/main.py
src/agent.py
src/tools.py
README.md
tests/test_smoke.py然后写一个简洁的README,至少包含:
- Overview:本项目实现了一个用于【题目目标】的Agent
- Features:列出核心功能
- Project Structure:说明每个文件的作用
- How to Run:给出启动命令
- Notes:当前版本优先实现MVP,后续可增强异常处理等
很多人跳过这步,但你做了会很加分——因为这展示了你的交付意识。
第6步:列TODO清单,按优先级开发
不要让模型“完成整个项目”。先让它输出一个可执行的开发TODO列表,按优先级排序:
请基于当前题目和以下项目结构,给我输出一个可执行的开发TODO列表,按优先级排序。 要求:只保留最必要的任务,每项任务尽量小且独立,标注哪些任务需要优先完成。
通常正确的开发顺序是:
- 输入/参数定义
- 核心tool(确定性逻辑)
- Agent主流程
- LLM调用封装
- 输出格式处理
- 错误处理
- 测试
- README收尾
第7-8步:先实现确定性部分,再审代码
永远先写确定性逻辑:参数校验、输入解析、工具函数、文件读写、网络请求、数据清洗、结果格式化。这些最稳定,也最容易测。
让模型生成工具函数时,提示词要具体:
请帮我实现一个Python函数【函数名】。 功能要求:【功能描述】 输入:【参数1】【参数2】 输出:返回结构化结果
工程要求:
- 代码清晰、可维护
- 带类型注解
- 有必要的异常处理
- 不要写成脚本式代码
- 尽量方便后续写单元测试
- 如果需要,请补充简短注释
只输出该函数对应的代码,不要输出额外解释。
模型生成后,你自己先审一遍:函数签名清不清楚?返回值是否统一?有没有异常处理?能不能测?如果不好,就追问改进,而不是直接复制。
第9-10步:封装LLM调用和设计prompt
LLM调用层要单独封装,不要散在主流程里。提示词可以这样写:
请帮我实现一个简洁的Python LLM调用封装。 要求:
- 封装成单独函数或类
- 输入为system prompt、user prompt
- 输出为模型文本结果
- 预留错误处理
- 保持代码尽量简单
- 用【题目提供的大模型调用方式】
只输出代码,不要解释。
Prompt也很重要,最好单独放。让模型帮你设计system prompt:
请为下面这个Agent任务设计一个稳定的system prompt。 任务:【题目任务】 要求:
- 明确agent的职责
- 明确禁止编造
- 如果信息不足,要明确说不知道
- 如果需要工具信息,优先基于工具返回内容回答
- 输出尽量结构清晰
- prompt简洁,不要太长
只输出prompt内容。
如果涉及工具调用,还可以加一段tool usage policy,规定什么时候调用、失败时如何处理等。
第11步:实现agent主流程
这一步你要自己先想清楚流程,再让模型补代码。脑子里先有个伪代码:
receive input
validate input
call tool(s)
assemble context
call LLM
postprocess output
return result然后提示词这样写:
请根据以下约束,实现一个简洁的Python agent主流程。 任务目标:【题目目标】 已存在模块:
- tool函数:【列出函数名】
- llm调用函数:【函数名】
- prompt模板:【说明】
要求:
- 主流程清晰
- 先走确定性逻辑,再调LLM
- 对失败场景有基本处理
- 返回结构化结果
- 不要写太复杂的抽象
- 代码适合面试现场展示
只输出agent主流程代码。
第12-13步:边写边验证,至少写一个smoke test
不要全部写完再运行。正确节奏是:
- 工具函数写完,先本地跑一个例子
- LLM调用写完,先打一个最小请求
- Agent主流程写完,先跑happy path
- 然后再补失败case
让模型帮你生成最小测试样例:
请为以下Python模块生成最小可运行的pytest测试。 目标模块:【粘贴函数或类】 要求:
- 至少覆盖一个成功场景
- 至少覆盖一个失败场景
- 测试尽量简单
- 不依赖复杂外部环境
- 适合AI coding面试展示
只输出测试代码。
如果时间非常紧,至少写一个smoke test,证明主链路能跑通。
总结:展示你的工程主导力
整个过程中,你要不断向面试官传递一个信号:我在用AI加速开发,但整个过程由我主导,每一步都有工程依据。
- 需求阶段:你能从模糊描述中提炼MVP
- 设计阶段:你能合理拆解模块,区分确定性逻辑和LLM部分
- 开发阶段:你按优先级推进,先写稳定可测的部分
- 验证阶段:你边写边测,确保每一步都可靠
这才是阿里这类公司AI coding面试真正想看到的能力。