科大讯飞 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()

如果需要更细一点的热点分析,可以用 cProfileline_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面试实战专栏 文章被收录于专栏

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

全部评论

相关推荐

03-12 15:35
嘉应学院 Python
M_地球online...:真“boss直聘”
点赞 评论 收藏
分享
02-04 17:01
南昌大学 Java
牛客96763241...:拿插件直接投就完了,这玩意看运气的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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