news 2026/6/3 19:08:54

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/5/31 4:33:38

Python Selenium 超详细新手教程:从零开始掌握浏览器自动化

以下是 Python Selenium 超详细新手教程(2026 年最新版):从零开始掌握浏览器自动化。 这份教程基于 Selenium 4.40(2026 年 1 月最新稳定版)和 Python 3.12/3.13,重点解决新手最痛的几个问题:…

作者头像 李华
网站建设 2026/6/1 15:15:50

2026年01月20日最热门的开源项目(Github)

本期榜单主要关注于开源项目,尤其是与编码代理、人工智能和开发工具相关的项目。以下是对榜单的详细分析: 1. 项目类型分析 榜单中的项目主要以TypeScript和Python为主。其中,TypeScript项目占据了多数,反映出在前端和后端开发中…

作者头像 李华
网站建设 2026/5/8 16:07:50

基于PSO-GA混合算法的施工进度计划多目标优化,以最小化总成本并实现资源均衡,满足工期约束和资源限制附MATLAB代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

作者头像 李华
网站建设 2026/6/2 17:09:09

AI软件工程落地:IQuest-Coder-V1开源模型实战指南

AI软件工程落地:IQuest-Coder-V1开源模型实战指南 你是否还在为复杂的代码调试、低效的开发流程或难以维护的项目结构而头疼?有没有一种AI模型,能真正理解代码的“演化逻辑”,而不仅仅是静态地补全几行函数?现在&…

作者头像 李华
网站建设 2026/6/3 15:32:47

基于ModelScope的unet部署教程:快速搭建AI画师系统

基于ModelScope的unet部署教程:快速搭建AI画师系统 1. 教程目标与前置准备 你是否也想拥有一个能自动把真人照片变成卡通头像的小工具?今天我们就来手把手教你,如何用阿里达摩院 ModelScope 上的 cv_unet_person-image-cartoon 模型&#x…

作者头像 李华
网站建设 2026/5/20 9:27:16

GPEN浏览器兼容性指南:Chrome/Edge/Firefox最佳实践

GPEN浏览器兼容性指南:Chrome/Edge/Firefox最佳实践 1. 引言:为什么浏览器选择如此重要? 你是不是也遇到过这种情况:在一台电脑上GPEN运行流畅,换台设备却卡顿、加载失败,甚至界面错乱?问题很…

作者头像 李华