Python面试必备知识点:深浅拷贝、解释器与数据类型

需积分: 0 1 下载量 117 浏览量 更新于2024-08-05 收藏 834KB PDF 举报
"这篇资料包含了Python编程语言的面试常见问题,涵盖了基础知识、语法特性、数据类型、内存管理、面向对象编程、模块与包、异常处理等多个方面,旨在帮助准备Python面试的人全面理解语言核心概念和技术点。" 1. **深拷贝与浅拷贝的区别** 深拷贝(`copy.deepcopy()`)创建了对象的一个全新副本,包括所有嵌套的对象。修改副本不会影响原始对象。而浅拷贝(`copy.copy()`)只复制对象的引用,如果对象包含可变数据类型(如列表或字典),修改副本会影响原始对象。 2. ***args和**kwargs** *args用于传递任意数量的位置参数,而**kwargs用于传递任意数量的关键字参数。它们使得函数能处理未知数量或动态数量的参数。 3. **Python与其他语言的对比** Python以其简洁的语法和强大的库闻名,适合快速开发和原型设计,强调可读性和代码复用。与其他语言相比,Python是解释型语言,执行速度相对较慢,但开发效率高。 4. **解释型和编译型编程语言** 解释型语言如Python,代码逐行执行,无需预编译。编译型语言如C++,先将源码编译成机器码再运行,执行速度快,但编译过程较慢。 5. **Python解释器种类及特点** 主要有CPython(官方实现,使用C编写)、Jython(基于Java平台)、IronPython(.NET平台上)等,每种解释器有不同的性能和兼容性特点。 6. **位和字节** 位是计算机中最小的数据单位,通常一个字节由8位组成。在Python中,字节是二进制数据的容器,字节串用于存储非文本数据。 7. **ASCII, Unicode, UTF-8, GBK编码的区别** ASCII是最基础的字符编码,只能表示128个字符。Unicode是通用字符集,包含全球几乎所有的字符。UTF-8是Unicode的一种变长编码方式,兼容ASCII。GBK是中国大陆的汉字编码标准,扩展了GB2312。 8. **Python 2与Python 3的区别** Python 3引入了很多语法改进,例如print函数、除法行为、异常处理等,同时废弃了一些Python 2中的特性,如旧式类、不支持unicode等。 9. **xreadlines与readlines的区别** xreadlines在Python 2.x中可用,与readlines类似,但提供迭代器接口。Python 3.x中已移除,建议直接使用for循环遍历文件对象。 10. **常用的数据结构方法** 字符串:`len()`, `upper()`, `lower()`, `strip()`, `split()` 列表:`append()`, `extend()`, `pop()`, `remove()`, `sort()` 元组:无内置修改方法,主要使用索引访问 字典:`keys()`, `values()`, `items()`, `get()`, `update()` 11. **lambda表达式** 用于创建匿名函数,语法为`lambda 参数: 表达式`,常用于简单的、一次性使用的函数。 12. **pandas中map, apply, applymap的区别** map应用在Series上,apply应用于DataFrame的列或整个DataFrame,applymap应用于DataFrame的每个元素。 13. **pass语句** pass是空语句,不做任何操作,常用于占位或作为代码结构的一部分。 14. **is与==的区别** is检查两个对象是否是同一个对象,而==检查两个对象的值是否相等。 15. **Python垃圾回收机制** Python自动管理内存,当对象没有引用时,垃圾回收器会释放其内存。 16. **可变与不可变类型** 可变类型如列表、字典,可以修改其内容;不可变类型如字符串、元组、数字,修改会产生新对象。 17. **内置函数** 包括`len()`, `type()`, `range()`, `print()`, `open()`等,提供基本操作。 18. **filter, map, reduce** filter()用于根据条件筛选序列,map()将函数应用到序列的每个元素,reduce()将函数应用于序列,逐步减少元素到单个结果。 19. **在函数中设置全局变量** 使用`global`关键字声明全局变量,但通常应避免过多使用。 20. **logging模块** 提供日志记录功能,用于调试和错误追踪,适用于各种级别的日志输出。 21. **字符串格式化** 包括`%`操作符、`.format()`方法和f-string(格式化字符串字面量)。 22. **生成器、迭代器和可迭代对象** 生成器是延迟计算的迭代器,节省内存;迭代器遵循迭代协议,逐个返回元素;可迭代对象可以被迭代,如列表、字符串。 23. **os和sys模块** os模块提供了与操作系统交互的函数,如文件操作、目录操作;sys模块提供系统相关的信息和函数。 24. **删除文件** 使用`os.remove()`或`shutil.rmtree()`删除文件或目录。 25. **面向对象的理解** 面向对象编程是一种编程范式,基于对象的概念,通过封装、继承和多态来组织代码。 26. **继承的特点** 继承允许创建子类,子类继承父类的属性和方法,实现代码重用和扩展。 27. **super的作用** super()用于调用父类的方法,确保方法在正确的地方执行,尤其是在多继承场景下。 28. **functools模块** 提供高级函数工具,如`@lru_cache`用于缓存结果,`@wraps`用于装饰器保持原函数信息。 29. **特殊方法** 如`__new__`创建新对象,`__init__`初始化对象,`__del__`对象销毁时调用。 30. **静态方法和类方法** 静态方法与类关联,不接收`self`参数;类方法接收`cls`参数,常用于类操作。 31. **特殊成员及应用场景** 特殊成员如`__getitem__`实现索引访问,`__str__`返回对象的字符串表示,用于`print()`。 32. **in和instance的作用** `in`检查元素是否在序列或集合中;`isinstance()`检查对象是否属于特定类型或其子类。 33. **异常处理** 使用`try/except`语句捕获和处理异常,`raise`用于主动抛出异常。 34. **yield和yield from** `yield`创建生成器,暂停函数执行并返回值;`yield from`用于在一个生成器中直接使用另一个生成器的所有值。 35. **三元表达式** `条件表达式 ? 结果1 : 结果2`,根据条件选择执行的结果。 36. **继承的概念** 继承允许一个类(子类)从另一个类(父类)继承属性和方法。 37. **装饰器的作用和功能** 装饰器用于修改或增强函数、方法或类的行为,不改变原有代码结构。 38. **模块和包** 模块是包含Python定义和语句的文件,包是模块的容器,通过目录结构组织。 39. **Python内存管理** Python使用引用计数和垃圾收集器管理内存,当对象没有引用时回收。 40. **深度优先和广度优先** 在面向对象中,用于遍历对象及其属性,深度优先先访问子节点,广度优先按层遍历。 41. **__init__和__len__** `__init__`是对象初始化方法,`__len__`返回对象长度,用于`len()`函数。 42. **set和list的转换** `list(set)`将集合转换为列表,`set(list)`将列表转换为集合。 这些知识点涵盖了Python编程的各个方面,对于理解Python的核心概念和掌握实际编程技能至关重要。