python网络编程与并发面试题(一)

网络编程和并发(34题)

1:简述 OSI 七层协议。

2:什么是C/S和B/S架构?

3:简述 三次握手、四次挥手的流程。

4:什么是arp协议?

5:TCP和UDP的区别?

6:什么是局域网和广域网?

7:为何基于tcp协议的通信比基于udp协议的通信更可靠?

8:什么是socket?简述基于tcp协议的套接字通信流程。

9:什么是粘包? socket 中造成粘包的原因是什么? 哪些情况会发生粘包现象?

10:IO多路复用的作用?

11:什么是防火墙以及作用?

12:select、poll、epoll 模型的区别?

13:简述 进程、线程、协程的区别 以及应用场景?

14:GIL锁是什么鬼?

15:Python中如何使用线程池和进程池?

16:threading.local的作用?

17:进程之间如何进行通信?

18:什么是并发和并行?

19:进程锁和线程锁的作用?

20:解释什么是异步非阻塞?

21:路由器和交换机的区别?

22:什么是域名解析?

23:如何修改本地hosts文件?

24:生产者消费者模型应用场景及优势?

25:什么是cdn?

26:LVS是什么及作用?

27:Nginx是什么及作用?

28:keepalived是什么及作用?

29:haproxy是什么以及作用?

30:什么是负载均衡?

31:什么是rpc及应用场景?

32:简述 asynio模块的作用和应用场景。

33:简述 gevent模块的作用和应用场景。

34:twisted框架的使用和应用?

1. 简述 OSI 七层协议 

C/S架构合理地让客户端和服务器承担一部分逻辑事务处理,使得服务器的负担减轻了,而且客户端也能进行一些数据处理和存储的功能。B/S架构的浏览器就是它的客户端,可是这个客户端只能进行一些简单的输入输出和信息发布共享的功能,主要的逻辑事务处理还是要靠服务器,所以服务器的负担很重。

2. 什么是C/S和B/S架构?

C/S是两层架构,由客户端和服务器组成,而B/S是三层架构,由浏览器,WEB服务器和数据库服务器组成。

C/S架构合理地让客户端和服务器承担一部分逻辑事务处理,使得服务器的负担减轻了,而且客户端也能进行一些数据处理和存储的功能。B/S架构的浏览器就是它的客户端,可是这个客户端只能进行一些简单的输入输出和信息发布共享的功能,主要的逻辑事务处理还是要靠服务器,所以服务器的负担很重。

C/S架构是客户端和服务器直接相连,实现点对点的通信,B/S是浏览器通过WEB服务器向数据库服务器发送数据请求,实现多对多的通信。

C/S架构是建立在局域网的基础之上的,局域网之间通过专用服务器提供连接提供服务。B/S架构是建立在广域网的基础之上,有更大的使用范围。

3. 简述三次握手、四次挥手的流程。

4. 什么是arp协议?
地址解析协议(Address Resolution Protocol),其基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在IPv6中已不再适用,并被邻居发现协议(NDP)所替代。比如当边界路由器收到一个数据报时,此时只有本网段内目标主机的 IP 地址,而不知道主机的MAC地址,此时就需要使用ARP协议,根据目标主机的IP地址解析出MAC地址,然后将该数据包交付给目标主机。

逆地址解析协议(Reverse Address Resolution Protocol,RARP),是一种网络协议,互联网工程任务组(IETF)在RFC903中描述了RARP。RARP使用与ARP相同的报头结构,作用与ARP相反。RARP用于将MAC地址转换为IP地址。其因为较限于IP地址的运用以及其他的一些缺点,因此渐为更新的BOOTP或DHCP所取代。 详细链接


5. TCP和UDP的区别?

TCP是面向连接的,可靠的,缓慢的,可靠交付以及保证消息顺序的协议。

UDP是无连接的,不可靠的,没有序列保证,但是一个快速传输的协议。详细信息可看博客

6. 什么是局域网和广域网?

局域网:(Local Area Network,LAN), 局域网是一个局部范围的计算计组,比如家庭网络就是一个小型的局域网,里面包含电脑、手机和平板等,他们共同连接到你家的路由器上。又比如学校的机房就是一个局域网,里面有几百几千台电脑,当机房无法上外网时,但是电脑之间仍可以通信,你们可以通过这个局域网来打CS 、玩红警。理论上,局域网是封闭的,并不可以上外网,可以只有两台电脑,也可以有上万台。

广域网:(WAN,Wide Area Network),广域网的范围就比较大了,可以把你家和别人家、各个省、各个国家连接起来相互通信。广域网和局域网都是从范围的角度来划分的,广域网也可以看成是很多个局域网通过路由器等相互连接起来。

以太网:(Ethernet),以太网可以看成是一种实现局域网通信的技术标准,是目前最广泛的局域网技术。以太网的运行速率有10Mbps,100Mbps,1Gbps,10Gbps的,它的传输介质有的是双绞线,有的是光纤。 简单的说,以太网就是在局域网内,把附近的设备连接起来,可以进行通讯。

互联网:(Internet),互联网可以看成是局域网、广域网等组成的一个最大的网络,它可以把世界上各个地方的网路都连接起来,个人、政府、学校、企业,只要你能想到的,都包含在内。互联网是一种宽泛的概念,是一个极其庞大的网络。


7. 为何基于tcp协议的通信比基于udp协议的通信更可靠?

TCP提供交付保证,这意味着一个使用TCP协议发送的消息是保证交付给客户端的。如果消息在传输过程中丢失,那么它将重发,这是由TCP协议本身控制的。UDP是不可靠的,它不提供任何交付的保证。一个数据报包在运输途中可能会丢失。这就是为什么UDP是不适合保证交付的项目。

8. 什么是socket?简述基于tcp协议的套接字通信流程。

Socket 英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,像一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电,有的提供110伏交流电,有的则提供有线电视节目。客户软件将插头插到不同编号的插座,就可以得到不同的服务。

流程如下:

①服务端创建一个ServerSocket对象,指定端口号,ServerSocket对象等待客户端的连接请求。
②客户端创建一个Socket对象,指定主机地址和端口号,向服务端发出连接请求。
③服务端接收到客户端的连接请求,建立一条TCP连接,再创建一个Socket对象与客户端的Socket对象进行通信。
④服务端和客户端分别创建字节输入流和字节输出流,通过字节输入流获得对方发来的数据,通过字节输出流向对方发送数据。
⑤当一方决定结束通信时,向对方发送结束信息;另一方接收到结束信息后,双方分别关闭各自的TCP连接。
⑥ServerSocket对象停止等待客户端的连接请求。

9. 什么是粘包? socket 中造成粘包的原因是什么? 哪些情况会发生粘包现象?

粘包:多个数据包被连续存储于连续的缓存中,在对数据包进行读取时由于无法确定发生方的发送边界,而采用某一估测值大小来进行数据读出,若双方的size不一致时就会使指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。

出现粘包现象的原因是多方面的,它既可能由发送方造成,也可能由接收方造成。

详细信息点击链接

10. IO多路复用的作用?

IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。详细信息点击链接

猜你喜欢

转载自blog.csdn.net/Zz8474/article/details/89501938