阿里 AI Agent 开发一面

1. Agent 的架构设计

一个完整的 Agent,一般不是单独一个大模型就能跑起来,核心会拆成几层。最上面是任务入口,负责接收用户问题和上下文;中间是决策层,负责意图识别、任务拆解、规划和工具选择;下面是执行层,真正去调工具、查知识库、访问服务;最后是记忆和状态层,维护多轮上下文、历史执行结果和中间变量。

如果做得再工程化一点,通常还会加一个校验层。因为模型规划出来的步骤不一定总是对的,工具参数也可能填错,所以在执行前后都要做检查,比如参数合法性校验、工具返回结构校验、结果一致性校验。Agent 真正难的地方不是“能不能想”,而是“想完之后能不能稳定执行”。

2. RAG 的检索如何实现

RAG 检索一般分成离线和在线两部分。离线侧先做文档清洗、切块、去重、embedding 计算和向量入库;在线侧拿用户 query 编码成向量,去向量库做召回,再结合 BM25 或关键词检索做混合召回,接着用 rerank 模型重排,最后把最相关的证据拼接给大模型生成答案。

如果做得细一点,切块策略很重要。块太大,召回不准;块太小,上下文又容易断裂。通常会用滑窗切分,保留部分 overlap。对于长文档,还会给每个 chunk 带上标题、章节路径、来源等元信息,方便召回时提升相关性。最终效果不只是看向量检索本身,还取决于 chunk 设计、召回策略和重排质量。

# 一个简化版的 RAG 检索流程
query_vec = embed(query)
candidates = vector_db.search(query_vec, topk=20)
bm25_docs = bm25.search(query, topk=20)

merged = merge_and_dedup(candidates, bm25_docs)
reranked = reranker.rank(query, merged)

context = "\n".join([doc["text"] for doc in reranked[:5]])
answer = llm.generate(f"基于以下资料回答问题:\n{context}\n问题:{query}")

3. 预训练数据清洗方法

预训练数据清洗首先要解决脏数据、重复数据和低质量数据。脏数据包括乱码、HTML 残留、脚本片段、异常符号、错误编码;重复数据包括完全重复和近重复;低质量数据包括广告、无意义灌水、模板文、机器翻译残片、拼接错乱文本。

常见做法是先做规则清洗,比如去标签、过滤控制字符、长度约束、语言检测;再做质量过滤,比如困惑度过滤、分类器识别垃圾文本、关键词规则;然后做去重,常用 MinHash、SimHash、LSH 这类近重复方法。真正影响模型上限的,很多时候不是模型结构,而是预训练数据质量。

4. logistic 回归的模型原理和 loss

logistic 回归本质上是一个线性分类模型,只不过在线性输出后接了一个 sigmoid,把结果映射到 0 到 1 之间,表示样本属于正类的概率。对于输入特征 (x),模型输出是:

训练时一般不用均方误差,而是用交叉熵损失。对于二分类,单个样本的 loss 是:

这个损失的意义是让真实标签对应的概率尽可能高。logistic 回归虽然简单,但在结构化特征、基线建模和可解释性要求高的场景里仍然非常常用。

import numpy as np

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

def binary_cross_entropy(y, p, eps=1e-12):
    p = np.clip(p, eps, 1 - eps)
    return -(y * np.log(p) + (1 - y) * np.log(1 - p))

x = np.array([0.3, 1.2, -0.7])
w = np.array([0.5, -0.2, 0.8])
b = 0.1

z = x @ w + b
p = sigmoid(z)
loss = binary_cross_entropy(1, p)
print(p, loss)

5. 给定一个时间序列,如何通过机器学习的方法建模筛选出重要特征,然后基于规则方法进行建模

时间序列建模里,先要把原始序列变成可学习的特征。最常见的是统计特征、趋势特征、波动特征、周期特征和滞后特征,比如均值、方差、最大最小值、移动平均、环比同比、lag 值、rolling window 特征、傅里叶周期特征等。然后可以用 XGBoost、LightGBM、随机森林这类模型训练,输出 feature importance 或 SHAP 值,筛出对目标最重要的特征。

筛出重要特征后,再做规则建模,通常不是替代机器学习,而是把它变成更稳定的上线逻辑。比如某些特征在过去 7 天持续上升且波动超过阈值,就触发告警;或者把模型识别出的关键因子整理成多条规则做线上解释。这样做的好处是既保留了机器学习筛特征的能力,也兼顾了规则系统的稳定和可解释。

6. Agent 工具调用你知道怎么训练吗,训练集应该包含哪些,怎么得到训练的数据集

训练 Agent 的工具调用能力,训练集里至少要覆盖三类样本:该调用工具的、不该调用工具的、需要多工具串并联调用的。只教模型“会调用”是不够的,还得教它“什么时候不要调”“参数怎么补齐”“失败后怎么处理”。

数据来源一般有四种。第一种是人工标注轨迹,把问题、思考过程、工具选择、参数填写和结果整合成监督样本;第二种是线上日志回放,把高质量人工操作或已有系统调用链抽出来;第三种是规则合成数据,用模板生成标准调用样本;第四种是模型自举,用强模型生成轨迹,再人工抽检修正。真正关键的是负样本和边界样本,像参数缺失、工具返回空、多个工具都可用但优先级不同,这些不补,模型上线很容易乱调。

7. 假如一个 query 有两个工具都可以调用,训练集应该怎么设计

如果一个 query 有两个工具都能答,训练集不能简单只保留一个标准答案,否则模型会被训成单一路径。更合理的做法是把不同场景拆开:有的场景优先选低成本工具,有的优先选高精度工具,有的先调粗粒度工具做判断,再调细粒度工具补充结果。

训练样本里最好显式体现选择依据,比如同一个 query 配两条轨迹,一条说明为什么工具 A 更快,一条说明为什么工具 B 更准。再进一步,可以把环境特征也带进去,比如工具实时状态、超时概率、返回字段丰富度。这样模型学到的不是机械映射,而是真正的调度策略。

8. 你构造数据集遇到过什么难点,怎么解决

最大的问题一般不是数据不够,而是数据不真实。人工造的数据常常太标准,用户表达很完整,参数给得很全,工具永远成功,结果上线之后用户一句话没说全,模型就不会了。

解决方式通常是把真实线上 query 引进来,按意图、复杂度、缺参情况、歧义情况分桶,然后做针对性补齐。另一个难点是标注一致性,同一种问题不同人可能给出不同工具路径,所以需要先统一 schema 和决策标准。还有一个常见问题是长尾样本太少,这时就要靠模板改写、对抗生成和人工补充边界案例,把最容易出事故的地方优先补上。

9. LoRA 和全参数微调的区别

LoRA 是在原始权重旁边插入低秩矩阵,只训练少量新增参数,原模型参数通常冻结。全参数微调则是直接更新模型所有参数。LoRA 的优势是显存占用小、训练快、方便多任务切换,适合领域适配、指令跟随、工具调用格式对齐这类场景;全参数微调自由度更大,但代价也更高。

本质上,LoRA 假设任务迁移需要的参数更新分布在一个低秩子空间里,所以不用修改全部权重也能适配。如果任务只是在现有能力上做局部偏移,LoRA 往往足够;如果任务导致表示空间整体变化很大,LoRA 可能会不够,尤其 rank 太低的时候更明显。

10. DPO、PPO、GRPO

PPO 是强化学习式对齐方法,通常需要一个 reward model 对模型输出打分,再根据奖励做策略更新。它灵活,但训练链路长,超参数敏感,稳定性相对差。DPO 是把偏好学习直接写成一个监督式目标,用 chosen 和 rejected 成对数据直接优化策略,不显式采样长期轨迹,也不显式训练 RL policy update,工程上更简单。

GRPO 可以看成是把偏好从 pair 扩展到 group,不再只比较一对答案,而是利用一组候选之间的相对优劣关系来做优化。这样能更充分利用多候选信息,在排序、多样本比较和组内奖励场景里更自然。三者最大的区别不只是公式,而是它们依赖的数据形态、训练稳定性和适用任务范围不一样。

11. kernel 级别的优化,比如用 CUTE DSL 或者手写 CUDA 做 fusion,这类算子融合优化

kernel 级别优化的核心目标是减少访存开销、减少 kernel launch 次数、提高并行利用率。很多模型推理慢,不一定是算力不够,更多是 memory boun

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

AI-Agent面试实战专栏 文章被收录于专栏

本专栏聚焦 AI-Agent 面试高频考点,内容来自真实面试与项目实践。系统覆盖大模型基础、Prompt工程、RAG、Agent架构、工具调用、多Agent协作、记忆机制、评测、安全与部署优化等核心模块。以“原理+场景+实战”为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.

全部评论

相关推荐

2027 届信息编程类岗位求职全攻略结合你擅长 Python 开发、熟悉编程调试的背景,2027 届找信息编程类工作核心是抓准时间线、精准定位方向、硬核技术准备、多渠道高效投递,以下是可直接落地的行动方案。一、核心岗位与适配方向(精准匹配你的技能)结合你的编程基础,优先选择 3 类高匹配岗位,兼顾稳定性与成长空间:岗位方向核心技能要求适配你的优势薪资区间(本科 / 硕士)Python 后端开发熟练 Python、Django/Flask/FastAPI、MySQL/Redis、Git 版本控制熟悉 Python 项目开发、能独立完成接口开发与调试15-25 万 / 年 / 20-35 万 +测试开发 / 自动化测试Python 编程、Selenium/Appium、Pytest、接口测试、CI/CD擅长代码排查、能将编程能力转化为自动化测试脚本14-22 万 / 年 / 18-30 万数据处理 / 数据分析Python(Pandas/Numpy/Matplotlib)、SQL、数据可视化、基础统计可将编程技能用于数据清洗、分析与可视化落地14-24 万 / 年 / 18-32 万二、2027 届校招全时间线(关键节点不遗漏)校招节奏提前,务必建立专属日历,避免错过黄金机会:2026 年 4-6 月(暑期实习冲刺)核心目标:争取可转正实习,这是进入大厂 / 优质企业的 “快车道”(实习转正率普遍超 60%)重点动作:投递阿里、字节、腾讯等大厂暑期实习,准备简历与笔面试;利用学校就业中心、***等渠道补投中小厂实习2026 年 7-8 月(秋招提前批)核心目标:抢占优质岗位,提前批无笔试或流程简化,竞争相对较小重点动作:锁定目标公司招聘公众号 / 官网,投递提前批;重点冲刺 AI、大模型相关岗位(2027 届校招 AI 岗占比显著提升)2026 年 9-10 月(秋招核心批)核心目标:大规模投递,冲刺核心 Offer,岗位最全、机会最多重点动作:网申广撒网(覆盖 10-15 家企业),同步参加线下宣讲会;全力备战笔面试,集中攻克技术难点2026 年 11-12 月(秋招补录 + 实习转正)核心目标:捡漏剩余优质岗位,衔接实习转正结果重点动作:关注补录信息,跟进未回复的投递;与实习公司确认转正意向,锁定正式岗位2027 年 2-4 月(春招补招)核心目标:保底拿 Offer,弥补秋招遗憾重点动作:更新简历(补充秋招经验),集中投递未招满的企业;重点关注国企、事业单位补招岗位三、技术与简历硬核准备(决定能否拿到 Offer)(一)技术准备(针对性强化,快速提分)基础必背(面试高频)计算机基础:数据结构与算法(数组、链表、树、排序 / 查找)、操作系统(进程 / 线程、内存管理)、计算机网络(HTTP/HTTPS、TCP/UDP)、数据库(MySQL 索引、事务、Redis 常用数据结构)Python 专项:Python 解释器原理、多线程 / 多进程、装饰器、生成器 / 迭代器、异常处理、常用标准库(os、sys、re)项目实战(核心加分项)结合你的技能,打造 2-3 个可展示项目,务必写清技术栈、个人职责、解决的问题、量化成果,用 STAR 法则梳理推荐项目方向:① Python 自动化工具(如批量文件处理、接口自动化测试框架,集成你熟悉的调试能力)② 数据可视化项目(如基于 Matplotlib 的校园数据统计、Pandas+Streamlit 的简易数据分析平台)③ 小型 Web 应用(如 FastAPI+MySQL 的待办管理系统,体现全栈思维)关键动作:将代码上传至 GitHub,保证可读性与注释,面试时可现场演示刷题计划(提升笔试通过率)平台:********(重点刷中等题,每日 2-3 道)、牛客网(刷企业真题)节奏:每天 1 小时,优先刷数组、链表、二叉树、动态规划等高频题型,结合 Python 实现(二)简历优化(10 秒抓住 HR 眼球)核心结构(必含模块,拒绝杂乱)基本信息:姓名 + 电话 + 邮箱 + GitHub(必填)+ 求职意向(明确 1 个方向,如 Python 后端开发)教育背景:学校 + 专业 + GPA(≥3.0 可写)+ 核心课程(5-8 门匹配岗位,如数据结构、数据库、Python 高级编程)技术技能:分类罗列,标注熟练度(如 “熟练:Python、FastAPI、MySQL;掌握:Redis、Docker”,避免 “精通”)项目经历(重中之重):每个项目按 “背景 - 职责 - 技术难点 - 成果” 撰写,量化成果(如 “优化接口响应速度 30%”“覆盖 80% 测试场景”)荣誉奖项:优先写编程类(蓝桥杯、ACM、互联网 +)、学术类(奖学金),无关奖项不写关键技巧匹配 JD 关键词:投递前对照岗位描述,调整简历技能与项目内容,提升 ATS 通过率拒绝空话:不写 “认真负责、学习能力强”,用技术细节和成果体现四、多渠道高效投递(扩大机会,提高效率)按 “优先级排序” 组合渠道,避免海投,确保每封投递都有反馈:第一优先级(最稳,优先投递)校内渠道:学校就业指导中心官网、校园宣讲会、双选会(岗位对口、竞争小,企业对本校学生认可度高)企业官方渠道:目标公司招聘官网、招聘公众号(如 “腾讯招聘”“字节跳动招聘”),投递简历审核通过率更高第二优先级(补充投递,扩大范围)内推:通过学长学姐、牛客网、脉脉获取内推码,内推可加快简历筛选速度,甚至免笔试官方求职平台:教育部 24365 校园招聘服务平台、国聘网、国资委网站央企招聘专区(无虚假信息,适合找国企 / 事业单位岗位)第三优先级(兜底投递,保底机会)垂直平台:牛客网(校招 / 实习专属,技术岗多)、万马职场(程序员垂直平台)综合平台:智联招聘、*******(筛选 “校招” 标签,避免虚假企业)五、笔面试通关技巧(提升成功率)(一)笔试准备技术笔试:重点刷 ******** 中等题、企业真题,熟练 Python 语法与算法实现行测 / 性格测评:提前练习行测(言语理解、逻辑推理、数量关系),性格测评按真实情况填写,避免极端答案(二)面试技巧(分环节应对)自我介绍(1-2 分钟,突出亮点)结构:基本信息 + 核心技能 + 项目经历 + 求职动机,结合 Python 技能和项目经验,简洁有力技术面(核心环节)常见问题:Python 基础(如深浅拷贝、GIL 锁)、项目相关(技术难点、解决方案)、算法题(现场手写代码)应对技巧:不会时坦诚说明思路,不要沉默;结合你调试经验,可强调 “如何排查问题、定位根因、优化代码”HR 面(考察匹配度)常见问题:职业规划、为什么选择该公司、薪资期望、加班接受度应对技巧:职业规划结合技术方向,薪资期望参考行业平均水平(提前调研目标公司 / 岗位薪资),不回避加班问题六、关键注意事项(避坑 + 加分)拒绝虚假招聘:不缴纳任何费用(企业招聘免费),核实企业资质(用企查查 / 天眼查),警惕 “培训贷”“高薪骗局”重视实习:暑期实习是转正的关键,即使未转正,也能积累项目经验、熟悉企业流程,增加秋招竞争力持续学习:关注技术趋势(如 AI 大模型应用、云原生),补充相关技能(如 FastAPI、Docker、K8s),提升差异化竞争力复盘迭代:每次投递 / 面试后记录问题(如简历漏洞、技术短板),及时调整,提升下一次成功率。注:以上来源于豆包。注
点赞 评论 收藏
分享
评论
点赞
10
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务