python面试题1
1.字符串的格式化方式
format
%s
2.元祖,列表 字典 集合定义方法,增加 删除,修改
3.时间打印
strftime
4.re模块search()和match()区别
search和match都是只匹配一个 接收两个参数,(正则表达式,带匹配的字符串),search匹配符合条件的第一个,match根据所写的正则从头开始匹配。匹配开头 ,^开头的
5 lamba函数
匿名函数,可以和内置函数何用,减少冗余代码
6. init 和 new
init初始化方法 new为构造方法cls ,先执行new再执行init方法 del为析构方法,删除对象之前执行
7. 反射
用字符串变量或函数名 调用对应的函数和方法 getattr setattr hasattr
8. 深拷贝和浅拷贝
深拷贝 另外开辟新的内存空间存储拷贝所有层, 浅拷贝只是从新开辟孔家拷贝第一层。
- 列表推倒式
[pow(2,i) for i in rang(2,8) if i !=3 ]
10. random
random.random() random.ranint(1,5)
11. 新式类和经典类
.新式类 默认集成object ,寻找一个方法广度优先
经典类 寻找一个方法遵循深度优先,
12. 装饰器
加载方法前执行
def warpper(func):
def inner(*args):
print(’这里写装饰器要执行的内容 比如打印时间’)
ret =func()
return ret
return inner
13. 并发和并行
并发 同一时间只能有一个cpu处理 如多线程
并行 同一时间多个cpu处理 如多进程
14 event事件原理
有一个状态控制wait方法是否阻塞
15.粘包 避免
tcp 面向连接的流传输 数据无边界
udp 基于数据包 没有粘包现象
如何避免: 自定义协议,struct 模块
16.进程
运行中的程序 最小的资源分配单位,为多个任务之间的数据安全和内存隔离做约束
17. 线程
cpu调度的最小单位,轻量级的进程,进程的一部分 依赖进程,可以共享进程中的数据
18.管道 队列
管道 双向通信的一个数据容器。多进程ipc用到 数据不安全
队列 先进先出 基于管道和锁实现的一个数据再线程和进程之间安全的容器
19. GIL概念,对多线程的影响
GIL全局解释器锁 属于cpython 用于在cpython解释一段多线程代码时 约束线程在同一时间只能有一个线程访问cpu,导致多线程并不能实现并行。
20. 单例
单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。
Python 的模块就是天然的单例模式,因为模块在第一次导入时,会生成 .pyc 文件,当第二次导入时,就会直接加载 .pyc 文件,而不会再次执行模块代码。因此,我们只需把相关的函数和数据定义在一个模块中,就可以获得一个单例对象了
21. 异步
在同一时间可以做多件事。 多线程和多进程,
异步阻塞。自己io操作,不影响其他线程进程
22.线程锁
互斥锁 同一线程或进程之间,当有两个acquire时 会产生阻塞。死锁
递归锁 同一线程或进程 无论acquire多次都不会阻塞��锁 递归锁 同一线程或进程 无论acquire多次都不会阻塞