阿里云暑期实习测试开发岗一面
【面试时间:2023/2/14 】
部门:阿里云网络
面试时长:40mins
- 自我介绍
- 问项目
- python多线程、多进程、协程
- HTTPS和HTTP区别
- 如果TCP连接不成功,但是ping可以ping通,如何排查网络问题
- 反问环节
【复盘】
python多线程、多进程、协程:
Python的多线程是伪多线程,因为GIL(全局解释锁)的存在使得每个时刻只能有一个线程运行(即使是多核CPU的情况下)
要想利用多核CPU,可以使用多进程。因为每个进程有一个GIL。
GIL:Global Interpreter Lock 全局解释锁,是python中用于线程同步的一种机制,它使得任何时刻仅有一个线程在执行。即使在多核心处理器上,使用GIL的解释器也只允许同一时间执行一个线程
协程:又称微线程,Coroutine。协程的作用是在执行函数A时,可以随时中断去执行函数B,然后中断继续执行函数A(可以自由切换)。但这个过程并不是函数调用(没有调用语句)。协程由于是程序主动控制切换,没有线程切换的开销,所以执行效率极高。对于IO密集型任务非常适用。如果是CPU密集型,推荐使用多进程+协程的方式。
进程/线程:操作系统提供的一种并发处理任务的能力。
协程:程序员通过高超的代码能力,在代码执行流程中人为的实现多任务并发,是单个线程内的任务调度技巧。
HTTP和HTTPS的区别:
- https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
- http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
- http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
- http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
如果TCP连接不成功,但是ping可以ping通,如何排查网络问题
(来自chatGPT的答案:)
- 防火墙:目标主机可能配置了防火墙规则,禁止TCP连接。因此,您可以通过ping命令ping通目标主机,但是无法建立TCP连接。请检查目标主机的防火墙规则并确保允许TCP连接。
- 网络连接问题:可能存在与TCP连接相关的网络问题,例如路由器故障或网络故障。请检查您的网络连接,包括您的计算机和目标主机之间的任何中间路由器。
- 端口问题:如果您尝试连接的端口没有在目标主机上打开,那么TCP连接将失败。请确保您尝试连接的端口在目标主机上打开。
- DNS问题:如果您使用主机名而不是IP地址尝试建立连接,则可能存在DNS问题。请确保您的主机名解析到正确的IP地址。