Agent 开发工程师一面、二面面经
完整信息
本篇目录
1、你觉得planning规划这一块是agent框架做的还是大模型做的?
LLM = 规划能力来源、Agent 框架= 规划执行机制,如果是 ReAct、Plan-and-Execute 这类 Agent,规划主要靠模型生成;如果是固定业务流,比如审批流、数据管道,规划更多由框架/代码写死。
2、短期记忆和长期记忆有什么区别?
短期记忆就是当前上下文窗口里的内容,比如当前对话、当前文件、刚刚的工具结果。长期记忆通常存在外部系统里,比如数据库、向量库、用户画像、项目知识库。
3、工具的话你会用MCP之类的吗?还是就自己写代码写?你觉得大模型的工具实现有什么好处吗?
我会根据场景选择工具接入方式。如果是标准化、可复用的外部能力,比如数据库、文件系统、浏览器、GitHub、知识库,我更倾向于用 MCP 这类协议来接,因为它把工具描述、参数、返回结果和权限边界标准化了,方便多个 Agent 或模型复用。如果是临时的数据处理、业务逻辑验证,直接写 Python 或脚本会更快。工具调用的核心价值是弥补大模型本身的短板,比如实时信息、精确计算、系统操作和外部状态读写,让模型负责决策和编排,让工具负责可靠执行。
4、Self-attention机制:QKV为什么要这么分?怎么算的?同一个token的向量是一样的吗?
Self-attention 里 Q、K、V 本质上是同一个 token 向量经过三个不同矩阵投影得到的三个角色。Q 表示“我想找什么信息”,K 表示“我有什么特征可以被匹配”,V 表示“我真正提供的内容”。计算时,每个 token 的 Q 会和所有 token 的 K 做点积,经过缩放和 softmax 得到注意力权重,再用这个权重对所有 V 加权求和,得到融合上下文后的新表示。
5、Python多线程:为什么有GIL?多线程的锁有哪些?Lock和RLock有啥区别?
Python 的 GIL 是 CPython 里的全局解释器锁,主要是为了简化解释器实现、保护引用计数内存管理、降低 C 扩展复杂度。多线程锁有 Lock、RLock、Semaphore、Condition、Event、Barrier。其中 Lock 是普通互斥锁,同一个线程重复 acquire 会死锁;RLock 是可重入锁,同一个线程可以多次 acquire,但要 release 相同次数,适合递归调用或嵌套函数里重复拿同一把锁的场景。
6、上下文工程经验:有没有做过To-Do List机制?为什么这能让模型更聚焦?怎么落地的?
To-Do List 机制本质上是给大模型一个外部工作记忆。因为模型上下文很长时容易发散、遗漏或者重复做事,所以把目标拆成待办项,并标记 pending、in_progress、done,可以让模型始终知道当前任务是什么、做到了哪一步、还有哪些没有完成。落地时一般是在 Agent 状态里维护一个结构化任务列表,每轮执行前选择一个当前任务,工具调用后更新状态,遇到新问题就追加任务,最后按列表做验收。
7、Skills的原理了解吗?底层怎么实现的?
Skills 可以理解成按需加载的能力包,是把某类任务的经验、流程、模板、示例、工具使用规则封装起来。底层一般包括 skill 描述文件、触发规则、操作步骤、脚本、模板和参考资料。好处是把可复用的任务方法沉淀下来,减少每次手写 prompt 的成本,也让模型在特定任务上输出更稳定
本篇目录
当前问题0107
- 01
你觉得planning规划这一块是agent框架做的还是大模型做的?
- 02
短期记忆和长期记忆有什么区别?
- 03
工具的话你会用MCP之类的吗?还是就自己写代码写?你觉得大模型的工具实现有什么好处吗?
- 04
Self-attention机制:QKV为什么要这么分?怎么算的?同一个token的向量是一样的吗?
- 05
Python多线程:为什么有GIL?多线程的锁有哪些?Lock和RLock有啥区别?
- 06
上下文工程经验:有没有做过To-Do List机制?为什么这能让模型更聚焦?怎么落地的?
- 07
Skills的原理了解吗?底层怎么实现的?
