科大讯飞 AI Agent开发 一面
1、自我介绍
2、实习介绍, 遇到过什么困难,有什么提升
3、如果现在就是开发的话,一般用什么 IDE
Python 开发我一般用 PyCharm 或者 VS Code。如果项目偏工程化、代码量比较大、需要比较强的调试和项目管理能力,我更倾向用 PyCharm,因为它对 Python 项目结构、虚拟环境、断点调试、调用链查看支持比较完整。如果项目需要同时处理前后端、脚本、配置和容器文件,我会用 VS Code,因为插件生态更灵活,远程开发也比较方便。如果涉及服务部署和 Linux 环境排查,我也会结合终端、vim、tmux 一起用。
4、项目介绍
5、上线后出现 bug,一般怎么处理
线上出现 bug 时,第一步是先判断影响范围和优先级,比如是单个用户偶发、某个接口稳定复现,还是整个服务不可用。第二步是快速止损,比如回滚版本、降级功能、关闭有问题的实验开关,先保证核心功能可用。第三步再做定位,结合日志、监控、错误堆栈、请求参数和发布时间去分析是代码逻辑问题、配置问题、依赖服务异常,还是数据脏数据导致的。第四步是修复和验证,修复后要在测试环境复现同样输入,确认问题解决,再灰度上线。最后要补充复盘,包括问题根因、影响范围、是否可以通过监控或测试提前发现,以及后面如何避免同类问题再次出现。
6、怎么做性能分析
性能分析通常会拆成几个维度:响应时间、吞吐量、资源占用和稳定性。响应时间看接口整体耗时以及各阶段耗时,比如检索耗时、模型推理耗时、工具调用耗时;吞吐量看单位时间处理多少请求;资源占用看 CPU、内存、显存、网络 IO;稳定性看高并发下是否超时、报错率是否升高。
在 AI Agent 场景里,性能瓶颈一般集中在模型推理、检索、外部工具调用和序列化解析这几块。做分析时通常会先打点,把整条链路拆成多个阶段分别统计耗时,然后看瓶颈到底在哪。如果是 Python 服务,我会先用日志埋点看粗粒度耗时,再用 profiler 做热点函数分析。
import time
def profile_step(name):
def wrapper(func):
def inner(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
print(f"{name} cost: {(time.time() - start) * 1000:.2f} ms")
return result
return inner
return wrapper
@profile_step("retrieval")
def retrieval():
time.sleep(0.05)
return ["doc1", "doc2"]
@profile_step("llm_infer")
def llm_infer():
time.sleep(0.12)
return "answer"
retrieval()
llm_infer()
如果需要更细一点的热点分析,可以用 cProfile、line_profiler,部署环境里再结合 Prometheus、Grafana 看接口分位数耗时和资源曲线。
7、抓包工具知道哪些,能讲一下吗
常见抓包工具有 Wireshark、tcpdump、Charles、Fiddler。Wireshark 适合图形化分析网络包,能看到 TCP、HTTP、TLS 等协议细节;tcpdump 更适合服务器环境,命令行抓包方便,适合在线上机器先抓原始流量再离线分析;Charles 和 Fiddler 更常用于代理抓包,适合看 HTTP/HTTPS 请求和接口返回内容。
如果是服务端排查接口问题,我一般会优先看日志和网关记录;如果怀疑网络层或者协议层有问题,再用 tcpdump 抓包。比如一个接口明明代码没超时,但客户端一直报连接异常,就可以抓包看是不是三次握手没完成、重传严重,或者请求根本没到服务端。
8、从时序上怎么分析接口问题
从时序上分析,本质上就是把一次请求按时间线拆开。先看客户端发起请求的时间,再看网关接收时间、服务端接收时间、业务处理开始时间、模型调用开始和结束时间、下游工具调用时间、最终响应返回时间。把这些点串起来,就能知道问题是在网络传输、服务排队、业务逻辑处理,还是下游依赖上。
比如一个请求总耗时 3 秒,如果服务端真正处理只花了 500ms,那问题可能不在业务逻辑,而在网络或者上游重试;如果服务端处理里大模型调用就占了 2.5 秒,那瓶颈就很清楚是在推理阶段。所以时序分析的核心不是只看总耗时,而是拆阶段。
9、调试手段有哪些
调试通常分为本地调试、日志调试、远程调试和线上排查。本地调试最常见的是断点调试,适合看变量值、调用栈和流程走向;日志调试适合复杂异步链路,能够保留完整上下文;远程调试适合测试环境复现问题;线上排查更多依赖日志、监控、trace 和必要时抓包。如果是 Agent 项目,我会重点看这几个地方:用户输入是什么、路由到了哪个节点、Prompt 最终长什么样、工具参数是什么、模型原始输出是什么、解析阶段有没有报错。
import pdb
def divide(a, b):
pdb.set_trace()
return a / b
print(divide(10, 2))
pdb适合快速进入断点环
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
本专栏聚焦 AI-Agent 面试高频考点,内容来自真实面试与项目实践。系统覆盖大模型基础、Prompt工程、RAG、Agent架构、工具调用、多Agent协作、记忆机制、评测、安全与部署优化等核心模块。以“原理+场景+实战”为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.
