星期天作业(五道题)

1、队列和栈有什么特点:

*队列先进先出,栈先进后出

*从"数据结构"的角度看,它们都是线性结构,即数据元素之间的关系相同

2、谈谈进程、线程、协程:

*进程是资源分配的单位

*线程是操作系统调度的单位

*进程切换需要的资源很最大,效率很低

*线程切换需要的资源一般,效率一般(不考虑GIL)

*协程切换任务资源很小,效率高

*多进程、多线程根据cpu核数不一样可能是并行的,但是协程是在一个线程中 所以是并发

3、面向对象的封装有什么特点:

把抽象的数据和对数据进行的操作封装在一起,将属性和方法封装到一个抽象的类中

数据被保存在内部,程序的其他部分只有通过被授权的操作(成员方法)才能对数据进行操作。外界使用类创建对象,然后让对象调用方法

通过在实例上调用方法,我们就直接操作了对象内部的数据,但无需知道方法内部的实现细节。对象方法的细节都被封装在类的内部

4、什么叫可迭代对象?迭代器?生成器是迭代器吗?

*把可以通过for...in...这类语句迭代读取一条数据供我们使用的对象称之为可迭代对象(Iterable)**。

可以使用 isinstance() 判断一个对象是否是 Iterable 对象

*一个实现了__iter__方法和__next__方法的对象,就是迭代器。

生成器是一类特殊的迭代器。但不是所有的迭代器都是是,生成器。

5、什么叫死锁、互斥锁

*死锁,就是当多个进程或者线程在执行的过程中,因争夺共享资源而造成的一种互相等待的现象,一旦产生了死锁,不加人工处理,程序会一直等待下去,这也被称为死锁进程。

*互斥锁:只有当一个进程在进行资源的时候,进行上锁,可以保护资源,只有当他运行玩的时候,才会进行解锁。对数据的保护

你可能感兴趣的:(星期天作业(五道题))