python面试题(81-111)

            第二部分 网络编程和并发(34题)

1、简述 OSI 七层协议。

        物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

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

         C/S传统程序架构,要有客户端和服务器端,典型的例子QQ就是基于C/S架构的,你本地只是一个客户端,而主程序运行在腾讯的服务器。

        B/S架构就是给予浏览求的应用程序,网站就是很典型的代表,而通常所说的B/S架构则更是指的是基于网页的系统

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

        建立连接协议(三次握手)

      (1)客户端发送一个带SYN标志的TCP报文到服务器
      (2) 服务器端回应客户端的
      (3) 客户必须再次回应服务段一个ACK报文

扫描二维码关注公众号,回复: 2165983 查看本文章

        连接终止协议(四次挥手)

      (1) TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送
      (2) 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1
      (3) 服务器关闭客户端的连接,发送一个FIN给客户端
      (4) 客户段发回ACK报文确认,并将确认序号设置为收到序号加1

4、什么是arp协议?

        ARP(Address Resolution Protocol)地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议

5、TCP和UDP的区别?

         1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接

       2、TCP提供可靠的服务。通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付 
         3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流
    UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
         4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
         5、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

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

        局域网和广域网是按规模大小而划分的两种计算机网络。

        局域网(Local Area Network),简称LAN,是指在某一区域内由多台计算机互联成的计算机组。“某一区域”指的是同一办公室、同一建筑物、同一公司和同一学校等,一般是方圆几千米以内。

        广域网(Wide Area Network),简称WAN,是一种跨越大的、地域性的计算机网络的集合,通常跨越省、市,甚至一个国家。广域网包括大大小小不同的子网,子网可以是局域网,也可以是小型的广域网。

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

        tcp:TCP的可靠保证,是它的三次握手双向机制,这一机制保证校验了数据,保证了他的可靠性

         udp:不可靠 一直发数据,不需要对方回应

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

             Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。
          服务端:创建socket对象,绑定ip端口bind(),  设置最大链接数listen(),  accept()与客户端的connect()创建双向管道, send(), recv(),close()
             客户端:创建socket对象,connect()与服务端accept()创建双向管道 ,  send(), recv(),close()

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

        粘包:数据粘在一起

        主要因为:接收方不知道消息之间的界限,不知道一次性提取多少字节的数据造成的

        数据量比较小,时间间隔比较短,就合并成了一个包,这是底层的一个优化算法(Nagle算法)

10、IO多路复用的作用?

        I/O多路复用是通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。

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

      简单的来说,防火墙就是一种,避免你的电脑被黑客入侵的一种防护工具,一种确保网络安全的方法!

      设置防火墙目的都是为了在内部网与外部网之间设立唯一的通道,简化网络的安全管理。

       1、允许网络管理员定义一个中心点来防止非法用户进入内部网络。

       2、可以很方便地监视网络的安全性,并报警。

       3.可以作为部署NAT(网络地址变换)的地点,利用NAT技术,将有限的IP地址动态或静态地与内部的IP地址对应起来,用来缓解地址空间短缺的问题。 

                  防火墙可以阻止黑客入侵,但不能防止病毒入侵!


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

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

        进程拥有自己的堆和栈,既不共享堆也不共享栈 进程由操作系统调度

        线程拥有自己的堆和共享的栈 共享栈 但不共享堆 线程也是由操作系统调度

        协程和线程一样有自己的堆和共享的栈 共享栈但不共享堆 协程由开发人员在适当情况调用

14、GIL锁是什么鬼?

        GIL:Global Interpreter Lock 全局解释器锁

        当我们用多线程的时候,每一个进程中只有一个GIL锁,那么这多个线程中谁拿到GIL锁,谁即可以用cpu(ps:多个进程有多个Gil锁,但每个进程中只有一个GIL)

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

        进程池:使用multiprocessing.Pool

        线程池:使用ThreadPool模块  

16、threading.local的作用?

        threadLocal解决了参数在一个线程中各个函数之间相互传递的问题

        一个threadLocal变量虽然是全局变量,但每个线程都只能读写自己线程的独立副本 互不干扰

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

        创建一个queue队列,或使用 from multiprocessing import Manage管理要进行通信的数据 

18、什么是并发和并行?

        并发:指两个或多个事件在同一时间间隔发生

        并行:指两个或多个事件在同一时刻发生

        并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。

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

          进程锁:也是为了控制同一操作系统中多个进程访问一个共享资源,只是因为程序的独立性,各个进程是无法控制其他进程对资源的访问的,但是可以使用本地系统的信号量控制
          线程锁:主要用来给方法、代码块加锁。当某个方法或者代码块使用锁时,那么在同一时刻至多仅有有一个线程在执行该段代码,当有多个线程访问同一对象的加锁方法/代码块时,同一时间只有一个线程在执行,其余线程必须要等待当前线程执行完之后才能执行该代码段
         线程锁,进程锁的作用都是一样的,只是作用的范围大小不同。
         进程锁——大于——线程锁,能用线程锁的情况下使用进程锁也是可以的

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

        异步双方不需要共同的时钟,也就是接收方不知道发送方什么时候发送,所以在发送的信息中就要有提示接收方开始接收的信息,如开始位,同时在结束时有停止位。

        非阻塞模式是指利用socket事件的消息机制,Server端与Client端之间的通信处于异步状态。

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

        路由器(Router)亦称选径器,是在网络层实现互连的设备。可以连接多个网络或网段的网络设备,包括局域网和广域网。

        交换机(Switch)是一种基于MAC(网卡的硬件地址)识别,为始发者和接收者之间建立临时的联网路径。

        区别:

         1、工作层次不同:交换机比路由器更简单,路由器比交换器能获取更多信息
         2、数据转发所依据的对象不同
         3、传统的交换机只能分割冲突域,不能分割广播域;而路由器可以分割广播域
         4、路由器提供了防火墙的服务

22、什么是域名解析?  

        域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务

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

        记事本打开C:\Windows\System32\drivers\etc下的hosts文件进行修改

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

        应用于一个生产数据一个处理数据的场景    

        优势生产者和消费者之间不直接进行通信 而是通过一个队列相当于一个缓冲区,平衡了生产者和消费者的处理能力


25、什么是cdn?

        CDN的全称是Content Delivery Network,即内容分发网络。       

        其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络"边缘",使用户可以就近取得所需的内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。


26、LVS是什么及作用?      

27、Nginx是什么及作用?

         Nginx是一个http服务器
         1、 http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
         2、 虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。基于端口的,不同的端口基于域名的,不同域名
         3、 反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况


28、keepalived是什么及作用?

29、haproxy是什么以及作用?

30、什么是负载均衡?

         负载均衡是高可用网络基础架构的的一个关键组成部分,有了负载均衡,我们通常可以将我们的应用服务器部署多台
然后通过负载均衡将用户的请求分发到不同的服务器用来提高网站、应用、数据库或其他服务的性能以及可靠性。  

猜你喜欢

转载自blog.csdn.net/qq_39097722/article/details/81046060