Python基础与进阶试题集锦

3星 · 超过75%的资源 需积分: 48 16 下载量 126 浏览量 更新于2024-09-08 收藏 3KB TXT 举报
"Python试题集,涵盖基础概念、数据结构、并发、网络编程、数据库操作、内存管理等核心知识点。" 1. GIL (全局解释器锁) 是Python解释器的一个特性,它使得在多线程环境下,同一时间只有一个线程能执行Python字节码,保证了线程安全,但也限制了Python在多核CPU环境下的并行计算能力。 2. `@staticmethod` 和 `@classmethod` 都是用来修饰方法的装饰器。`staticmethod` 不需要接收self参数,直接处理类或实例的静态方法;而`classmethod` 接收第一个参数为类本身,用于处理与类相关的非实例方法。 3. Python的拷贝分为浅拷贝和深拷贝。浅拷贝只复制对象的引用,不复制对象的内容;深拷贝则会递归复制对象及其内容,形成完全独立的新对象。 4. `str.search()` 搜索整个字符串,找到第一个匹配项返回其索引;`str.match()` 只匹配字符串开头,如果开头不匹配则返回None。 5. 迭代器是可迭代对象的抽象接口,只能向前遍历;生成器是一种特殊的迭代器,通过`yield`语句可以暂停执行,实现延迟计算。 6. 协程是一种轻量级的并发模型,Python通过生成器和`asyncio`库实现协程,允许多个任务在单线程中交替执行,提高执行效率。 7. 装饰器是一种特殊类型的函数,可以用来修改或增强其他函数的功能,例如实现日志、缓存、权限检查等。实现单例装饰器可以确保一个类只有一个实例。 8. 快速排序是一种高效的排序算法,基于分治策略,通过选取一个基准值并将其与其他元素比较来划分数组,然后递归地对子数组进行排序。 9. `select`和`epoll`都是I/O多路复用技术,用于高并发网络编程。`select`适用于小规模文件描述符,而`epoll`更高效,支持边缘触发和水平触发,适合大规模连接。 10. Python的垃圾回收机制自动回收不再使用的内存,主要通过引用计数和循环垃圾收集来实现。 11. Python socket编程涉及创建套接字、连接服务器、发送和接收数据、关闭连接等步骤。 12. 反转字符串可以使用切片操作,如`[::-1]`。 13. Web服务器负载架构包括负载均衡、反向代理、集群等,如Nginx、Apache等服务器软件。 14. 限制函数调用频率的装饰器可以通过定时器实现,例如使用`time.sleep()`和线程锁。 15. tuple是不可变序列,list是可变序列,dict是键值对容器,set是无序不重复元素集合。 16. 迭代器和生成器都是Python的迭代协议实现,迭代器需先调用`iter()`获取,而生成器通过`yield`语句自动创建。 17. 单例模式确保一个类只有一个实例,可以使用类属性和`__new__`方法实现,或者使用装饰器。 18. lambda函数用于创建小型匿名函数,`reduce()`结合`lambda`可以实现累加。 19. 正则匹配手机号可以使用模式`\+86?\d{11}`,考虑包含前缀86和+86的情况。 20. 对字典按值排序,可以使用`sorted()`结合`lambda`作为key。 21. MySQL高可用方案包括主从复制、双主复制、MHA、Percona XtraDB Cluster等,备份方案有全量备份、增量备份、逻辑备份等,各有优缺点。 22. TCP三次握手和四次挥手是建立和终止TCP连接的过程。 23. MySQL半同步复制保证至少有一个从库已写入,提高了数据一致性,但可能增加延迟。 24. Python的类型转换如`int()`, `str()`, `float()`等函数用于不同数据类型间的转换。 25. 删除list重复元素,可以使用`set()`转化后再转换回list。 26. 类方法、实例方法和静态方法的区别在于接收的第一个参数,类方法接收类对象,实例方法接收实例对象,静态方法不接收。 27. `pass`语句是空语句,用于占位,不做任何操作。 28. `range()`生成指定范围的整数序列,不占用内存;`xrange()`(Python 2.x)类似,但返回迭代器。 29. `<.*>`匹配贪婪模式,尽可能多地匹配字符;`<.*?>`匹配非贪婪模式,尽可能少地匹配字符。 30. 使用`copy`模块的`copy()`和`deepcopy()`函数分别进行浅拷贝和深拷贝。 31. 使用`str.replace()`方法可以查询和替换字符串中的特定子串。 32. `*args`用于接收不定数量的位置参数,`**kwargs`用于接收不定数量的关键字参数。