1、队列和栈有什么特点:
*队列先进先出,栈先进后出
*从"数据结构"的角度看,它们都是线性结构,即数据元素之间的关系相同
2、谈谈进程、线程、协程:
*进程是资源分配的单位
*线程是操作系统调度的单位
*进程切换需要的资源很最大,效率很低
*线程切换需要的资源一般,效率一般(不考虑GIL)
*协程切换任务资源很小,效率高
*多进程、多线程根据cpu核数不一样可能是并行的,但是协程是在一个线程中 所以是并发
3、面向对象的封装有什么特点:
把抽象的数据和对数据进行的操作封装在一起,将属性和方法封装到一个抽象的类中
数据被保存在内部,程序的其他部分只有通过被授权的操作(成员方法)才能对数据进行操作。外界使用类创建对象,然后让对象调用方法
通过在实例上调用方法,我们就直接操作了对象内部的数据,但无需知道方法内部的实现细节。对象方法的细节都被封装在类的内部
4、什么叫可迭代对象?迭代器?生成器是迭代器吗?
*把可以通过for...in...这类语句迭代读取一条数据供我们使用的对象称之为可迭代对象(Iterable)**。
可以使用 isinstance() 判断一个对象是否是 Iterable 对象
*一个实现了__iter__方法和__next__方法的对象,就是迭代器。
生成器是一类特殊的迭代器。但不是所有的迭代器都是是,生成器。
5、什么叫死锁、互斥锁
*死锁,就是当多个进程或者线程在执行的过程中,因争夺共享资源而造成的一种互相等待的现象,一旦产生了死锁,不加人工处理,程序会一直等待下去,这也被称为死锁进程。
*互斥锁:只有当一个进程在进行资源的时候,进行上锁,可以保护资源,只有当他运行玩的时候,才会进行解锁。对数据的保护