- Python面试题【1~10】
- Python面试题【11~20】
- Python面试题【21~30】
-
Python面试题【31~40】
- 1. 谈下 Python 的 GIL
- 2. 什么是pep?
- 3. 如何在Python中管理内存?
- 4. Python中的命名空间是什么?
- 5. 什么是python模块?Python中有哪些常用的内置模块?
- 6. Python中的局部变量和全局变量是什么?
- 7. 什么是lambda函数?
- 8. Python里面match()和search()的区别?
- 9. 简单说说索引的工作原理
- 10. 索引的缺点
2. 什么是pep?
- GIL 是 python 的全局解释器锁,同一进程中假如有多个线程运行,一 个线程在运行 python 程序的时候会霸占 python 解释器(加了一把锁 即 GIL),使该进程内的其他线程无法运行,等该线程运行完后其他线 程才能运行。如果线程运行过程中遇到耗时操作,则解释器锁解开,使 其他线程运行。所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。
- 多进程中因为每个进程都能被系统分配资源,相当于每个进程有了一个 python 解释器,所以多进程可以实现多个进程的同时运行,缺点是进 程系统资源开销大
3. 如何在Python中管理内存?PEP代表Python Enhancement Proposal。它是一组规则,指定如何格式化Python代码以获得最大可读性。
4. Python中的命名空间是什么?
- python中的内存管理由Python私有堆空间管理。所有Python对象和数据结构都位于私有堆中。程序员无权访问此私有堆。python解释器负责处理这个问题。
- Python对象的堆空间分配由Python的内存管理器完成。核心API提供了一些程序员编写代码的工具。
- Python还有一个内置的垃圾收集器,它可以回收所有未使用的内存,并使其可用于堆空间。
5. 什么是python模块?Python中有哪些常用的内置模块?命名空间是一个命名系统,用于确保名称是唯一性,以避免命名冲突。
6. Python中的局部变量和全局变量是什么?Python模块是包含Python代码的.py文件。此代码可以是函数类或变量。一些常用的内置模块包括:sys、math、random、data、time、JSON。
7. 什么是lambda函数?
- 全局变量:在函数外或全局空间中声明的变量称为全局变量。这些变量可以由程序中的任何函数访问。
- 局部变量:在函数内声明的任何变量都称为局部变量。此变量存在于局部空间中,而不是全局空间中。
8. Python里面match()和search()的区别?lambda函数也叫匿名函数,该函数可以包含 任意数量的参数,但只能有一个执行操作的语句。
9. 简单说说索引的工作原理
- re模块中match(pattern,string[,flags]),检查string的开头是否与pattern匹配。
- re模块中research(pattern,string[,flags]),在string搜索pattern的第一个匹配值。
10. 索引的缺点索引的原理大致概括为以空间换时间,数据库在未添加索引的时候进行查询默认的是进行全量搜索,也就是进行全局扫描,有多少条数据就要进行多少次查询,然后找到相匹配的数据就把他放到结果集中,直到全表扫描完。而建立索引之后,会将建立索引的KEY值放在一个n叉树上(BTree)。因为B树的特点就是适合在磁盘等直接存储设备上组织动态查找表,每次以索引进行条件查询时,会去树上根据key值直接进行搜索
- 创建索引和维护索引需要时间成本,这个成本随着数据量的增加而加大
- 创建索引和维护索引需要空间成本,每一条索引都要占据数据库的物理存储空间,数据量越大,占用空间也越大(数据表占据的是数据库的数据空间)
- 会降低表的增删改的效率,因为每次增删改索引需要进行动态维护,导致时间变长



