news 2026/3/8 0:06:28

Python——50道面试题,面试巩固必看,建议收藏!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python——50道面试题,面试巩固必看,建议收藏!

以下是2026年最新版 Python 面试题精选50道(涵盖基础 → 中级 → 高级),适合后端、数据分析、自动化测试、AI 等方向面试准备。建议先自己尝试回答,再对照解析巩固记忆。

我将题目分为三个梯度,便于分阶段复习:

  • 1–20:基础 & 必知必会(社招/校招初筛常见)
  • 21–35:中高级 & 原理向(中高级岗位重点)
  • 36–50:高级 & 底层/性能/设计向(大厂/资深岗位高频)

每题后附简洁答案 + 考察点 + 追问方向,便于深度准备。

1–20 基础 & 必知必会

  1. Python 中列表和元组的区别?什么时候用哪个?
    :列表可变(mutable),元组不可变(immutable);列表用 [],元组用 ();元组可作为 dict 键、函数多返回值;列表适合动态增删,元组适合固定结构/常量/哈希。
    考察:可变性、内存、哈希性

  2. *args**kwargs是什么?有什么用?
    *args收集位置参数成元组,**kwargs收集关键字参数成字典;常用于函数装饰器、灵活接口、继承 super().init()。
    追问:写一个接受任意参数的函数

  3. Python 中==is的区别?
    ==比较值,is比较身份(id)。小整数/字符串有缓存机制,-5~256 整数、部分字符串is为 True。
    高频追问a = 257; b = 257; a is b结果?

  4. 浅拷贝和深拷贝的区别?如何实现?
    :浅拷贝只复制第一层(copy.copy / 切片),深拷贝递归复制所有层(copy.deepcopy)。嵌套可变对象时深拷贝才真正独立。
    代码import copy; b = copy.deepcopy(a)

  5. Python 中可变对象和不可变对象有哪些?
    :不可变:int、float、str、tuple、frozenset、bytes
    可变:list、dict、set、bytearray、自定义类(未重写hash等)

  6. range()xrange()的区别?(Python2 vs 3)
    :Python3 中range()就是 Python2 的xrange(),返回迭代器,内存友好;Python2range()返回列表。

  7. Python 中passbreakcontinue的作用?
    :pass 占位符(空函数/类);break 跳出当前循环;continue 跳过本次循环进入下一次。

  8. 什么是 duck typing?
    :鸭子类型——“如果它走路像鸭子,叫声像鸭子,那么它就是鸭子”。关注行为而非类型,常用于协议/魔术方法。

  9. __init____new__的区别?
    __new__是静态方法,先创建实例(返回 cls 的实例),__init__初始化已创建的实例。通常只重写__init__,单例模式才重写__new__

  10. Python 中@staticmethod@classmethod@property区别?
    :staticmethod 无隐式参数;classmethod 第一个参数是 cls;property 把方法伪装成属性(getter/setter/deleter)。

  11. Python 中的 GIL 是什么?对多线程有何影响?
    :全局解释器锁(Global Interpreter Lock)。同一时刻只有一个线程执行 Python 字节码。CPU 密集型任务多线程不加速,IO 密集型仍受益。

  12. Python 中常见的内存管理机制?
    :引用计数 + 分代垃圾回收(gc 模块)。小对象池(-5~256 整数、部分字符串)。

  13. isinstance()type()的区别?
    isinstance(obj, (list, tuple))支持元组判断继承关系;type(obj)只返回确切类型。

  14. Python 中列表推导式、字典推导式、生成器表达式写法?

    [x**2forxinrange(10)]# 列表{x:x**2forxinrange(10)}# 字典(x**2forxinrange(10))# 生成器
  15. try...except...else...finally中 else 和 finally 的执行时机?
    :else 只在没有异常时执行;finally 无论是否异常都执行(常用于资源释放)。

  16. Python 中__slots__有什么用?
    :限制实例属性,节省内存(尤其大量小对象时),禁止__dict__

  17. Python 中的命名空间有哪几种?LEGB 规则是什么?
    :Local → Enclosing → Global → Built-in
    查找顺序:局部 → 闭包 → 全局 → 内置

  18. Python 中nonlocalglobal的作用?
    :nonlocal 修改外层函数(非全局)的变量;global 修改模块级变量。

  19. Python 中 sort() 和 sorted() 的区别?
    :sort() 是列表方法,原地排序返回 None;sorted() 是内置函数,返回新列表,可作用于任何可迭代对象。

  20. Python 中如何实现单例模式?(至少两种方式)

    方式1:重写__new__
    方式2:装饰器 / 元类 / 模块导入(最常用)

21–35 中高级 & 原理向

  1. Python 中描述符(Descriptor)是什么?property 底层原理?
    :实现了__get____set____delete__的类。property 就是描述符的简化写法。

  2. Python 中元类(metaclass)是什么?常见使用场景?
    :创建类的类(type 是最常见的元类)。ORM(如 Django Model)、自动注册、属性校验。

  3. Python 中的 MRO(方法解析顺序)是什么?C3 线性化算法?
    :多继承时方法查找顺序。Python3 全用 C3(合并+拓扑排序)。

  4. Python 中__getattribute____getattr__区别?
    __getattribute__每次属性访问都调用;__getattr__只在普通查找失败时调用。

  5. Python 中生成器和迭代器的区别?如何自定义迭代器?
    :迭代器实现__iter____next__;生成器是迭代器的简写(yield)。生成器自动实现迭代器协议。

  6. @functools.lru_cache原理和使用场景?
    :最近最少使用缓存装饰器,常用于递归(如斐波那契)、避免重复计算昂贵函数。

  7. Python 中协程、生成器、async/await 的关系?
    :生成器 → 协程基础;Python 3.5+ 用 async def / await 实现原生协程(基于生成器)。

  8. Python 中 contextmanager 和 with 语句底层原理?
    :实现了__enter____exit__的对象;@contextmanager 装饰器把生成器转为上下文管理器。

  9. Python 中 pickle 和 json 的区别?安全性?
    :pickle 可序列化任意 Python 对象(包括函数、类),但不安全(反序列化可执行代码);json 只支持基本类型,跨语言、安全。

  10. Python 中__mro____bases____subclasses__()分别是什么?
    mro方法解析顺序元组;bases直接基类元组;subclasses() 当前类的直接子类列表。

  11. Python 中内存泄漏的常见原因?如何排查?
    :循环引用 + 未清理全局变量/缓存;大对象未释放;线程/协程泄漏。
    工具:objgraph、heapy、tracemalloc、gc.get_objects()

  12. Python 中多进程 vs 多线程 vs 多协程适用场景?
    :CPU 密集 → 多进程(multiprocessing);IO 密集 → 多线程/协程(asyncio);混合 → ProcessPoolExecutor + asyncio。

  13. Python 中如何实现异步 IO?常见库?
    :asyncio + aiohttp + aiomysql 等;或 trio/curio。

  14. Python 中常见的 WSGI/ASGI 服务器有哪些?
    :WSGI:gunicorn + uvicorn;ASGI:uvicorn、hypercorn、daphne。

  15. Python 中装饰器带参数怎么写?
    :三层嵌套,最外层接收参数,返回真正的装饰器函数。

36–50 高级 & 底层/性能/设计向

  1. Python 中整数对象在内存中如何存储?大整数如何处理?
    :小整数缓存池;大整数用 ob_digit 数组(30位一组)实现任意精度。

  2. Python 中字符串 intern 机制?
    :编译时常量字符串、部分运行时字符串会 intern(放入 interned 池),相同内容指向同一对象。

  3. Python 中 dict 底层实现?为什么 Python 3.7+ dict 有序?
    :3.6 前 hash table + 开放寻址;3.7+ 插入顺序维护(compact dict + indices 数组)。

  4. Python 中 set 和 dict 的底层数据结构?
    :都是哈希表,set 是 dict 的 value 为 dummy 的特例。

  5. Python 中列表 append 操作的时间复杂度?扩容策略?
    :均摊 O(1);扩容策略:2倍或 1.125 倍(Python 3.3+ 更平滑)。

  6. Python 中如何实现一个高性能的 LRU Cache?
    :collections.OrderedDict + move_to_end();或 functools.lru_cache(maxsize=128)

  7. Python 中如何避免循环导入(circular import)?
    :延迟导入(函数内 import);重构模块;使用 importlib.import_module

  8. Python 中常见的 monkey patch 使用场景?
    :测试 mock、热修复线上 bug、临时修改第三方库行为。

  9. Python 中如何实现一个线程安全的单例?
    :加锁(threading.Lock) + 双检锁;或用模块导入天然单例。

  10. Python 中垃圾回收的阈值机制(generation)?
    :三代:0代(频繁)、1代、2代;阈值可通过 gc.set_threshold() 调整。

  11. Python 中如何调试内存泄漏?
    :tracemalloc + snapshot;objgraph.show_most_common_types();memory_profiler

  12. Python 中 Cython、Numba、PyPy 的区别和适用场景?
    :Cython → 静态编译到 C;Numba → JIT 编译数值计算;PyPy → 解释器带 JIT,全局提速。

  13. Python 中如何实现一个简单的协程调度器?
    :用生成器 + yield + send;或直接用 asyncio 的 event loop。

  14. Python 中常见的反序列化漏洞(pickle RCE)如何防范?
    :永远不要 pickle untrusted data;用 json/yaml/toml;或限制 pickle 的允许类。

  15. 如果让你设计 Python 的包管理工具(pip 的竞品),你会怎么考虑?
    :依赖解析(SAT solver)、锁文件(requirements.txt → poetry.lock)、环境隔离(venv)、缓存、增量安装、跨平台一致性、支持 git/monorepo 等。

建议收藏 & 刷题节奏

  • 第一遍:快速过 1–20,默写关键代码
  • 第二遍:深入 21–35,画图理解 MRO、描述符、GIL
  • 第三遍:重点攻 36–50 + 手写 LRU / 单例 / 上下文管理器
  • 每天 5–10 道 + 代码实现 + 追问准备

祝你面试顺利,拿到心仪 offer!
有想重点讲解/手写代码的题目,评论告诉我~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/2 2:46:33

【资深架构师亲授】:Maven项目中集成本地Jar的3种高阶策略

第一章:Maven本地Jar集成的核心挑战在Java项目开发中,Maven作为主流的构建工具,其依赖管理机制极大提升了开发效率。然而,当项目需要引入未发布至中央仓库的本地JAR包时,标准的依赖解析流程将面临挑战。这类JAR通常来自…

作者头像 李华
网站建设 2026/3/7 14:05:15

Z-Image-Turbo在独立艺术家工作流中的应用

Z-Image-Turbo在独立艺术家工作流中的应用 1. 独立创作的新挑战:效率与表达的平衡 对于独立艺术家而言,灵感稍纵即逝,而传统图像生成工具往往成为拖慢创作节奏的瓶颈。你有没有这样的经历:脑海中浮现出一幅充满赛博朋克氛围的城…

作者头像 李华
网站建设 2026/3/2 19:43:41

电商网站如何安全嵌入第三方支付页?IFRAME跨域实战

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个电商网站嵌入第三方支付页面的完整示例。要求:1) 主页面模拟电商结算页 2) 使用IFRAME嵌入模拟的支付页面 3) 实现安全的postMessage通信 4) 处理支付成功/失败…

作者头像 李华
网站建设 2026/3/7 6:54:17

AI自动生成直播源配置:告别手动维护的烦恼

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个AI驱动的直播源自动配置工具,功能包括:1. 自动爬取网络上的直播源并验证可用性;2. 智能分类和去重;3. 生成标准化的M3U播放…

作者头像 李华