阿里AI编程面试实战:如何用大模型辅助但不依赖地完成Agent开发

0 阅读

面试官真正在看什么

很多人以为AI编程面试是比谁调API快、谁生成代码多。其实完全不是。

以阿里巴巴这类公司的AI coding题目为例,面试官真正想考察的是:你能不能把一个模糊需求,拆成可交付的工程任务;会不会正确使用大模型加速开发,而不是无脑生成;有没有生产级开发意识——从需求、设计到测试、风险控制的完整闭环。

换句话说,他们要看的是:你在主导开发过程,AI只是你的助手。

如果你一上来就让模型“帮我写个完整的Agent”,那基本就挂了。正确的做法是按一个缩小版的标准研发流程推进:需求澄清 → 方案设计 → 模块拆解 → AI辅助实现 → 测试 → Demo → 风险与优化。

第0步:别急着编码,先理解题目

拿到题目后,先花3到5分钟完整阅读,提取关键信息:

  • 这个Agent到底要做什么?
  • 输入是什么?(用户输入、系统参数、外部数据)
  • 输出是什么?(格式、内容、错误码)
  • 哪些是必须完成的核心功能?
  • 哪些是可选加分项?
  • 在时间限制下,最小可交付版本(MVP)应该包含什么?

脑子里要形成一句话结论:先做一个能跑通主链路的MVP,再补异常处理、测试和文档。

第1步:让模型帮你结构化理解需求

不要直接让模型写代码。第一条提示词建议这样写:

请先不要写代码。我正在做一个AI coding面试题,下面是题目描述。请你先帮我完成以下任务:

  1. 提炼题目目标
  2. 明确输入、输出、约束条件
  3. 区分“必须完成”和“可选加分项”
  4. 给出一个最小可交付版本(MVP)范围
  5. 列出3-5个潜在风险点
  6. 给出建议的项目结构和开发顺序

要求:输出尽量结构化,不要直接生成完整代码,优先帮助我快速推进面试开发流程。

这一步的目的是快速完成需求收敛。拿到模型回复后,不要照抄,自己再整理一遍——这能体现你在主导,而不是被模型牵着走。

第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. 返回结果

让模型帮你做设计时,提示词可以这样写:

不要写代码,先帮我做技术方案设计。基于下面这个题目,请输出:

  1. 推荐的最小项目结构
  2. 核心模块及职责
  3. 主流程时序
  4. 哪些部分应该用确定性逻辑实现,哪些部分适合交给LLM
  5. 哪些风险要在设计层面规避

要求:面向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列表,按优先级排序。 要求:只保留最必要的任务,每项任务尽量小且独立,标注哪些任务需要优先完成。

通常正确的开发顺序是:

  1. 输入/参数定义
  2. 核心tool(确定性逻辑)
  3. Agent主流程
  4. LLM调用封装
  5. 输出格式处理
  6. 错误处理
  7. 测试
  8. README收尾

第7-8步:先实现确定性部分,再审代码

永远先写确定性逻辑:参数校验、输入解析、工具函数、文件读写、网络请求、数据清洗、结果格式化。这些最稳定,也最容易测。

让模型生成工具函数时,提示词要具体:

请帮我实现一个Python函数【函数名】。 功能要求:【功能描述】 输入:【参数1】【参数2】 输出:返回结构化结果

工程要求:

  1. 代码清晰、可维护
  2. 带类型注解
  3. 有必要的异常处理
  4. 不要写成脚本式代码
  5. 尽量方便后续写单元测试
  6. 如果需要,请补充简短注释

只输出该函数对应的代码,不要输出额外解释。

模型生成后,你自己先审一遍:函数签名清不清楚?返回值是否统一?有没有异常处理?能不能测?如果不好,就追问改进,而不是直接复制。

第9-10步:封装LLM调用和设计prompt

LLM调用层要单独封装,不要散在主流程里。提示词可以这样写:

请帮我实现一个简洁的Python LLM调用封装。 要求:

  1. 封装成单独函数或类
  2. 输入为system prompt、user prompt
  3. 输出为模型文本结果
  4. 预留错误处理
  5. 保持代码尽量简单
  6. 用【题目提供的大模型调用方式】

只输出代码,不要解释。

Prompt也很重要,最好单独放。让模型帮你设计system prompt:

请为下面这个Agent任务设计一个稳定的system prompt。 任务:【题目任务】 要求:

  1. 明确agent的职责
  2. 明确禁止编造
  3. 如果信息不足,要明确说不知道
  4. 如果需要工具信息,优先基于工具返回内容回答
  5. 输出尽量结构清晰
  6. 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模板:【说明】

要求:

  1. 主流程清晰
  2. 先走确定性逻辑,再调LLM
  3. 对失败场景有基本处理
  4. 返回结构化结果
  5. 不要写太复杂的抽象
  6. 代码适合面试现场展示

只输出agent主流程代码。

第12-13步:边写边验证,至少写一个smoke test

不要全部写完再运行。正确节奏是:

  • 工具函数写完,先本地跑一个例子
  • LLM调用写完,先打一个最小请求
  • Agent主流程写完,先跑happy path
  • 然后再补失败case

让模型帮你生成最小测试样例:

请为以下Python模块生成最小可运行的pytest测试。 目标模块:【粘贴函数或类】 要求:

  1. 至少覆盖一个成功场景
  2. 至少覆盖一个失败场景
  3. 测试尽量简单
  4. 不依赖复杂外部环境
  5. 适合AI coding面试展示

只输出测试代码。

如果时间非常紧,至少写一个smoke test,证明主链路能跑通。

总结:展示你的工程主导力

整个过程中,你要不断向面试官传递一个信号:我在用AI加速开发,但整个过程由我主导,每一步都有工程依据。

  • 需求阶段:你能从模糊描述中提炼MVP
  • 设计阶段:你能合理拆解模块,区分确定性逻辑和LLM部分
  • 开发阶段:你按优先级推进,先写稳定可测的部分
  • 验证阶段:你边写边测,确保每一步都可靠

这才是阿里这类公司AI coding面试真正想看到的能力。