基础知识
1.可变类型:整形 长整型 浮点数 复数 布尔类型 字符串 元祖
2.不可变类型:列表 字典
3.GIL锁:GIL锁和cpython语言没啥关系,出现在cpython解释器中,在一个进程中开启多个线程,同一时刻只有抢到GIL的线程会进行执行
4.GIL锁的影响:使用Cpython解释器,在多个cpu环境下,GIL锁会使多线程任务的执行效率降低
5.list和tuple区别: list可以添加重复的元素,允许修改,tuple是不可以添加重复的元素,而且值使不允许修改的
6.装饰器:外层函数嵌套内层函数,外层函数并且把内层函数名称返回
7.装饰器的应用场景:在不修改某个函数的基础上添加新功能
8.字典key的类型:字典key只能是不可变类型
9.python中*args 和 **kwargs区别: args传入的值会保存在元组中,kwargs传入的值会保存在字典中(传入的参数是有名参数)
10.python的数据结构:列表 字典 元祖 集合 字符
11.lambda表达式:是一个匿名函数,在代码被执行的时候构建的函数对象并返回
12.并发和并行:并发是一个cpu在多个程序上进行切换操作,并行是多个cpu同一时间不停的同时执行多个程序
13.python中一些常用模块:os json time sys random
14.什么是tcp/ip协议:tcp/ip协议是网络协议,是面向连接的一种协议,发送数据前双方要建立连接,tcp提供可靠的服务,通过tcp连接数据不会丢失,没有重复,并且顺序一定
15.什么是udp协议:upd协议属于一种无连接协议,发送数据前不需要建立连接,是没有可靠性的协议,只负责将数据发送对方接收没接收到是不管的
16.tcp和udp的区别:
tcp协议
是面向连接的协议,数据传输的过程中是可靠的
只能实现一对一
面向字节流的传输方式
udp协议
没有连接,数据传输的过程中是不可靠的
可以实现一对一 一对多 多对多
面向报文的传输方式
17.udp的应用场景:游戏 媒体通信 直播
18.socket和websocket区别:socket是对tcp udp协议封装的一个实现,方便使用,websocket是基于html5的一种协议,实现了全双工通信,而且websocket也是基于http协议实现的,使用http协议初始化,在初始化的过程中升级为websocket协议
19.post和get请求的区别:
post请求:重点是向服务器发送数据,post请求支持上传大量的数据,post请求数据是放在请求头不 是安全的
get请求:只要是向服务器获取数据,get请求传输的数据量小(受到浏览器url长度的限制),get请求传输数据是不安全的,因为get请求把数据放在url中
20.对称加密和非对称加密:
对称加密指的是加密和解密使用的是同一种密钥
非对称加密: 既有公钥和私钥,公钥可以随意发布 私钥只能自己知道,发送文件的时候使用公钥加密,接收方使用私钥解密,私钥不需要发送进行解密,所以非对称加密是安全的
21.cookie:cookie是存储在浏览器端的 以键值对的方式,客户端请求服务器的时候自动携带cookie
22.session:session是存储在服务器端的,一般在传输过程中会把sessionid存储在cookie中以键值对的方式,
23.cookie和session区别:
cookie:数据是存放在浏览器端不是安全的,cookie的保存数据不能超过4k
session:数据是存放在服务器端的,session并无大小限制
24.常见的状态码
200 表示请求成功
301 表示资源永久重定向
302 表示临时重定向
404 表示未找到资源
405 表示请求方法被禁止
500 表示服务端错误
25.生成器:
函数中带有yield就可以称作是一个生成器,
26.迭代器
实现了iter 和 next方法的就可以成为是一个迭代器,生成器也是一个迭代器
数据库
1.数据库分为关系型数据库和非关系型数据库
关系型数据:mysql
非关系型数据库:redis mongodb
2.什么是sql
结构话查询语句简称sql
3.innoDB和myisam的区别
innoDB:支持事物 支持行级锁和外键约束,支持hash索尼,索引是聚簇索引,不支持全文索引
myisam:不支持事物,不支持行级锁和外键约束, 不支持hash索引,非聚簇索引,支持全文索引
存储空间:myisam可被压缩,存储空间小,innoDB需要更多额内存和和存储,他会在主内存中建立其专用的缓冲池用于告诉缓冲数据和索引
查询比较多的话使用myisam引擎更优
插入更新 删除 比较多的话使用 innodb引擎更优
4.什么是索引
索引是一种数据结构,数据库中一个排序的数据结构,协助快速查询
5.索引的作用
加快查询速度,提高查询效率
6.索引的缺点:
时间方面:创建索引和维护索引要耗费时间,当对表中的数据进行增加 删除 修改的时候,索引也要动态的维护,
空间方法:索引需要占物理空间
7.索引主要有哪些
唯一索引(可以为null) 主键索引(不允许为null) 普通索引
8.索引的数据结构
b+树索引
9.什么情况下需要创建索引
频繁作为查询条件的字段进行创建索引
更新频繁的字段不适合创建索引
10.创建索引应该注意什么
非空字段
索引字段越小越好
11 数据库使用b+数据的原因
b+树空间利用率高,可减少i/o次数
适合随机检索和顺序检索
12.mysql四种隔离级别
读未提交:可能会产生脏读 幻读
读已提交:可能产生幻读
可重复读:幻度可能会发生
串行化:
13.什么是脏读
事务A修改了一个数据,但未提交,事务B读到了事务A未提交的更新结果,事务B读到的就是脏数据。
14.幻读
一个事务中两次查询同一条语句,得到的结果是不一致的
15.jwt问题
jwt是什么:json web token 跨域身份验证
为什么使用jwt: 数据保存在客户端
jwt工作原理: 在服务器端进行用户身份验证之后,签发的一个json对象并将其发送到客户端,之后当用户与服务器通信时,客户在请求中发回json对象,为了防止用户篡改数据,服务器将在生成对象时添加签名,并对发回的数据进行校验
jwt组成: 头部 载荷 签名
16.