万类智生 AI Agent开发 一面
1. 自我介绍
2. HTTP 请求正文包含哪些内容
HTTP 请求正文就是 body,通常出现在 POST、PUT、PATCH 这类请求里。它承载的是业务数据,具体格式由 Content-Type 决定。常见的有:
application/json:最常见,适合接口调用和 Agent 服务通信application/x-www-form-urlencoded:表单编码multipart/form-data:上传文件、图片、附件text/plain:纯文本application/octet-stream:二进制流
比如一个 Agent 问答接口,请求正文常见长这样:
POST /api/agent/chat HTTP/1.1
Content-Type: application/json
{
"session_id": "s_1001",
"query": "帮我总结这份文档",
"stream": true,
"tools": ["search", "retrieval", "python"]
}
3. Redis 中常用的数据结构
Redis 常用的数据结构有五个核心类型:String、Hash、List、Set、ZSet。String 适合做缓存、计数器、分布式锁;Hash 适合存对象,比如用户会话信息;List 适合消息队列、任务队列;Set 适合去重、标签集合;ZSet 适合排行榜、延迟任务、优先级队列。
在 AI Agent 场景里,Redis 很常用于:
- 缓存会话上下文
- 存工具调用状态
- 存 SSE 流式结果片段
- 做分布式锁
- 做任务队列和延迟重试
比如缓存会话:
import redis, json
r = redis.Redis(host='localhost', port=6379, decode_responses=True)
session_key = "agent:session:s_1001"
messages = [
{"role": "user", "content": "帮我查一下北京天气"},
{"role": "assistant", "content": "正在为你查询"}
]
r.set(session_key, json.dumps(messages), ex=3600)
4. 有序集合 ZSet 的底层数据结构
Redis 的有序集合 ZSet 底层不是单一结构,而是组合实现。通常由 跳表 skiplist + 哈希表 dict 组成。哈希表负责根据 member 快速查 score,时间复杂度接近 O(1);跳表负责按 score 排序,支持范围查询、排名查询,复杂度通常是 O(logN)。
所以 ZSet 很适合这种场景:
- 按时间排序的消息流
- Agent 工具调用优先级队列
- 热度榜
- 延迟任务调度
示例:
r.zadd("agent:task_queue", {
"task_1001": 1712001000,
"task_1002": 1712001100
})
# 取最早到期任务
tasks = r.zrange("agent:task_queue", 0, 0, withscores=True)
print(tasks)
5. TCP 和 UDP 的区别
TCP 是面向连接、可靠传输、字节流协议,保证数据不丢、不乱序、不重复,适合对可靠性要求高的场景,比如 HTTP/1.1、数据库连接、文件传输。UDP 是无连接、不保证可靠、面向报文的协议,特点是轻量、开销小、延迟低,适合实时性强的场景,比如音视频、实时语音、游戏同步。
核心区别主要在这几个点:
- TCP 需要三次握手,UDP 不需要
- TCP 有重传、确认、流量控制、拥塞控制,UDP 默认没有
- TCP 保证顺序和完整性,UDP 不保证
- UDP 更适合低延迟场景
AI Agent 里,如果是普通问答接口一般还是 HTTP/TCP;如果是实时语音 Agent、实时多模态交互,UDP 相关协议价值更大。
6. 用 UDP 如何实现 TCP
UDP 本身不可靠,但可以在应用层补齐 TCP 的关键机制,让它“像 TCP 一样工作”。核心就是自己实现:
- 序列号:解决乱序问题
- ACK 确认:确认哪些包收到了
- 超时重传:丢包后重新发送
- 滑动窗口:控制发送速率
- 流量控制:避免接收端被压垮
- 拥塞控制:避免网络拥塞
- 校验和:校验数据正确性
这也是很多基于 UDP 的可靠传输协议的思路,HTTP/3 底层的 QUIC 本质上就是在 UDP 之上自己实现了可靠传输、多路复用和加密握手。
一个极简版思路如下:
# 伪代码:发送端
packet = {
"seq": 1001,
"data": "hello"
}
send(packet)
start_timer(seq=1001)
if timeout(seq=1001):
resend(packet)
# 接收端
if packet.seq == expected_seq:
deliver(packet.data)
send_ack(packet.seq)
expected_seq += 1
else:
cache_or_drop(packet)
7. HTTP/3 了解吗
HTTP/3 是 HTTP 协议的一个新版本,它不再基于 TCP,而是基于 QUIC,而 QUIC 是跑在 UDP 上的。HTTP/3 的重点不是只换了个底层协议,而是把过去 TCP + TLS + HTTP/2 里一些问题重新设计了,尤其是连接建立延迟、多路复用阻塞和弱网恢复能力。
它的几个关键特点是:
- 基于 QUIC,底层走 UDP
- 默认集成 TLS 1.3
- 建连更快
- 多路复用更彻底,减少队头阻塞
- 更适合弱网、移动网络和高丢包场景
如果 AI Agent 产品有大量流式输出、移动端接入、实时交互,HTTP/3 的价值会比传统 HTTP/1.1 更明显。
8. HT
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
本专栏聚焦 AI-Agent 面试高频考点,内容来自真实面试与项目实践。系统覆盖大模型基础、Prompt工程、RAG、Agent架构、工具调用、多Agent协作、记忆机制、评测、安全与部署优化等核心模块。以“原理+场景+实战”为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.

查看7道真题和解析