Skip to content

Python 面试题

本页只放 Python 面试标准回答、项目话术、常见追问和知识点跳转。基础语法、数据结构、函数模块、面向对象、异常文件、类型标注、并发异步、Web API、数据库、数据分析、测试和 AI 开发的原理与 Demo 放在知识点页,深度验收看 Python 从零到精通验收清单

使用方式

mermaid
flowchart TD
    A["面试页:标准回答"] --> B["知识点页:原理、流程图、Demo"]
    B --> C["项目页:脚本、服务、数据处理、AI应用"]

高频问题

面试题标准回答原理知识点
Python 应该怎么从零学到生产级不能只学语法,要按环境依赖、基础语法、数据结构、函数模块、异常文件、类型标注、日志测试、并发异步、Web API、数据库、数据处理、AI 工程这条链路学习。Python从零到生产级掌握从零到精通验收清单商业场景训练营
怎么判断 Python 是否真正学懂不能只会写脚本。真正学懂要能讲清解释器和虚拟环境、对象引用、数据结构、模块化、异常资源、类型标注、GIL、asyncio、FastAPI 请求链路、数据库事务、Pandas 数据口径、测试日志和 AI/RAG 工程化。从零到精通验收清单
Python 适合做什么Python 语法简洁、生态丰富,适合脚本自动化、Web API、数据分析、爬虫、测试工具、AI 应用和运维工具。Python首页
listtupledictset 怎么选list 有序可变,适合列表;tuple 有序不可变,适合固定结构;dict 键值映射;set 去重和集合运算。数据结构
Python 函数有什么特点函数是一等对象,可以赋值、传参、返回;支持默认参数、可变参数、关键字参数和闭包。函数与模块
模块和包是什么模块是 .py 文件,包是包含多个模块的目录。它们用于组织代码、复用能力和隔离命名空间。函数与模块
Python 面向对象怎么理解类封装数据和行为,对象是类的实例;继承用于复用和扩展,多态让不同对象以统一接口工作。面向对象
异常处理怎么写try/except/else/finally 捕获和清理,业务异常要保留上下文,不要空 except 吞掉错误。异常与文件
文件读写要注意什么使用 with open(...) 自动关闭资源,明确编码,处理大文件时避免一次性读入全部内容。异常与文件
类型标注有什么用类型标注提升可读性、IDE 提示和静态检查能力,但运行时默认不强制类型。复杂项目建议配合 mypy/pyright。类型标注
GIL 是什么GIL 是 CPython 的全局解释器锁,使同一时刻通常只有一个线程执行 Python 字节码。IO 密集可用多线程,CPU 密集更适合多进程或原生扩展。并发与异步商业训练营:GIL
asyncio 适合什么asyncio 适合大量 IO 等待场景,例如网络请求、WebSocket、异步 API。它不是让 CPU 计算变快,而是减少等待浪费。并发与异步
线程池、进程池、asyncio 怎么选线程池适合阻塞式 IO,例如调用接口、读文件、访问数据库;进程池适合 CPU 密集计算;asyncio 适合大量异步网络 IO,但链路里不能调用阻塞库。生产上还要限制并发、设置超时、处理异常和重试幂等。并发与异步
async 接口为什么会突然全变慢常见原因是在 async 函数里调用了阻塞函数,例如 time.sleep、同步 requests、同步数据库驱动,导致事件循环被卡住。要改用异步库,或用 asyncio.to_thread 把阻塞逻辑放到线程池。并发与异步
asyncio 为什么能高并发asyncio 通过事件循环调度协程。协程遇到 await 等待网络 IO 时会挂起,把控制权交还给事件循环,事件循环继续运行其他协程。它不是让单个请求更快,而是复用大量 IO 等待时间,提高整体吞吐。并发与异步:asyncio核心模型
async 函数调用后为什么没执行调用 async def 函数只会得到协程对象,不会自动运行。必须在事件循环里 await,或者包装成 Task 交给事件循环调度。否则代码看起来调用了函数,但实际没有执行函数体。并发与异步:async函数为什么没执行
并发任务为什么必须限流并发不是越大越好。没有限流会让下游接口、数据库连接池、模型服务、文件句柄和内存队列被瞬间打爆。生产中要用线程池大小、连接池大小、asyncio.Semaphore、队列容量和超时共同控制压力。并发与异步:超时取消和背压
什么是背压背压是下游处理不过来时,上游不能无限制继续提交任务,而要等待、拒绝、降级或降低并发。没有背压时,请求会在内存队列里越堆越多,最终导致 OOM、超时和雪崩。并发与异步:超时取消和背压
并发任务为什么要做幂等并发调用常伴随超时、重试、取消和部分失败。如果写操作没有幂等键,重试可能重复创建工单、重复发短信、重复写采集记录。商业系统要用业务唯一键或 idempotency key 保证重复请求安全。并发与异步:面试标准回答
Python 并发问题怎么排查CPU 高但吞吐低时看是否 CPU 密集却用了线程;程序卡住看线程池任务是否无超时;async 全站慢看事件循环是否被阻塞;内存上涨看任务数量、队列和结果列表是否无限增长;下游报错变多看并发、重试和连接池是否过大。并发与异步:生产排查流程日志与调试
FastAPI 一次请求怎么走请求先到 Uvicorn,Uvicorn 按 ASGI 规范交给 FastAPI;FastAPI 做路由匹配、参数提取、Pydantic 校验、依赖注入,执行接口函数后序列化响应并写回客户端。Web API开发
FastAPI 中 defasync def 怎么选同步数据库驱动、同步 SDK、普通阻塞业务更适合 def;异步 HTTP、异步数据库、WebSocket、流式响应适合 async defasync def 里调用阻塞函数会卡住事件循环。Web API开发
Python Web API 怎么分层常见分层是 Router/Controller 接收请求,Service 写业务,Repository/DAO 访问数据库,Schema/DTO 处理输入输出。Web API开发
FastAPI 返回 422 是什么422 表示请求已经进入服务端,但 Path、Query、Header 或 Body 不符合函数签名和 Pydantic 模型约束。它是客户端参数不符合接口契约,不是服务端代码崩溃。Web API开发
Python Web API 线上慢怎么定位先用 request_id 和 access log 判断是全局慢还是单接口慢,再拆数据库、外部接口、AI 调用、代码计算耗时;数据库慢看 SQL、EXPLAIN、索引和锁等待,外部接口慢看超时、重试和降级。Web API开发
Python 操作数据库要注意什么使用连接池、参数化查询、防 SQL 注入、事务边界、分页和索引;不要把用户输入拼接进 SQL。数据库访问
Python 数据库事务怎么处理一个完整业务动作中的多次写操作应放在同一事务里,全部成功才提交,任何一步失败就回滚。不要在事务里做慢网络调用或大文件处理,否则会长时间持有锁。数据库访问
为什么参数绑定能防 SQL 注入参数绑定把 SQL 模板和用户输入分开交给驱动,用户输入只作为值处理,不会被当作 SQL 语法执行。表名、字段名、排序字段不能参数绑定,要用白名单。数据库访问
连接池为什么不能无限大连接池能复用连接,但每条连接都会占用数据库资源。多 worker 部署时总连接数等于 worker 数乘以池大小,连接过多会打满数据库并增加锁竞争。数据库访问
SQLAlchemy Session 是什么Session 是一次工作单元,负责对象状态、事务、flush、commit、rollback 和连接借还。Web 项目通常每个请求一个 Session,请求结束关闭,不能全局复用。数据库访问
Python 中慢 SQL 怎么排查先定位具体 SQL 和参数,再看耗时、扫描行数、执行计划、索引使用、排序分组、JOIN 和锁等待。不要一上来加缓存,要先找慢的真实原因。数据库访问
Python 项目目录怎么设计常见结构是 api 处理 HTTP,schemas 处理入参出参,services 写业务规则,repositories 访问数据库,models 放实体,core 放配置、异常、日志、安全,tests 放测试。项目实践
为什么配置不能写死在代码里写死配置会导致密钥泄露、环境无法区分、改配置必须重新发版。生产项目应使用环境变量、配置文件或配置中心,提交 .env.example,真实 .env 不提交。项目实践
Python 服务上线前检查什么检查依赖版本、配置注入、数据库迁移、测试、日志、异常处理、外部调用超时、健康检查、敏感信息脱敏和回滚方案。上线后观察错误率、耗时、CPU、内存和数据库连接。项目实践
printlogging 有什么区别print 只是输出文本,适合临时调试;logging 是日志系统,支持级别、格式、Handler、异常堆栈、过滤和日志平台采集,正式项目应使用 logging日志与调试
Python logging 核心组件有哪些核心组件包括 Logger、Level、Handler、Formatter、Filter 和 LogRecord。业务代码调用 Logger 生成日志事件,经级别过滤后交给 Handler,再由 Formatter 输出到控制台、文件或日志平台。日志与调试
为什么线上日志要有 request_id一次请求会经过 API、Service、Repository 和外部接口。request_id 能把同一次请求的日志串起来,排查慢接口、异常和下游失败时可以快速还原链路。日志与调试
Python 线上问题怎么靠日志排查先确认影响范围,再用 request_id 或 task_id 检索完整链路,看异常堆栈和各阶段耗时。接口慢时拆数据库、外部接口、AI 调用和代码计算;任务失败时看批次、失败行和错误码。日志与调试
Pandas 适合做什么Pandas 适合结构化数据清洗、转换、统计、聚合和导出,例如 CSV/Excel 报表、导入前预校验、数据质量检查。生产中要关注编码、字段类型、缺失值、重复数据、业务主键、异常值、内存和口径校验。数据处理
Pandas 数据清洗完整流程是什么我会先确认字段含义和业务口径,再读取数据并检查 shapeheadinfo、缺失和重复;然后转换金额、日期、状态等关键字段,按业务主键去重,处理缺失和异常,再按明确口径过滤数据,最后分组聚合、导出结果,并做总数、总金额和样例抽查校验。数据处理标准流程Pandas清洗分析
NumPy 和 Pandas 有什么区别NumPy 核心是 ndarray,适合高效数值计算、矩阵和向量化;Pandas 核心是 SeriesDataFrame,适合带行列标签的表格数据清洗、筛选、分组、聚合和导出。Pandas 很多底层计算依赖 NumPy,但更贴近业务表格处理。数据处理NumPy数组计算
NumPy 为什么比 Python list 快Python list 是通用容器,里面存的是 Python 对象引用,数值计算通常要通过解释器逐个处理元素。NumPy ndarray 通常把同类型数据放在连续内存中,数组运算交给底层 C 实现批量处理,减少 Python 层循环、对象访问和类型判断开销,所以大量数值计算更快。NumPy数组计算:向量化为什么快
NumPy 的 shape、dtype、axis 怎么理解shape 是数组每个维度长度,dtype 是元素类型,axis 表示沿哪个维度聚合。二维数组中 axis=0 通常压缩行方向得到每列统计,axis=1 压缩列方向得到每行统计。实际使用时要结合业务含义判断行列代表什么。NumPy数组计算
NumPy 广播机制是什么广播是在数组形状不完全相同时自动扩展较小数组的机制。从右往左比较维度,维度相等或其中一个为 1 时可以广播,否则报错。广播常用于列权重、标量折扣、批量偏移,但必须确认维度语义正确。NumPy数组计算:广播机制
数据清洗为什么不能直接填 0 或直接删除缺失值和异常值有业务含义。金额缺失不等于金额为 0,退款负数可能合理,订单主键缺失则无法追溯。正确做法是先判断字段含义和业务口径,再决定填充、剔除、保留、标记或输出错误文件。缺失值处理异常值处理
数据报表对不上怎么排查先看原始数据是否完整,再看读取行数、编码、分隔符、表头是否正确;然后查字段类型转换、缺失值、重复主键、异常值和过滤口径;最后检查 groupby 聚合逻辑、单位、时间范围,并用聚合前后总金额、样例明细和历史报表对账。生产排查流程
数据处理脚本怎么设计才可靠先明确输入输出、字段口径和异常规则,再拆成读取、字段校验、类型标准化、异常拆分、业务去重、聚合、导出和运行摘要。核心字段转换失败不能静默丢弃,要输出异常文件和原因;金额、状态、重复订单和时间范围这类规则要写测试。数据处理端到端实践
SettingWithCopyWarning 是什么它表示你可能在不明确的视图或拷贝上赋值,修改结果不一定按预期生效。正确做法是过滤后显式 .copy(),或者在原 DataFrame 上使用 .loc[row_condition, column] 明确赋值。Pandas清洗分析:SettingWithCopyWarning
groupby 的原理是什么groupby 可以理解成拆分、应用、合并三步:先按字段把 DataFrame 拆成多个组,再对每组执行 summeancountnunique 等聚合函数,最后合并成结果表。要注意 count 统计非空值,size 统计行数。Pandas清洗分析:groupby
Pandas 大文件怎么处理先用 usecols 减少读取列,用 dtype 控制类型,用 chunksize 分块读取。分块后不能忘记跨块去重、全局排序和全局 TopN 等问题。数据量继续增大时,应考虑数据库、DuckDB、Polars 或 Spark。Pandas清洗分析:大文件处理端到端实践:大文件处理
Python 测试怎么分层常见分层是单元测试、集成测试、接口测试和端到端测试。单元测试最多,覆盖函数、类和 Service;集成测试验证数据库等组件;接口测试验证 HTTP 入参出参;端到端测试只覆盖核心流程。测试
pytest fixture 是什么fixture 用于准备测试依赖,例如测试数据、临时文件、数据库连接、Mock 对象。pytest 根据测试函数参数名自动注入 fixture,使用 yield 可以在测试后执行清理逻辑。测试
Mock 应该怎么用Mock 用来隔离外部依赖,例如短信、邮件、支付、第三方接口和 AI 模型调用。单元测试应该测试自己的业务规则,但不能过度 Mock,否则测试会失真。测试
覆盖率高就代表测试好吗不一定。覆盖率只说明代码被执行过,不代表断言有效。好的测试要覆盖关键业务规则、边界条件和异常分支,并且有明确断言。测试
Python 和 AI 开发怎么结合Python 常用于模型 API 调用、数据清洗、文档解析、Embedding、向量检索、RAG 后端、FastAPI 接口、评估脚本和监控日志。重点不是只调通模型,而是把模型能力工程化。Python与AI开发
Python 做 RAG 的完整流程是什么离线阶段解析文档、清洗脱敏、切分 chunk、生成 Embedding、写入向量库;在线阶段把用户问题向量化,在权限范围内检索片段,重排序后组装 Prompt,调用模型生成答案并返回引用。Python与AI开发
为什么 RAG 要做权限过滤因为向量检索可能召回用户无权查看的文档。如果先检索全部再让模型判断权限,敏感内容已经进入上下文。正确做法是先按用户权限限定可检索范围,再检索。Python与AI开发
RAG 中 chunk 为什么不能随便切chunk 是检索和组装上下文的最小单元。切太小会丢上下文,切太大会带入噪声、增加 token 成本,还可能让模型被无关内容干扰。生产上要按标题、段落、表格、字段说明等语义边界切分,并保留来源、版本和权限元数据。Python与AI开发
为什么向量检索还要配合关键词检索向量检索擅长语义相似,关键词检索擅长表名、字段名、错误码、接口名等精确匹配。商业系统里很多问题包含精确实体,只用向量检索容易漏掉真正答案,因此常用向量 + BM25/关键词 + Rerank 的混合检索。Python与AI开发
Tool Calling 为什么不能让模型直接执行模型只能生成工具调用建议,真实执行必须由后端校验参数、权限、幂等和审计。否则普通用户可能绕过权限,模型也可能生成危险参数,导致重复创建、误改数据或误发通知。Python与AI开发
AI 应用上线前怎么评估要准备黄金测试集,覆盖正常问答、无资料拒答、无权限、易混问题、结构化抽取和工具调用,记录答案、引用、工具参数、耗时和 token。改 Prompt、换模型或调整检索后都要跑回归,防止效果变差。Python与AI开发
AI 接口为什么要记录 token 和耗时token 决定成本,耗时决定用户体验和系统容量。记录模型、输入输出 token、cost_ms、request_id、错误码后,才能分析成本上涨、慢请求、模型失败和用户调用行为。Python与AI开发

项目话术

text
在医疗数据采集与资产平台里,Python 可以用于数据清洗脚本、接口联调工具、批量文件处理、报表统计、爬虫采集、AI/RAG 评估脚本等。核心业务服务如果是 Java,也可以让 Python 承担离线处理和自动化工具角色,通过数据库、消息队列或 HTTP API 与主系统协作。

常见追问

追问回答方向跳转
多线程为什么 CPU 计算不一定快说明 CPython GIL 和 IO 密集/CPU 密集区别。并发与异步
为什么不要裸写 SQL 拼接说明 SQL 注入、参数化查询和白名单。数据库访问
大文件怎么处理说明流式读取、生成器、分块处理和内存控制。异常与文件
线上日志为什么不能记录 Token说明日志平台权限、安全泄露、脱敏过滤和最小化记录原则。日志与调试
单元测试和集成测试怎么区分说明单元测试隔离业务规则,集成测试验证真实组件协作。测试
AI 回答错了怎么排查先拆数据解析、chunk、Embedding、检索、权限、Prompt、生成和引用一致性。Python与AI开发
数据清洗怎么保证质量说明缺失值、重复值、类型转换、异常值和校验规则。Pandas清洗分析

怎么判断 Python 是否真正学懂

验收问题合格回答方向深度知识点
为什么不能全局安装依赖要讲虚拟环境、依赖隔离、版本固定、本地和服务器一致性。从零到精通验收清单
Python 变量为什么是对象引用要讲名字绑定对象、可变对象共享、可变默认参数、浅拷贝风险。从零到精通验收清单
async 全站慢怎么排查要查阻塞函数、同步 requests、同步数据库驱动、CPU 计算是否卡住事件循环。从零到精通验收清单
FastAPI 请求链路怎么走要讲 Uvicorn、ASGI、路由、Pydantic 校验、依赖注入、序列化响应。从零到精通验收清单
RAG 为什么不能只调模型 API要讲私有知识、权限过滤、检索、引用、评估、token 成本和审计。从零到精通验收清单

面试回答模板

text
Python 我会从应用场景和工程能力回答。基础上要掌握数据结构、函数模块、面向对象、异常文件和类型标注;并发上要区分多线程、异步和多进程;项目里常用于脚本自动化、Web API、数据处理、测试和 AI 应用。真正落地时要关注编码、资源关闭、异常处理、依赖管理、测试、日志和性能边界。

本章小结

Python 面试页负责“怎么答”。每个问题的原理、流程图、代码 Demo 和风险排查,都要跳到对应知识点页学习。完整验收按 Python 从零到精通验收清单 逐项检查。