目录
- 什么是匿名函数
匿名函数是一种没有明确名称的函数,也被称为lambda函数。它通常用于需要一个临时函数的场景,不需要定义函数的完整结构。匿名函数可以在需要时声明和使用,而无需事先定义函数名称。
匿名函数的语法通常为:lambda 参数列表表达式
2.什么是三次握手
三次握手和四次挥手是TCP协议中用于建立和关闭连接的过程。
三次握手(Three-way Handshake)是在TCP连接建立时使用的过程。它的目的是确保客户端和服务器之间的通信能够正常进行。具体步骤如下:
1. 客户端向服务器发送一个SYN(同步)报文,表示客户端请求建立连接。
2. 服务器接收到客户端的SYN报文后,向客户端发送一个SYN-ACK(同步-确认)报文,表示服务器接受连接请求,并准备好建立连接。
3. 客户端接收到服务器的SYN-ACK报文后,向服务器发送一个ACK(确认)报文,表示客户端也准备好建立连接。
3.什么是四次挥手
四次挥手(Four-way Handshake)是在TCP连接关闭时使用的过程。它的目的是确保客户端和服务器能够正确地关闭连接。具体步骤如下:
1. 客户端向服务器发送一个FIN(结束)报文,表示客户端不再发送数据。
2. 服务器接收到客户端的FIN报文后,向客户端发送一个ACK报文,表示服务器收到了客户端的关闭请求。
3. 服务器继续发送数据给客户端,直到服务器准备好关闭连接。
4. 服务器向客户端发送一个FIN报文,表示服务器准备关闭连接。
5. 客户端接收到服务器的FIN报文后,向服务器发送一个ACK报文,表示客户端收到了服务器的关闭请求。
6. 客户端继续等待一段时间,以确保服务器收到了ACK报文。
7. 客户端关闭连接,服务器也关闭连接。
4.python常见的异常类
1. `SyntaxError`:语法错误,通常是由于代码书写错误导致的。
2. `IndentationError`:缩进错误,通常是由于代码缩进问题导致的。
3. `NameError`:名称错误,通常是由于引用了不存在的变量或函数导致的。
4. `TypeError`:类型错误,通常是由于操作数类型不匹配或不支持某种操作导致的。
5. `ValueError`:值错误,通常是由于传递了无效的值或参数导致的。
6. `IndexError`:索引错误,通常是由于访问了不存在的索引或序列导致的。
7. `KeyError`:键错误,通常是由于访问了不存在的键或字典导致的。
8. `FileNotFoundError`:文件不存在错误,通常是由于打开或读取不存在的文件导致的。
9. `ZeroDivisionError`:零除错误,通常是由于除法运算中除数为零导致的。
10. `AttributeError`:属性错误,通常是由于访问不存在的属性或方法导致的。
5.什么是redis
Redis是一个开源的内存数据结构存储系统,可以用作数据库、缓存和消息中间件。它支持多种数据结构,如字符串、哈希表、列表、集合、有序集合等,并提供了丰富的操作命令和功能。
Redis的主要特点包括:
1. 高性能:Redis将数据存储在内存中,因此具有快速的读写速度。它还支持持久化到磁盘,以便在重启后恢复数据。
2. 多种数据结构:Redis支持多种数据结构,如字符串、哈希表、列表、集合、有序集合等。这使得它可以适用于各种不同的应用场景。
3. 分布式:Redis支持分布式架构,可以通过主从复制和集群模式来实现数据的高可用性和扩展性。
4. 支持事务和原子操作:Redis支持事务操作,可以一次性执行多个命令,并通过MULTI、EXEC、WATCH等命令来实现原子操作。
5. 发布/订阅模式:Redis支持发布/订阅模式,可以实现消息的发布和订阅功能,用于构建实时通信和消息队列系统。
6. 支持扩展功能:Redis还提供了一些扩展功能,如Lua脚本支持、键过期和自动删除、数据持久化等。
6.redis持久化
Redis提供了两种持久化方式来保证数据在重启后的恢复:
1. RDB持久化:RDB持久化是将Redis的数据以二进制形式保存到硬盘上的文件中。它可以通过配置文件设置定期或手动触发RDB持久化操作。定期触发可以通过设置save配置项来指定持久化的时间间隔和数据修改次数。
2. AOF持久化:持久化是将Redis的操作日志以追加的方式保存到硬盘上的文件中。每当Redis执行一个修改数据的命令时,都会将命令写入AOF文件中,以此来记录数据的修改操作。
7.redis如何实现乐观锁
Redis 的乐观锁是基于 WATCH 命令和事务(MULTI/EXEC)来实现的。WATCH 命令用于监视给定的键,如果在事务执行期间,被监视的键被其他客户端所改动,那么事务将被打断。通过检查事务执行结果中的 nil 值,可以判断是否发生了冲突,从而决定如何处理
8.python元类
在 Python 中,元类(metaclass)是用于创建类的类。它是一种高级特性,允许我们在定义类时自定义类的行为
元类的主要作用是控制类的创建过程,可以拦截类的定义、修改类的属性和方法,甚至可以替换类的实现。通过定义元类,我们可以对类进行自定义的元编程操作
在 Python 中,可以使用 type 内置函数来创建元类。type 函数接受三个参数:类名、基类元组(可选)、类属性字典。通过调用 type 函数并传递这些参数,就可以动态创建一个类
9.type和isinstance的区别
type:返回一个对象的类型,是类对象的实例,用于判断对象的具体类型
isinstance:判断对象是否是某个类的实例,返回的是一个布尔值
10.魔法方法iter的含义
定义一个对象的迭代器
使用 for 循环或其他迭代方式遍历对象时,实际上是在调用对象的 iter 方法来获取选代器,然后使用选代器依次获取值
11.魔法方法new的含义
创建对象之前分配内存空间并返回一个实例
new方法通常与init方法使用
常用于元类的创建过程或者对某些不可变类型(如tuple,str等)的自定义创建行为
12.redis的过期策略
定时过期:每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。
惰性过期:只有当访问一个key时,才会判断该key是否已过期,过期则清除。
定期过期:每隔一定的时间,会扫描一定数量的数据库的expires字典中一定数量的key,并清除其中已过期的key。