Python¶
共 102 题 · 子专题 3 个。点击标题直接阅读。
子专题¶
题目列表¶
- @dataclass 自动生成了哪些方法?
- Agent 在处理 LLM 流式响应时,应该用什么方式逐 token 处理输出?
- Agent 工具注册表用 list 存还是 dict 存,有什么区别?
- Agent 并发调用多个 LLM 时,如何正确处理超时和取消?
- Agent 并发调用多个工具,有的工具响应快有的慢,如何让用户尽早看到可用结果?
- Agent 服务上线后内存持续增长,没有明显的代码 bug,如何排查?
- Agent 服务跑了一段时间后内存持续增长,你怎么排查和解决?
- Agent 框架冷启动慢,怀疑是 torch、sentence-transformers 导入耗时,怎么优化?
- Agent 框架里 LLM 客户端适合用单例吗?有什么替代方案?
- Agent 消息对象用了 slots 之后,发现子类继承它时内存优化失效,怎么排查和修复?
- Agent 系统中每次 LLM 调用都创建一个记录对象,如何优化这类高频小对象的内存占用?
- Agent 系统里有多个模块都需要访问 LLM 客户端(如 openai.AsyncOpenAI),如何设计才能避免重复创建连接池,同时保证可测试性?
- Agent 调用外部工具时,如何区分_应该重试_和_不应该重试_的错误?
- Agent 调用搜索工具超时后,责任链的重试 Handler 用指数退避,但如果 LLM 的 context window 快满了,等待重试会浪费 token 预算,怎么设计?
- Agent 配置接口里,用户传 memory_limit=None 表示_不限制内存_,不传则表示_用平台默认值_,这两种语义怎么区分?
- Agent 需要同时处理用户实时请求(高优先级)和后台批量任务(低优先级),如何设计任务调度?
- LLM 返回的 JSON 解析失败了,你会怎么处理?
- LangGraph 并行节点执行时,浅合并会导致什么问题,如何用 Annotated + reducer 正确解决?
- Protocol 和 ABC 在定义接口时有什么本质区别?
- Python import 时会重复执行模块代码吗?
- Python 上下文管理器是什么,with 语句是怎么工作的?
- Python 函数默认参数在什么时候求值?
- Python 多继承的 MRO C3 算法原理是什么,super() 在多继承中如何工作?
- Python 多重继承时,方法查找按什么顺序进行?
- Python 字典底层哈希表的实现原理是什么?
- Python 字典的时间复杂度是多少?
- Python 异常类怎么自定义,什么时候该用自定义异常?
- Python 描述符协议是什么?
- Python 描述符是什么?
- Python 普通实例为什么会有额外的内存开销?
- Python 深拷贝和浅拷贝有什么区别?
- Python 的 GIL 是什么,它对多线程有什么影响?
- Python 的 MRO 是什么,怎么查看一个类的 MRO?
- Python 的元类是什么?
- async def 和普通函数有什么本质区别?
- asyncio.Queue 是什么,和普通 queue.Queue 有什么区别?
- asyncio.Semaphore 是什么,怎么用?
- asyncio.gather 和 asyncio.as_completed 分别是什么?
- await 关键字是如何在协程链上传播控制权的?
- cProfile、line_profiler、memory_profiler 分别用来解决什么问题?
- contextvars.ContextVar 解决了什么问题?
- dataclass 与 slots 如何配合优化 Agent 数据模型,以及和 Pydantic 的选型策略?
- dataclass 和 Pydantic BaseModel 的核心区别是什么?
- functools 的 lru_cache、partial、reduce 在 Agent 中如何应用,各自有什么限制?
- getattr 什么时候会被调用?
- getattr 和 getattribute 的本质区别是什么?
- lru_cache 的参数有什么要求?
- new 和 init 分别负责什么?
- threading.Event、Lock、Queue 分别解决什么问题?
- 一个 Multi-Agent 系统需要并发调用 10 个子 Agent,每个 Agent 内部又会调用 LLM,如何设计并发控制策略避免触发 OpenAI Rate Limit?
- 为什么要用 functools.wraps?
- 什么时候用 Protocol,什么时候用 ABC?
- 什么是单例模式,Python 里最简单的单例实现是什么?
- 列表推导式和生成器表达式有什么区别?
- 在 Agent 批量调用 LLM 时,Semaphore 满了任务会怎样?如何避免因退避重试导致槽位被长期占用?
- 在 Agent 流式输出场景中,如果用户中途关闭了浏览器,服务端应该如何感知并停止 LLM 调用,避免产生不必要的 Token 费用?
- 在 Agent 系统中,如何用 Python 实现线程安全的单例模式来管理全局配置?请对比不同实现方式的优缺点。
- 在 LLM 场景中,为什么要用指数退避而不是固定间隔重试?如果多个 Agent 实例同时触发重试,会出现什么问题,怎么解决?
- 在 LLM 应用开发中,如何利用 Pydantic 实现 LLM 结构化输出,并自动生成 Tool Schema?
- 在 LangChain 的 BaseModel 配置类中,为什么可以直接用 Field() 做类型校验,而不需要手写描述符?
- 在 LangChain 自定义 Tool 中,如果不用 Pydantic 定义参数 Schema 会怎样?
- 在 LangChain 这类 Agent 框架中,新增一种 Tool 类型时需要手动到处注册,有没有更优雅的方案?
- 在 LangChain 里不加 @functools.wraps 会怎样?
- 在 LangGraph 中,如果 Agent State 里有一个记录_已访问 URL_的集合,并行节点各自爬取不同的页面,怎么设计这个字段才不会出问题?
- 在 LangGraph 多步骤 Agent 中,如何用 ContextVar 实现全链路 trace_id 透传,而不污染 AgentState?
- 在 LangGraph 节点接口设计中,应该用 Protocol 还是 ABC 来约束节点实现?
- 在 RAG 管道中,需要同时处理文档解析、Embedding 计算和向量存储写入三个步骤,如何设计并发架构最大化吞吐量?
- 在 RAG 系统中,对 Embedding 函数加 lru_cache 时踩过哪些坑?
- 在基于线程的多 Agent 系统中,如何用 threading.Event、Lock、Queue 实现 Supervisor-Worker 架构,保证任务分发的线程安全和优雅停止?
- 在处理 LLM 流式响应时,如何高效拼接 token?
- 在多 Agent 协作系统中,如何用上下文管理器实现跨服务的分布式链路追踪?
- 在定义 Agent 组件接口时,Python 的 Protocol 和 abc.ABC 各有什么特点,在 Agent 框架设计中应该如何选择?
- 在异步 AI Agent 服务中,如何用 ContextVar 实现请求级别的上下文隔离,避免并发请求间的数据污染?
- 在异步 Agent 框架中,能否用 threading.Queue 在协程之间传递任务?
- 在批量处理 LLM 请求时,gather 和 as_completed 应该怎么选择?
- 在构建 AI Agent 框架时,Tool 参数校验和 Agent 配置管理应该用 Pydantic v2 还是 dataclass?
- 在构建 AI Agent 框架时,用多重继承组合 MemoryMixin、ToolMixin、LoggingMixin,MRO 和 C3 线性化算法是如何决定方法查找顺序的?
- 在设计 AI Agent 的 Tool 注册函数时,可变默认参数陷阱是如何产生的?None 哨兵模式怎么解决?
- 在设计一个支持多家 LLM 提供商的 Agent 框架时,LLM 客户端接口应该用 Protocol 还是 ABC?
- 在高并发 AI Agent 系统中同时运行数千个 Agent 实例时,slots 的工作原理是什么?怎么正确使用它优化内存?
- 如何为 AI Agent 系统设计自定义异常层次,以及重试、降级、熔断三层容错机制?
- 如何将上下文管理器应用于 Agent 链路追踪,包括 LLM 调用耗时、异常捕获,以及与 OpenTelemetry 的结合?
- 如何用 Mixin 为 Agent 设计可插拔的能力组件?
- 如何用 asyncio.Queue 实现生产者-消费者模式调度 Agent 任务,并支持优雅关闭和优先级调度?
- 如何用 new 实现线程安全的单例模式?
- 如何用动态代理透明地为 Agent 所有工具调用加上日志和耗时监控?
- 如何用描述符实现 Agent 配置类的参数校验?
- 带参数装饰器和普通装饰器有什么区别?
- 当 AI Agent 系统出现响应慢、内存持续增长等性能问题时,如何使用性能分析工具链定位问题,并给出常见瓶颈的优化策略?
- 描述符协议的属性查找优先级是怎样的?property 的底层原理是什么?
- 生成器和普通函数有什么区别?
- 给 SmartAgent 加一个新的 TracingMixin,放在哪个位置最合适?如果放错了会怎样?
- 请解释 CPython 的引用计数机制和分代垃圾回收原理,以及在 AI Agent 中如何防范对话历史和 Tool 大对象导致的内存泄漏?
- 请解释 Protocol、TypeVar、Generic、Literal 的作用,并说明如何在 AI Agent 框架设计中用它们实现类型安全的工具注册和 Agent 接口约束。
- 请解释 Python 元类的工作原理,并实现一个基于元类的 Tool 自动注册系统,同时与 init_subclass 方案对比。
- 请解释 Python 描述符的 get、set、delete 协议,并说明如何用描述符实现 Agent 配置的类型校验和环境变量注入?
- 请解释 Python 生成器的底层帧挂起原理,以及如何用异步生成器实现 LLM 流式输出的 FastAPI SSE 接口?
- 请解释 asyncio 事件循环的工作原理,以及如何在 Agent 中正确使用 asyncio.gather 并发调用 LLM、用 Semaphore 防止 Rate Limit?
- 请解释带参数装饰器的三层嵌套结构,并实现一个支持指数退避+抖动的 LLM 自动重试装饰器。
- 请解释责任链模式的设计原理,并说明如何将其应用于 Agent 工具调用失败的场景,实现多级降级策略?
- 请说明 GIL 的工作原理,以及在 AI Agent 中三类典型负载(LLM 调用、文档处理、Embedding 计算)应该如何选择并发方案?
- 责任链模式是什么?