Python

进阶预计进阶 2-3 个月

星团 编程语言

学习定位零前置,可直接入门→ Python →大模型 API 应用

岗位需求

5 核心 · 1 加分

在职岗位将其列为技能要求

核心岗位薪资带

15k-55k

核心要求岗位的月薪区间

需求趋势

上升 3稳定 2收缩 0

核心要求岗位的趋势分布

面试题库

高频真题 · 参考答案随题展开
1. 什么是 GIL?它对 Python 并发有什么影响?

GIL 是 CPython 解释器的全局互斥锁,保证同一时刻只有一个线程执行 Python 字节码,简化了内存管理与 C 扩展的安全。后果是 CPU 密集多线程无法利用多核,四个线程算四个任务不会变快;但 IO 阻塞时会释放锁,因此 IO 密集多线程仍有效。绕过方案:CPU 密集用 multiprocessing 多进程或 C 扩展、numpy 等释放 GIL 的库;IO 密集用 asyncio 或线程池;解释器层面已有 per-interpreter GIL 与 free-threaded 实验方向。Python 3.12 后官方在推进移除 GIL 的可选构建,面试提到这一趋势能加分。要点是把「多线程为何还在用」「GIL 释放时机」「选型矩阵」讲成体系。

2. 装饰器的原理是什么?如何编写带参数的装饰器?

装饰器本质是接收函数并返回新函数的高阶函数,@ 语法等价于 func 等于 deco(func),在定义时立即执行包装,利用闭包捕获原函数与参数。编写要点:用 functools.wraps 拷贝元信息,否则被包装函数的名字与文档丢失;支持任意签名用 *args 与 **kwargs 透传。带参数的装饰器是三层结构,最外层收参数并返回真正的装饰器,如 def repeat(times) 返回 deco,deco 返回 wrapper。类装饰器与 functools.wraps、装饰类、装饰器堆叠顺序(自下而上包装、自上而下执行)也是常见追问。典型应用有计时、缓存(lru_cache)、重试、权限校验与路由注册,能现场手写一个计时装饰器并解释闭包变量查找规则即为过关。

3. 迭代器与生成器的关系和区别是什么?

迭代器协议由 __iter__ 与 __next__ 两个方法定义,Iterable 表示可迭代对象(实现了 __iter__),对它调用 iter() 得到迭代器,for 循环等价于不断 next() 直到 StopIteration。生成器是创建迭代器的便捷方式:函数体含 yield 即为生成器函数,调用返回生成器对象,它自动实现了迭代器协议,在 yield 处暂停并保存栈帧状态,惰性求值、内存占用恒定。生成器表达式与 map、filter 同属惰性管道。进阶特性包括 send 向生成器注入值、yield from 委托子生成器,这是协程的历史前身。工程价值:处理大文件逐行流式读取、无限序列、分页拉取拼接,避免一次性载入内存。答题时说明 for 的机制、yield 暂停恢复原理与一个流式处理例子即可。

4. 可变与不可变类型、深浅拷贝分别是什么?

不可变类型(int、float、str、tuple、frozenset)一旦创建值不可改,任何修改都生成新对象,因此可哈希、可作字典键、函数传参安全;可变类型(list、dict、set)原地修改,作为默认参数会被多次调用共享,产生经典 bug,应默认用 None 哨兵。赋值只复制引用,b 是 a 后两者同指一个对象。浅拷贝(copy 或切片、工厂函数)新建顶层容器但元素仍是引用,嵌套可变对象仍共享;深拷贝 deepcopy 递归复制整棵对象图并用 memo 处理循环引用。判别用 is 与 id。面试常考默认参数陷阱与列表乘法初始化二维数组的坑(rows 共享同一内层列表),能讲清共享层级即满分。

5. Python 的内存管理与垃圾回收机制是怎样的?

CPython 以引用计数为主:每个对象记录引用数,归零立即回收,优点是即时、开销分散;缺点是无法处理循环引用且维护计数有成本。因此补充了分代垃圾收集器,专找循环引用:对象按存活时间分为 0、1、2 三代,新对象在第 0 代,回收采用标记清除思路遍历对象图,存活对象晋升老代,老代回收频率低,整体摊销开销。gc 模块可开关与调阈值,弱引用 weakref 可观察对象生命周期而不增加计数。另有关键优化:小整数缓存与字符串驻留,-5 到 256 的整数全局共享;内存池按大小分级管理减少系统调用。容器只存引用不存对象本体,del 只是删引用。把主副机制与三代的动机讲全即是好答案。

🔒 解锁完整面试题库与参考答案(Pro)

含高频追问与作答要点,系统准备面试。

官方文档

1 条

推荐教程

2 条

推荐课程

1 条

上手实践

2 条

🔒 完整前置链分析 + 逐岗位引用明细

本页已免费展示学习定位与市场聚合;Pro 深读补齐完整前置依赖链分析与逐岗位引用明细 (核心/加分与深度档、岗位画像)。

知识分享

社区经验 · 管理员审核后展示

暂无分享——第一个来聊聊你的经验和踩坑吧。

有经验想分享?登录后可提交你的知识分享,管理员审核通过后将署名展示。

难度档决定星等与难度分权重(入门 1 / 进阶 2 / 精通 3);学习资源由编辑部遴选并持续维护, 经验心得欢迎在上方「知识分享」区署名分享。