标签:strong href 出现 dict 功能 好的 定义 闭包 目录
1.数据类型有几种、有什么区别
列表 list
元组 tuple
字符串 string
数字 int,float,complex
布尔类型 True,False
字典 dict
集合 set
2.进程、线程、协程定义及区别
进程是操作系统进行资源分配和调度的基本单位,多个进程之间相互独立。
线程是CPU进行资源分配和调度的基本单位,它是比进程更小的能独立运行的基本单位
协程的调度完全由用户控制
区别
线程与进程的比较 1.线程是进程的一个执行单元,进程内至少有一个线程,在一个进程中线程是共享进程的资源,进程与进程之间相互不影响。 2.线程是CPU调度的基本单位,但进程不是 3.二者均可并发执行 4.线程不能独立执行,必须依存在应用程序中(进程) 协程与线程的比较 1.一个线程可以有多个协程,一个进程也可以单独拥有多个协程 2.线程与进程都是同步机制,而协程是异步 3.协程能保留上一次调用的状态
总结
在IO密集型一般使用多线程,CPU密集型使用多进程,强调非阻塞异步并发的一般都是使用协程
3.深浅拷贝的区别
浅拷贝是对原元素的引用,如果修改了原元素中的可变数据类型,拷贝之后的数据也会跟着改
深拷贝是原元素的数据拷贝,放入新开辟的内存地址,修改原元素对深拷贝之后的数据不会产生影响
4.常用设计模式
https://blog.csdn.net/wmj150731/article/details/81589659
5.函数式编程,对象式编程
函数式编程是从头写到尾,中间修改后面也要改(类似流水线生产,从头到尾)
对象式编程相当于组装多个功能,形成一个大功能(类似于把每个流水线生产好的部件在这里组装起来)
6.闭包、装饰器
闭包函数:定义在内部的函数引用外部函数的名字叫做闭包函数
7.名称空间的查找顺序
查找顺序:局部>>全局>>内置
函数在定义阶段就已经固定查找名字的顺序,不会因为函数的调用的位置改变而改变
8.python中的类可以多继承么,多继承的继承方式
可以,写多个父类就行
9.魔法方法,举例并说明
__init__ 初始化函数,在创建实例对象为其赋值时使用 __new__ 在__init__之前执行,真正的构造函数,并返回一个实例对象,当做参数self给__init__使用 __call__ 当调用一个对象的时候,就会触发类中的__call__方法
创建对象步骤
1.首先调用__new__得到一个对象 2.__init__为这个对象添加属性 3.将对象赋值给变量
10.生成器、迭代器、可迭代对象的定义及区别
可迭代对象:内置有__iter__方法的对象就是可迭代对象
迭代器:可迭代对象执行__iter__方法得到的结果就是迭代器,迭代器既有__iter__方法又有__next__方法
生成器:用户自定义的迭代器,内部加了关键字yield,yield后面的值必须调用__next__方法才能获得
重点:
迭代器一定是可迭代对象,可迭代对象不一定是迭代器
for循环的本质:将in后面的可迭代对象调用__iter__变成迭代器,调用__next__迭代取值
11.垃圾回收机制
引用计数:当内存中的数据没有任何变量名与其有绑定关系,就会被自动回收
标记清除:当内存快要被某个应用程序占满的时候,会自动触发清除
分代回收:根据存活的时间,划分不同的等级,等级越高的垃圾回收机制扫描的频率越低
12.线程安全、死锁、GIL
线程安全:如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。存在竞争的线程不安全,不存在竞争的线程就是安全的
死锁:死锁是指两个或两个以上的线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
GIL:全局解释器锁,不是python的特性,是cpython中的一个概念。在一个进程中所有线程的资源是共享的,为了保证线程的数据完整性,所以使用了GIL,每次只执行一个线程。
13.解决线程不安全的办法
抢票用多线程实现,可能出现多个用户买同一张票的情况
设置锁Lock,在处理数据之前抢到锁,处理完数据之后释放锁。
14.linux常用命令,举例说明
mv 移动文件 mv 源文件目录 目标文件目录 mv test3 test2 把test2文件移动到test3下 grep指令和管道符|使用 查看redis的进程号 ps -ef | grep redis 杀死进程 kill 进程号 cp拷贝指令 cp 原路径 目标路径
16.http状态码
http协议四大特性
1.基于请求和响应 2.基于TCP/IP之上作用于应用层的协议 3.无状态(服务端无法保存用户的状态) 4.无链接(请求来一次就响应一次,之后立马断开连接)
请求数据格式
请求首行(标识HTTP协议版本,当前的请求方式) 请求头(一大堆k,v键值对) /r/n 请求体(一些敏感信息)
五种响应状态码
1XX:服务端已经成功接收了你的数据正在处理,你可以继续提交额外的数据 2xx:服务端成功响应你想要的数据(请求成功200) 3xx:重定向(当你在访问一个需要登录之后才能访问的页面,你会发现窗口会自动调到登录页面) 301 302 4xx:请求错误(请求资源不存在报404,请求不合法不符合内部规定权限不够报403) 5xx:服务器内部错误(500)
17.http和https的区别
1.http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。 2.http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。 3.http的连接很简单,是无状态的。Https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
18.网络编程、通信协议
19.三次握手、四次回收
20.http中get 和 post的区别
21.缓存怎么做
就是把需要经常使用的数据提前放在某个地方,可以是本机的内存,也可以放在其他地方,这样做可以减少系统开销,提高系统效率。
22.session、cookie的区别
Session是保存在服务端,用来跟踪用户的状态
Cookie是保存在客户端的,用cookie来实现session跟踪的,第一次创建session的时候,服务端会告诉客户端,在cookie里面记录一个session ID,以后每次请求把这个ID发送到服务端就知道是哪个用户了。
23.TCP UDP区别
标签:strong href 出现 dict 功能 好的 定义 闭包 目录
原文地址:https://www.cnblogs.com/wangcuican/p/12595453.html