1、TCP和UDP的区别?
TCP面向连接,UDP面向无连接。
TCP提供可靠的全双工通信,UDP尽最大努力通信,不保证可靠。
TCP基于字节流,UDP基于数据报。
TCP占用资源多,UDP占用资源少。
TCP只支持1对1通信,UDP支持1对1,1对多,多对1,多对多。
TCP的运输协议数据单元是报文段,UDP的是用户数据报。
2、拥塞控制的原理?
防止过多的数据注入到网络中,避免网络中的路由器和链路过载。
TCP进行拥塞控制的方法主要有:慢开始,拥塞避免,快重传,快恢复。
慢开始:在刚开始发送数据时,设置一个较小的拥塞窗口值cwnd,每收到一个新的确认报文段,就将cwnd+1。
拥塞避免:由于慢开始算法,拥塞窗口值以指数增长,因此要设置一个慢开始门限ssthresh,当cwnd增长到ssthresh时,启动拥塞避免算法,拥塞窗口值开始线性增长。
快重传:快重传的目的是让发送方尽早知道某个报文段的丢失。当发送方重复收到某一报文段的三次确认时,就判断该报文段的下一个报文段出现了丢失,这时启动快重传算法,立即重传丢失的报文段。
快恢复:当快重传算法启动时,不将其判断为网络拥塞,而是启动快恢复算法,让cwnd=ssthresh=当前cwnd/2,并开始拥塞避免算法。
3、GET和POST的区别?
GET请求,请求的数据会附加在URL之后。
POST请求,请求的数据放在HTTP请求包的主体中。因此,GET请求的数据会暴露在地址栏中,而POST请求不会。
GET请求,传输数据会受到URL长度的限制。
POST请求,传输数据时不会受到长度限制。
GET请求,安全性较差,因为发送的数据是URL的一部分,如果使用GET请求进行登录操作,那么用户名和密码都会暴露。
POST请求,较为安全,因为参数不会被保存在浏览器历史或web服务器日志中。
GET请求,只允许ASCII字符。
POST请求,没有限制。
GET请求,可以被缓存,可以被保存为书签,后退/刷新无影响。
POST请求,不可以被缓存,不可以被保存为书签,后退/刷新会重新提交数据。
4、进程间通信方式有什么?
管道通信
有名管道——半双工通信,允许无亲缘关系进程间通信。
无名管道——半双工通信,只能在有亲缘关系的进程间使用。
信号量
- 一个计数器,用于实现进程间的互斥与同步,若要在进程间传递数据,则需要结合共享内存方法一起使用。
消息队列
- 消息的连接表,由队列标识符标识;消息具有特定的格式和特定的优先级;当进程终止时,消息队列及其内容不会被删除;可以实现消息的随机查询。
共享内存
- 两个或多个进程间共享一个存储区;它是一种最快的进程间通信方式;它允许多个进程同时操作,所以需要结合信号量进行同步。
5、协程是什么?
无序列表内容
无序列表内容
无序列表内容
无序列表内容
无序列表内容
无序列表内容
无序列表内容
无序列表内容
6、数据库通过什么方式提高查询效率?
7、if name=="main"的作用是什么?
8、文件夹中的init.py起到什么作用?
9、Python和C++的区别、优缺点?
10、数学题——有N个学生,每个学生会一种音乐技能,将N个学生分成M组(M<N),每组是同一种音乐技能,现在抽K个学生组成表演队,表演队中至少要有2种音乐技能,问有多少种表演组合?
11、梯度消失和梯度爆炸的产生原因?
12、如何解决梯度消失和梯度爆炸?
13、Python列表生成式怎么写,用处是什么?
14、二叉树和图的区别?