【面试时间:2023/2/14 】
部门:阿里云网络
面试时长:40mins
【复盘】
python多线程、多进程、协程:
Python的多线程是伪多线程,因为GIL(全局解释锁)的存在使得每个时刻只能有一个线程运行(即使是多核CPU的情况下)
要想利用多核CPU,可以使用多进程。因为每个进程有一个GIL。
GIL:Global Interpreter Lock 全局解释锁,是python中用于线程同步的一种机制,它使得任何时刻仅有一个线程在执行。即使在多核心处理器上,使用GIL的解释器也只允许同一时间执行一个线程
协程:又称微线程,Coroutine。协程的作用是在执行函数A时,可以随时中断去执行函数B,然后中断继续执行函数A(可以自由切换)。但这个过程并不是函数调用(没有调用语句)。协程由于是程序主动控制切换,没有线程切换的开销,所以执行效率极高。对于IO密集型任务非常适用。如果是CPU密集型,推荐使用多进程+协程的方式。
进程/线程:操作系统提供的一种并发处理任务的能力。
协程:程序员通过高超的代码能力,在代码执行流程中人为的实现多任务并发,是单个线程内的任务调度技巧。
HTTP和HTTPS的区别:
如果TCP连接不成功,但是ping可以ping通,如何排查网络问题
(来自chatGPT的答案:)