不可不知的软件测试经典面试题

♠ \color{red}{\spadesuit}

Q1、为什么要三次握手?/为什么不能用两次握手进行连接?

对三次握手不明白的可以看下三次握手和四次挥手

  答:三次握手完成两个功能:一是连接服务器指定的端口,建立TCP连接,保证通信双方的数据发送和接受正常;二是同步连接双方的序列号和确认号并交换TCP窗口大小信息,这个序列号在握手过程中被发送和确认。

三次握手是为了防止已失效的连接请求报文突然又传送到服务端,而发生错误。

三次握手若改为两次握手,很容易发生死锁。我们假设这样一种情况,考虑计算机S和C之间的通信,假定C给S发送一个分组请求,S收到后发送确认应答分组。按照两次握手协议,S认为连接已经成功建立,可以开始发送数据分组,可是,S的应答分组在传输给C的过程中出现丢失,C不知道S是否已经准备好,不知道S建立了什么样的序列号,C甚至会怀疑S是否已经收到了自己的请求,在这种情况下,C认为连接还未成功,将忽略S发来的任何数据分组,只等待连接确认应答分组。而S在发出的分组超时后,重新发出同样的分组,便形成了死锁。

Q2、为何连接的时候是三次握手,关闭的时候是四次挥手?

  答:连接的时候是三次握手,是因为Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文,其中ACK报文是响应,SYN是同步。但关闭时是四次是因为,当Server端收到FIN报文时,并不会立即关闭socket,它仅仅表示对方(Client端)发送完了自己要发的数据,但是,server端的数据未必已经发完,因此,Server端先礼貌地回应Client端一个ACK,”嗯,好的,我收到了“。只有当Server端把所有的数据都发完了,才能发送FIN报文,因此FIN和ACK不能同时一起发送给对方,需要分开来发送,导致多了一次,因此是四次挥手。

Q3、如果已经建立了连接,但是客户端突然出现故障怎么办?

  答:TCP还设有一个保活计时器,当然,客户端若出现故障,server端不可能傻傻一直等待下去,白白浪费资源。服务器每收到一客户端的请求后都会重新复位这份计时器,时间通常是设为2小时,若超过这个设定时间还未收到客户端的任何数据,服务器便会发送一个探测报文段,以后每隔一定时间(75分钟)发送一次。若一连发送10个探测报文人仍然没有得到反应,服务器就认为客户端出了故障,接着关闭连接。

Q4、为何TIME_WAIT状态需要经过2MSL才能返回到CLOSE状态?

  答:按道理,四个报文都发送完毕可以直接进入CLOSE状态了,但是,我们必须假设网络是不可靠的,有可能最后一个ACK丢失了。所以,TIME_WAIT状态就是用来重发可能丢失的ACK报文。

在client端发送出最后的ACK报文回复给server端(ACK可能会丢失),在server端未接收到ACK之前,会一直重复发送FIN片段,所以Client端不能关闭,必须处于TIME_WAIT等待状态。client端会设置一个定时器,等待2MSL的时间,如果在该时间内再次收到FIN,那么client端会重发ACK并再次等待2MSL(Maximum Segment Lifetime)若直到2MSL,Client端没有再次收到FIN,那么Client端推断ACK已经成功被接收,则结束TCP连接。

Q5、简述三次握手和四次挥手

参考我的另外一篇博文三次握手和四次挥手

Q6、为什么客户端最后要等待2MSL?(同Q4)

该问题和Q4问题类似,下面是另外一种回答参考

  答:它可以保证客户端发送的最后一个ACK报文能够到达服务器,因为这个ACK报文可能丢失。MSL是最大报文生存时间,2倍的MSL刚好是报文来回的时间,如果在这个2MSL时间内客户端没有收到服务器端发来的FIN片段,代表服务器端已经成功接收到了ACK,如果没有成功接收,服务器端会发送FIN片段,这是客户端可以重新发送ACK报文,所以它能确保发送的最后一个ACK报文到达服务器。

Q7、HTTP和HTTPS的区别?

  Http协议运行在TCP之上,明文传输,客户端与服务器端都无法验证对方的身份;Https是身披SSL(Secure Socket Layer)外壳的Http,运行于SSL上,SSL运行于TCP之上,是添加了加密和认证机制的HTTP。
二者之间存在如下不同:

  1. 端口不同:Http的默认端口是80,Https则是443;
  2. 资源消耗:和Http通信相比,Https通信会由于加减密处理消耗更多的CPU和内存资源;
  3. 开销:Https需要申请证书,而证书一般需要向认证机构购买;
  4. http连接很简单,无状态的,而https是由SSL+HTTP协议构建的可进行加密传输、身份验证的网络协议,比http安全。

Q8、TCP和UDP区别?

TCP (Transmission Control Protocol)是传输控制协议
UDP(User Datagram Protocol)是用户数据报协议
两者都属于传输层协议,它们之间的区别包括:

  1. TCP是面向连接的,UDP是无连接的;
  2. TCP是可靠的,UDP是不可靠的;
  3. TCP只支持点对点通信,UDP支持一对一、一对多、多对一、多对多的通信模式;
  4. TCP是面向字节流的,UDP是面向报文的;
  5. TCP有拥塞控制机制,UDP没有拥塞控制,适合媒体通信;
  6. TCP首部开销(20个字节)比UDP的首部开销(8个字节)要大

所谓字节流服务(Byte Stream Service)是指,为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠地传输给对方。

Q9、HTPPS为什么安全?

这个是我朋友在秋招面试时在回答完Q7的问题后延伸出来的另外一个问题。详情看这篇☞HTTPS为什么安全

更多面试题可以看
软件测试笔试面试题
三次握手和四次挥手

  • 16
    点赞
  • 264
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
软件测试app面试中,可能会涉及到以下一些常见的问题: 1. 请介绍一下软件测试的基本概念和目的。 软件测试是指通过运行、检查和评估软件系统来验证软件是否满足设计要求、发现其中的缺陷,并确保其质量和可靠性。其目的是提高软件的稳定性和可用性,减少潜在的风险和错误。 2. 请简要介绍一下软件测试的生命周期。 软件测试生命周期包括测试计划、测试设计、测试执行、缺陷管理和测试评估等阶段。在测试计划阶段,确定测试目标、范围和资源,并编制测试计划。在测试设计阶段,根据需求和设计文档,设计测试用例和测试数据。在测试执行阶段,执行测试用例并记录测试结果。在缺陷管理阶段,跟踪和管理发现的缺陷。最后,在测试评估阶段,评估测试的完整性和效果,生成测试报告。 3. 请说明什么是黑盒测试和白盒测试,并列举它们的区别。 黑盒测试是在不考虑内部结构和实现细节的情况下,仅根据软件的功能需求进行测试的方法。白盒测试是基于了解软件内部结构和代码的情况下,设计和执行测试用例的方法。区别在于黑盒测试关注的是软件的外部行为和功能,而白盒测试则关注软件内部的逻辑和代码覆盖。 4. 请解释一下alpha测试和beta测试的概念以及它们的区别。 alpha测试是在公司场地内由公司员工主导进行的测试,旨在发现和解决软件系统中的问题和缺陷。而beta测试则是在客户场地由客户主导进行的测试,旨在评估软件在真实环境中的稳定性和用户体验。区别在于alpha测试是在公司内部进行的,而beta测试是对外发布给客户进行的。 5. 请说说您对自动化测试的理解和经验。 自动化测试是使用自动化工具和脚本来执行软件测试的过程。它可以提高测试的效率和准确性,并能够在短时间内执行大量的测试用例。通过编写脚本和使用自动化测试工具,可以自动化执行重复性的测试任务,减少人工测试的工作量。同时,也需要关注自动化测试的可维护性和稳定性。 以上是关于软件测试app面试题的一些常见问题和回答,希望对您有帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [17道APP测试面试题分享带参考答案](https://blog.csdn.net/okcross0/article/details/129389176)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [App测试经典面试题及参考答案](https://blog.csdn.net/m0_67695717/article/details/130588000)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值