1、队列和栈的区别:
队列(Queue):是限定只能在表的一端进行插入和另一端删除操作的线性表
栈(Stack):是限定之能在表的一端进行插入和删除操作的线性表
队列和栈的规则
队列:先进先出
栈:先进后出
队列和栈的遍历数据速度
队列:基于地址指针进行遍历,而且可以从头部或者尾部进行遍历,但不能同时遍历,无需开辟空间,因为在遍历的过程中不影响数据结构,所以遍历速度要快
栈:只能从顶部取数据,也就是说最先进入栈底的,需要遍历整个栈才能取出来,遍历数据时需要微数据开辟临时空间,保持数据在遍历前的一致性
2、线程,线程,和协程
进程:进程是系统进行资源分配和调度的⼀个独立单位.
线程:线程是进程的⼀个实体, 也叫轻量级进程,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有⼀点在运行中必不可少的资源。但是它可与同属⼀个进程的其他的线程共享进程所拥有的全部资源.
协程:协程执行过程中,在协程内部可中断,然后转而执行别的协程,在适当的时候再返回来接着执行。协程之间不是调用者与被调用者的关系,而是彼此对称、平等的,通过相互协作共同完成任务。
3、面向兑现的特点:封装,继承,多态
封装:
就是把抽象的数据和对数据进行的操作封装在一起,将属性和方法封装到一个抽象的类中
数据被保存在内部,程序的其他部分只有通过被授权的操作(成员方法)才能对数据进行操作。外界使用类创建对象,然后让对象调用方法
通过在实例上调用方法,我们就直接操作了对象内部的数据,但无需知道方法内部的实现细节。对象方法的细节都被封装在类的内部
4、什么叫可迭代对象?迭代器?生成器是迭代器吗?
可迭代对象:
可迭代对象包含迭代器。
如果一个对象拥有__iter__方法,其是可迭代对象
迭代器:
一个对象拥有next方法,就是迭代器
生成器:
生成器不是迭代器
5、死锁:
1.关于死锁。 死锁,就是当多个进程或者线程在执行的过程中,因争夺共享资源而造成的一种互相等待的现象,一旦产生了死锁,不加人工处理,程序会一直等待下去,这也被称为死锁进程。
互斥锁:
只有当一个进程在进行资源的时候,进行上锁,可以保护资源,只有当他运行玩的时候,才会进行解锁。对数据的保护。