大厂5G python自动化测试面试必会 | 网络编程篇

1、什么是客户端/服务器架构?即C/S架构。

参考:《Python核心编程》(第三版)

答:

        对于不同的人来说,它意味着不同的东西,这取决于你问谁以及描述的是软件还是硬件系统。在这两种情况中的任何一种下,前提都很简单:服务器就是一系列硬件或软件,为一个或多个客户端(服务的用户)提供所需的“服务”。它存在唯一目的就是等待客户端的请求,并响应它们(提供服务),然后等待更多请求。

2、套接字分为哪两类套接字?分别基于哪种协议?

参考:《Python核心编程》(第三版)

答:

        a、面向连接的套接字:通常基于TCP/IP协议

        b、无连接的套接字:主要基于UDP协议

3、socket.socket()函数中有一个参数socket_type,该参数有什么作用,参数取值都有哪些?

参考:《Python核心编程》(第三版)

答:

        socket_type参数叫做套接字类型,用于区分当前套接字属于面向连接或是无连接哪种套接字,其中为了创建 TCP 套接字,必须使用 SOCK_STREAM 作为套接字类型。创建UDP套接字,必须使用SOCK_DGRAM作为套接字类型。

4、请简述套接字常见方法。

参考:《Python核心编程》(第三版)

答:

 

5、socket()中的close方法有什么作用?

参考:《Python核心编程》(第三版)

答:

        一旦进入服务器的无限循环之中,我们就(被动地)等待客户端的连接。当一个连接请求出现时,我们进入对话循环中,在该循环中我们等待客户端发送的消息。一般来说上述循环不会跳出,因此close()永远不会被执行,它只是用来提醒读者,如果写了一个处理程序来考虑一个更加优雅的退出方式,正如前面讨论的,那么应该调用close()方法。

6、如何优雅地退出和调用服务器close()方法?

参考:《Python核心编程》(第三版)

答:

        在开发中,创建这种“友好的”退出方式的一种方法就是,将服务器的while循环放在一个try-except语句中的except子句中,并监控EOFError或KeyboardInterrupt异常,这样你就可以在except或finally字句中关闭服务器的套接字。在生产环境中,你将想要能够以一种更加自动化的方式启动和关闭服务器。在这些情况下,需要通过使用一个线程或创建一个特殊文件或数据库条目来设置一个标记以关闭服务。

7、除了socket.socket()函数意外,socket模块还提供了哪些用于网络应用开发的属性?

参考:《Python核心编程》(第三版)

答:

 

8、SocketServer是标准库中的一个高级模块,他的作用有哪些?

参考:《Python核心编程》(第三版)

答:

        SocketServer(Python 3.x中重命名为socketserver),它的目标是简化很多样板代码,它们是创建网络客户端和服务器所必需的代码。

9、SocketServer提供了哪些常用类?

参考:《Python核心编程》(第三版)

答:

 

10、SocketServer 请求处理程序的默认行为是什么?

参考:《Python核心编程》(第三版)

答:

        SocketServer 请求处理程序的默认行为是接受连接、获取请求,然后关闭连接。由于这个原因,我们不能在应用程序整个执行过程中都保持连接,因此每次向服务器发送消息时,都需要创建一个新的套接字。这种行为使得TCP服务器更像是一个UDP服务器。然而,通过重写请求处理类中适当的方法就可以改变它。

11、Twisted作为一个完整的事件驱动的网络框架应用场景有哪些?

参考:《Python核心编程》(第三版)

答:

        Twisted既能使用也能开发完整的异步网络应用程序和协议。它提供了大量的支持来建立完整的系统,包括网络协议、线程、安全性和身份验证、聊天/ IM、DBM及RDBMS数据库集成、Web/因特网、电子邮件、命令行参数、GUI集成工具包等。

12、select模块在配合socket模块使用时有哪些作用?

参考:《Python核心编程》(第三版)

答:

        select模块提供了select()函数,该函数管理套接字对象集合。它所做的最有用的一个事情就是接收一套套接字,并监听它们活动的连接。select()函数将会阻塞,直到至少有一个套接字已经为通信做好准备,而当其发生时,它将提供一组准备好读信息的集合(它还可以确定哪些套接字准备好写入,虽然它不像前一种操作那么常见)。

13、在创建服务器方面,async*和SocketServer模块应用场景有哪些?

参考:《Python核心编程》(第三版)

答:

        在创建服务器方面,async*和SocketServer模块都提供更高级的功能。它们以socket和/或select模块为基础编写,能够使客户端/服务器系统开发更加迅速,因为它们已经自动处理了所有的底层代码。你需要做的所有工作就是以自己的方式创建或继承适当的基类。正如前面所提到的,SocketServer 甚至提供了将线程或新进程集成到服务器的功能,它提供了一个更像并行处理的客户端请求的流程。

14、请简洁的解释什么是Concurrence 。

参考:《Python核心编程》(第三版)

答:

        Concurrence 是一个更现代化的网络框架,它是荷兰社交网络 Hyves 的后台引擎。Concurrence是一个搭配了libevent的高性能I/O系统,libevent是一个低级事件回调调度系统。Concurrence是一个异步模型,它使用轻量级线程(执行回调)以事件驱动的方式进行线程间通信和消息传递工作。

15、套接字。TCP和UDP之中,哪种类型的服务器接受连接,并将它们转换到独立的套接字进行客户端通信?

参考:《Python核心编程》(第三版)

答:

        TCP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值