Python 面试核心考点与实战解析
前言
在 Python 技术岗位的面试中,面试官通常会根据简历中的技术栈细节进行提问。为了帮助开发者系统复习并掌握核心知识点,本文整理了 20 道高频面试题,涵盖内存管理、数据结构、并发编程、Web 框架等关键领域。每个问题均提供详细解答与代码示例,旨在巩固基础,提升面试通过率。
一、基础与内存管理
1. 如何在 Python 中管理内存?
Python 的内存管理由解释器内部的私有堆空间负责。开发者无法直接访问该堆空间,对象和数据结构均存储于此。内存分配由内存管理器(Memory Manager)处理,核心 API 提供了底层工具。当对象不再被引用时,Python 内置的垃圾回收器(Garbage Collector)会自动回收未使用的内存。
关键点:
- 私有堆空间:开发者不可见。
- 引用计数:主要机制,对象引用数为 0 时释放。
- 垃圾回收:处理循环引用问题。
2. 解释 Python 中的 Help() 函数和 Dir() 函数。
help() 是内置函数,用于查看模块、类或函数的文档字符串(docstring),帮助理解其用途。
help(len)
dir() 也是内置函数。不带参数时,返回当前作用域内的变量、方法和定义的类型列表;带参数时,返回对象的属性和方法列表。
print(dir(str))
# 输出包含 split, join, upper 等方法名列表
3. 当 Python 退出时,是否会清除所有分配的内存?
答案是否定的。当 Python 进程退出时,部分内存可能不会被立即释放:
- 循环引用:存在循环引用的 Python 模块对象可能无法被解除分配。
- 全局名称空间:从全局命名空间引用的对象可能保留。
- C 库保留内存:由 C 标准库保留的部分内存无法被 Python 清理。 尽管 Python 有高效的清理机制,但操作系统层面的资源回收依赖于进程结束后的系统行为。
4. 什么是猴子补丁(Monkey Patching)?
猴子补丁是指在程序运行期间动态修改一个类或模块的行为。这通常通过替换现有的方法或属性来实现。
示例:
class MyClass:
def greet(self):
return "Hello"
# 运行时修改方法
MyClass.greet = lambda self: "Hi from Monkey Patch"
obj = MyClass()
print(obj.greet()) # 输出:Hi from Monkey Patch


