Python面试必备知识点:元类、装饰器、垃圾回收

需积分: 5 0 下载量 159 浏览量 更新于2024-06-14 收藏 977KB PDF 举报
"Python面试内容涵盖广泛,包括语言特性、函数参数传递、元类、类方法、变量区别、自省、字典推导、字符串格式化、迭代器、装饰器、鸭子类型、垃圾回收机制、线程锁、协程、闭包、函数式编程、拷贝、列表操作、作用域、GIL、数据库事务、索引、Redis、锁机制、网络协议、HTTP方法、服务器对比、密码安全、RESTful架构、CGI与WSGI、中间人攻击、并发问题、socket编程、HTTP版本、Ajax等。此外,还涉及操作系统知识如进程通信、内存管理以及编程题如台阶问题等。" 在Python面试中,以下是一些关键知识点的详细说明: 1. **Python的函数参数传递**: Python采用传对象引用的方式,基本类型是值传递,复合类型是引用传递。 2. **元类(Metaclass)**: 元类是创建类的对象,可以用来定制类的行为,通过`type`或自定义元类实现。 3. **@staticmethod和@classmethod**: `staticmethod`用于创建与类无关的方法,`classmethod`则绑定到类而不是实例。 4. **类变量和实例变量**: 类变量属于类,所有实例共享;实例变量属于每个实例,独立存储。 5. **Python自省**: 自省能力允许程序在运行时检查其自身的结构,如`dir()`函数和`__dict__`属性。 6. **字典推导式**: 字典推导式是Python简洁的创建字典的方式,类似列表推导式,但生成字典。 7. **单下划线_和双下划线__**: 单下划线表示保护成员,不建议外部直接访问;双下划线表示私有成员,Python不会自动将它转换为下划线开头的名称。 8. **字符串格式化**: `\x`用于转义ASCII字符,`.format`用于格式化字符串,支持位置和关键字参数。 9. **迭代器和生成器**: 迭代器遵循迭代协议,`yield`关键字创建生成器,按需生成值。 10. ***args 和 **kwargs**: *args用于接收不定数量的位置参数,**kwargs用于接收不定数量的关键字参数。 11. **面向切面编程AOP和装饰器**: 装饰器是实现AOP的一种方式,可以在不修改原有代码的情况下添加功能。 12. **鸭子类型**: 如果对象看起来像鸭子(有相似的方法),那么它就是鸭子,强调行为而非类型。 13. **Python中重载**: Python不支持方法重载,但可以通过默认参数和可变参数模拟。 14. **新式类和旧式类**: Python 2.x中,继承自object的类称为新式类,具有更好的特性;未继承的类为旧式类。 15. **__new__ 和 __init__**: `__new__`创建对象,`__init__`初始化对象,`__new__`返回的实例会传递给`__init__`。 16. **单例模式**: 单例确保一个类只有一个实例,常用设计模式,Python可通过多种方式实现。 17. **Python中的作用域**: 包括局部作用域、全局作用域和内置作用域,`global`和`nonlocal`关键字用于跨作用域访问。 18. **GIL线程全局锁**: Python解释器为了保证线程安全引入的全局锁,使得多线程在解释器层面无法真正并行执行。 19. **协程(Coroutine)**: 协程是一种轻量级的并发模型,通过协同调度实现。 20. **闭包(Closure)**: 闭包是拥有自由变量的函数,能记住定义时的环境。 21. **lambda函数**: 简单的一行函数,常用于创建匿名函数。 22. **Python函数式编程**: 使用函数作为一等公民,支持高阶函数、map、filter、reduce等特性。 23. **Python里的拷贝**: `copy`模块提供了浅拷贝和深拷贝,浅拷贝只复制一层,深拷贝复制所有层级。 24. **Python垃圾回收机制**: 引用计数、标记-清除和分代收集是Python垃圾回收的三种主要策略。 这些知识点涵盖了Python的基础和高级特性,对于准备Python面试和提升编程技能非常有价值。