万类智生 AI Agent开发 一面

1. 自我介绍

2. HTTP 请求正文包含哪些内容

HTTP 请求正文就是 body,通常出现在 POSTPUTPATCH 这类请求里。它承载的是业务数据,具体格式由 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 常用的数据结构有五个核心类型:StringHashListSetZSetString 适合做缓存、计数器、分布式锁;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面试实战专栏 文章被收录于专栏

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

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

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