计算机网络八股文

Posted 想进阿里的小菜鸡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络八股文相关的知识,希望对你有一定的参考价值。

1. 网络分层结构

七层结构

** **TCP/IP 四层模型

2.TCP三次握手和四次挥手

建立一个 TCP 连接需要“三次握手”,缺一不可 :

  • 一次握手:客户端发送带有 SYN(SEQ=x) 标志的数据包 -> 服务端,然后客户端进入 SYN_SEND 状态,等待服务器的确认;
  • 二次握手:服务端发送带有 SYN+ACK(SEQ=y,ACK=x+1) 标志的数据包 –> 客户端,然后服务端进入 SYN_RECV 状态
  • 三次握手:客户端发送带有 ACK(ACK=y+1) 标志的数据包 –> 服务端,然后客户端和服务器端都进入ESTABLISHED 状态,完成TCP三次握手。

3.为什么要三次握手?

  • 第一次握手 :Client 什么都不能确认;Server 确认了对方发送正常,自己接收正常
  • 第二次握手 :Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:对方发送正常,自己接收正常
  • 第三次握手 :Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己发送、接收正常,对方发送、接收正常

4.四次握手

5.四次挥手

  • 第一次挥手 :客户端发送一个 FIN(SEQ=X) 标志的数据包->服务端,用来关闭客户端到服务器的数据传送。然后,客户端进入 FIN-WAIT-1 状态。
  • 第二次挥手 :服务器收到这个 FIN(SEQ=X) 标志的数据包,它发送一个 ACK (SEQ=X+1)标志的数据包->客户端 。然后,此时服务端进入CLOSE-WAIT状态,客户端进入FIN-WAIT-2状态。
  • 第三次挥手 :服务端关闭与客户端的连接并发送一个 FIN (SEQ=y)标志的数据包->客户端请求关闭连接,然后,服务端进入LAST-ACK状态。
  • 第四次挥手 :客户端发送 ACK (SEQ=y+1)标志的数据包->服务端并且进入TIME-WAIT状态,服务端在收到 ACK (SEQ=y+1)标志的数据包后进入 CLOSE 状态。此时,如果客户端等待 2MSL 后依然没有收到回复,就证明服务端已正常关闭,随后,客户端也可以关闭连接了。

6.第四次挥手为什么要等待2MSL?

具体来说,如果客户端发送了最后一次确认,但该确认在网络中丢失了,那么服务器端会超时并重新发送最后一次关闭请求。如果客户端已经关闭了连接,那么它无法响应这个请求,这样服务器端就会认为连接仍然存在,并继续发送数据。这种情况下,如果没有等待 2MSL,那么服务器端就可能将新连接的数据与旧连接的数据混淆,导致数据传输错误。因此,等待 2MSL 可以确保连接的可靠关闭。
如果最后一次确认没有丢失就是1MSL就可以关闭,所以两者取最大的就行。

7.为什么是四次挥手?

TCP是全双工通信,可以双向传输数据。任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭了 TCP 连接。
举个例子:A 和 B 打电话,通话即将结束后。

  1. 第一次挥手 : A 说“我没啥要说的了”
  2. 第二次挥手 :B 回答“我知道了”,但是 B 可能还会有要说的话,A 不能要求 B 跟着自己的节奏结束通话
  3. 第三次挥手 :于是 B 可能又巴拉巴拉说了一通,最后 B 说“我说完了”
  4. 第四次挥手 :A 回答“知道了”,这样通话才算结束。

8.为什么不能把服务器发送的 ACK 和 FIN 合并起来,变成三次挥手?

因为服务器收到客户端断开连接的请求时,可能还有一些数据没有发完,这时先回复 ACK,表示接收到了断开连接的请求。等到数据发完之后再发 FIN,断开服务器到客户端的数据传送。

9.如果第二次挥手时服务器的 ACK 没有送达客户端,会怎样?

客户端没有收到 ACK 确认,会重新发送 FIN 请求。

10.TCP有哪些特点

TCP的主要特点是:面向连接、单播、可靠交付、全双工通讯、面向字节流、头部开销大。

11.TCP和UDP区别

  • UDP 一般用于即时通信,比如: 语音、 视频 、直播等等。这些场景对传输数据的准确性要求不是特别高,比如你看视频即使少个一两帧,实际给人的感觉区别也不大。
  • TCP 用于对传输准确性要求特别高的场景,比如文件传输、发送和接收邮件、远程登录等等。

12.HTTP协议的特点

  1. 简单:HTTP协议采用请求-响应模型,客户端向服务器发送请求,服务器响应请求,因此协议设计简单。
  2. 无状态:HTTP协议是一种无状态协议,即服务器不保存任何客户端请求的信息。每个请求都是相互独立的,服务器无法识别两个请求是否来自同一个客户端。
  3. 可扩展:HTTP协议支持多种不同的请求方法、状态码和头部信息,因此可以根据需要进行扩展。
  4. 基于TCP/IP:HTTP协议是基于TCP/IP协议簇的应用层协议,使用TCP协议保证数据传输的可靠性。
  5. 明文传输:HTTP协议传输的数据是明文的,不加密,因此安全性较差。为了保证数据的安全性,需要采用HTTPS协议。
  6. 请求-响应模型:HTTP协议采用请求-响应模型,客户端向服务器发送请求,服务器响应请求,因此协议设计简单。

13.HTTP报文格式

14.HTTP状态码

14.1 503 Service Unavailable状态码

服务器端临时错误

14.2 504 Gateway timeout

网关超时

14.3.POST和GET的区别?

GET
GET方法请求一个指定资源的表示形式,使用GET的请求应该只被用于获取数据
POST
POST方法用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用
本质上都是TCP链接,并无差别
但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中会体现出一些区别

  1. GET方法是用于从服务器获取资源的请求,而PUT方法是用于将客户端数据存储在服务器上的请求。
  2. GET请求不会更改服务器上的数据,而PUT请求会将客户端数据存储在服务器上,从而更改服务器上的数据。
  3. GET方法将请求的数据作为URL的一部分发送,而PUT方法将请求的数据作为请求体发送。
  4. GET请求是幂等的,即多个相同的请求产生相同的响应。PUT请求也是幂等的,因为多个相同的请求仅会更改数据一次。
  5. GET请求具有缓存效果,因为相同的请求可以重复使用缓存中的响应。PUT请求不具有缓存效果,因为每个请求都会更改服务器上的数据。
  6. GET请求的响应只能是只读的,而PUT请求的响应可以包含用于确认数据存储的元数据

14.4 HTTP长连接和短连接

HTTP短连接:
在HTTP短连接中,客户端和服务器之间的连接在每次请求和响应之后都会被关闭。这意味着,如果客户端需要再次请求数据,它必须重新建立连接。这种连接方式的优点是,它不会占用服务器的资源,因为连接在每次请求和响应之后都被关闭。但是,它的缺点是,它会增加连接的延迟时间,因为每次请求都需要重新建立连接。
HTTP长连接:
在HTTP长连接中,客户端和服务器之间的连接会保持打开状态,以便在未来的请求和响应中重复使用。这意味着,如果客户端需要再次请求数据,它不必重新建立连接。这种连接方式的优点是,它可以减少连接的延迟时间,因为不需要重新建立连接。但是,它的缺点是,它会占用服务器的资源,因为连接会保持打开状态,直到客户端关闭连接或服务器超时。
需要注意的是,HTTP长连接并不意味着连接会一直保持打开状态,因为服务器和客户端都可以随时关闭连接。HTTP长连接的实现方式是通过在HTTP请求和响应头中添加Connection: Keep-Alive头部信息。

14.5 HTTP1.1和 HTTP2.0的区别?

  1. 多路复用:HTTP/2.0引入了多路复用,允许同时在单个TCP连接上发送多个请求和响应,从而提高了网络效率。
  2. 二进制协议:HTTP/2.0使用二进制协议,取代了HTTP/1.1的文本协议,这使得协议的解析更加高效。
  3. 头部压缩:HTTP/2.0使用HPACK算法对请求和响应头部进行压缩,减少了通信中的数据量。
  4. 服务器推送:HTTP/2.0允许服务器在客户端请求之前就开始向客户端推送数据,从而提高了页面加载速度。
  5. 流量控制:HTTP/2.0引入了流量控制机制,使得客户端可以控制服务器发送数据的速率,从而避免了网络拥塞

14.6 HTTP 和 HTTPS 有什么区别?(重要)

  • 端口号 :HTTP 默认是 80,HTTPS 默认是 443。
  • URL 前缀 :HTTP 的 URL 前缀是 http://,HTTPS 的 URL 前缀是 https://。
  • 安全性和资源消耗 : HTTP 协议运行在 TCP 之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。HTTPS 是运行在 SSL/TLS 之上的 HTTP 协议,SSL/TLS 运行在 TCP 之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。所以说,HTTP 安全性没有 HTTPS 高,但是 HTTPS 比 HTTP 耗费更多服务器资源。

14.7 什么是数字证书

数字证书是一种权威性的电子文档,它提供了一种在 Internet 上验证身份的方式。 其作用类似于司机的驾驶执照或日常生活中凭证。 它是由一个权威机构——CA证书授权(Certificate Authority)中心发行的,人们可以在互联网交往中用它来识别对方的身份。

14.8 HTTPS原理

  • 建立安全连接

在 HTTPS 中,客户端与服务器之间的通信必须通过 SSL/TLS 协议进行加密。客户端首先向服务器发起请求,请求建立一个 SSL/TLS 安全连接。服务器会向客户端发送 SSL/TLS 证书,包括公钥、证书颁发机构等信息。客户端使用这些信息验证服务器的身份,并生成一个随机的对称加密密钥(session key)。

  • 加密数据传输

客户端使用服务器的公钥对 session key 进行加密,然后将加密后的 session key 发送给服务器。服务器使用自己的私钥解密 session key,然后使用 session key 对通信过程中的数据进行加密。加密后的数据在传输过程中,即使被截获,黑客也无法解密其中的内容。

  • 数据完整性校验

在 HTTPS 中,为了防止数据被篡改,服务器会对数据进行数字签名,并将签名随着数据一起发送给客户端。客户端使用服务器的公钥验证签名,以确保数据完整性和真实性。

14.9 SSL握手过程

  1. 客户端向服务器发送一个SSL连接请求。该请求包含支持的协议版本号、加密算法、压缩方法等信息。
  2. 服务器回复一个SSL握手响应。该响应包含SSL证书,以及服务器支持的协议版本号、加密算法、压缩方法等信息。
  3. 客户端验证服务器证书的有效性。它将检查证书是否来自受信任的证书颁发机构(CA),证书中的主题是否与服务器域名匹配,以及证书是否在有效期内。
  4. 如果证书验证成功,客户端将生成一个随机数(ClientRandom),并使用服务器证书中的公钥加密它,以便服务器后续能够解密。
  5. 服务器接收到客户端的加密数据,并使用自己的私钥解密。它还生成一个随机数(ServerRandom)并发送回客户端。
  6. 服务器将使用协商的加密算法和密钥生成器来生成会话密钥(Session Key)。服务器还会发送一条消息,告诉客户端会话密钥已经生成。
  7. 客户端接收到服务器发来的消息,也会生成一个会话密钥。这个会话密钥和之前生成的ClientRandom和ServerRandom一起,用于后续的加密通信。
  8. SSL握手过程完成后,客户端和服务器可以开始使用会话密钥进行加密通信。

14.10 常见的加密算法

  1. 对称性加密算法:AES、DES、3DES. …
  2. 非对称性算法:RSA、DSA、ECC. …
  3. 散列算法(签名算法):MD5、SHA1、HMAC. …
  4. 其他常用算法:Base64、HTTPS、钥匙串加密ios

14.11 为什么CA第三方机构是可信的

CA的可信性建立在其合规性、安全性、审计和认证程序的基础上。这些措施确保了数字证书的真实性和安全性,从而使第三方机构成为可信的机构

15.DNS的解析过程?

  1. 浏览器向本地DNS服务器发起查询请求。
  2. 如果本地DNS服务器缓存了该域名对应的IP地址,则直接返回查询结果,否则本地DNS服务器将向根DNS服务器发起查询请求。
  3. 根DNS服务器返回指向该域名的顶级域名服务器(TLD)的IP地址。
  4. 本地DNS服务器再次向TLD服务器发起查询请求。
  5. TLD服务器返回指向该域名的权威域名服务器(authoritative nameserver)的IP地址。
  6. 本地DNS服务器向权威域名服务器发起查询请求。
  7. 权威域名服务器返回该域名对应的IP地址给本地DNS服务器。
  8. 本地DNS服务器将该IP地址缓存,并将查询结果返回给用户的浏览器。
  9. 浏览器使用该IP地址向目标网站的服务器发起连接请求。

16.浏览器中输入URL返回页面过程

  1. URL解析和DNS解析:浏览器首先解析URL中的协议、主机名和路径等信息,然后使用DNS解析器将主机名转换为对应的IP地址。如果DNS缓存中没有对应的IP地址,则浏览器会向本地DNS服务器发起请求,并依次向根DNS服务器、TLD服务器和权威DNS服务器查询,以获取IP地址。
  2. 建立TCP连接:一旦获取到目标服务器的IP地址,浏览器就会通过TCP协议与该服务器建立连接。在此过程中,浏览器和服务器之间会交换一些数据包来建立稳定的连接。
  3. 发送HTTP请求:一旦TCP连接建立成功,浏览器会向服务器发送一个HTTP请求,该请求包含了浏览器需要获取的资源信息,例如页面内容、图片、脚本和样式等。
  4. 接收HTTP响应:服务器接收到HTTP请求后,会根据请求的内容和参数,生成一个HTTP响应,并将其返回给浏览器。该响应包含了所请求的资源的具体内容和其他相关信息。
  5. 渲染页面:浏览器接收到HTTP响应后,会对响应进行解析和处理,然后使用html、CSS和javascript等技术来渲染页面,并将其显示在浏览器窗口中。
  6. 断开TCP连接:一旦页面完全加载完毕,浏览器会向服务器发送一个TCP连接关闭请求,以断开与服务器的连接。此时用户就可以开始浏览页面,与页面进行交互了。

17.什么是cookie和session

Cookie是一种在用户计算机上存储小数据的技术,它由服务器在HTTP响应中发送给客户端,存储在客户端浏览器中,并在后续HTTP请求中将其发送回服务器。Cookie可以用于记录用户的偏好设置、购物车内容、登录状态和访问历史等信息。Cookie是基于域名和路径限制的,只有在同一域名和路径下的请求才能访问到相同的Cookie。Cookie还可以设置过期时间,使得它们在一定时间后自动过期,从而达到对用户隐私的保护。
Session是一种在服务器端存储用户状态的技术,它基于Cookie或URL重写来维护会话状态。当用户第一次访问服务器时,服务器会创建一个唯一的Session ID,并将其存储在Cookie中或将其添加到URL的查询参数中。随后,每次用户请求时,服务器都会检查Session ID是否存在,如果存在,则将与该Session ID相关联的数据返回给客户端。Session可以用于记录用户的登录状态、访问权限和用户数据等信息。与Cookie不同,Session数据存储在服务器端,从而保证了用户数据的安全性和隐私性。
需要注意的是,Cookie和Session都是基于HTTP协议实现的,因此它们对于其他协议或协议层(如TCP、UDP、IP等)并不适用。另外,Cookie和Session在使用过程中需要注意安全性问题,如防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)等攻击。

18.Token

Token是一种在Web应用程序中广泛使用的身份验证机制。它通常用于在客户端和服务器之间进行身份验证和授权。Token是一个包含用户身份信息的字符串,通常使用JSON Web Token(JWT)标准进行编码。
当用户登录时,服务器会生成一个Token并将其返回给客户端。客户端在后续请求中发送这个Token,以证明其身份和授权。服务器可以使用Token来验证用户身份,授权他们访问受保护的资源,并在必要时重新生成新的Token。
Token通常比Cookie和Session更安全,因为它们可以使用加密算法进行签名和加密,防止伪造和篡改。Token还可以在不同的应用程序和服务之间共享,使得单一的用户认证可以在整个系统中使用。

19.TCP如何保证传输的可靠性

  1. 三次握手建立连接:在数据传输之前,发送方和接收方需要进行三次握手来建立连接。这个过程确保双方都能够通信,而且对方已经准备好接收数据。如果握手失败,TCP会尝试重新建立连接。
  2. 数据包的序列号和确认应答:TCP会给每个数据包分配一个唯一的序列号,并且接收方必须发送确认应答来告诉发送方已经接收到了数据。如果发送方在一定时间内没有收到确认应答,它会重新发送数据包。
  3. 滑动窗口机制:TCP使用滑动窗口机制来控制发送和接收的数据量,防止数据包的丢失和拥塞。接收方会告诉发送方自己的接收窗口大小,发送方会根据这个大小来发送数据。
  4. 超时重传:如果发送方在一定时间内没有收到确认应答,它会重新发送数据包。TCP会根据网络状况和延迟情况来动态地调整超时时间。
  5. 拥塞控制:TCP使用拥塞控制算法来避免网络拥塞。当网络出现拥塞时,TCP会减少发送的数据量,并且逐渐增加发送数据的速率。

20.TCP确保传输可靠性的方式

  1. 重传机制:TCP会周期性地发送确认消息来确认收到的数据包,如果发送方没有收到确认消息,它将会重传数据包,以确保数据包不会丢失。
  2. 滑动窗口协议:TCP使用滑动窗口协议来控制数据的传输速率,这样可以避免发送方发送太多数据而导致网络拥塞。
  3. 拥塞控制:TCP会监测网络拥塞情况并相应地调整传输速率,以避免网络拥塞和数据丢失。
  4. 校验和:TCP在每个数据包中添加校验和,以确保数据在传输过程中没有被篡改。
  5. 数据确认:TCP要求接收方对收到的数据包进行确认,这样发送方才会知道数据已经成功到达接收方。
  6. 数据分段:TCP会将数据分成较小的段进行传输,以避免网络拥塞和数据丢失。

21.TCP的校验和

TCP在数据包的头部中添加了一个校验和字段,用于验证数据在传输过程中是否被篡改。校验和是通过对TCP头部和数据部分进行计算得到的,计算方法是将头部和数据部分看作16位字的序列,每相邻两个字节相加,将结果相加并取反,最后得到的值作为校验和存储在校验和字段中。
在数据包接收方接收到数据包后,它也会计算数据包的校验和,如果计算出的校验和与接收到的校验和不相同,则说明数据包在传输过程中出现了错误,需要丢弃该数据包并请求重新传输。
TCP的校验和主要用于检测传输过程中出现的随机位错误,而不是检测有意篡改数据的攻击。因此,在保证数据的安全性方面,还需要使用其他的安全机制来保护数据的完整性和机密性。

22.TCP的确认应答与序列号

TCP(Transmission Control Protocol)是一种面向连接的可靠的传输层协议。在TCP传输过程中,每个数据包都有一个唯一的序列号,这个序列号用于区分数据包的顺序。在发送方发送数据包之后,接收方需要对接收到的每个数据包进行确认应答,确认应答中包含接收到的数据包的序列号。
TCP中的序列号和确认应答机制是用于保证数据传输的可靠性和完整性的重要机制。
当发送方发送数据包时,数据包中包含有序列号,用于标识这个数据包在整个数据流中的位置。接收方收到数据包后会发送确认应答(ACK),确认应答中包含的序列号表示接收方已经成功接收到了这个序列号对应的数据包。
如果发送方在规定的时间内没有收到确认应答,就会重新发送这个数据包。如果接收方收到的数据包的序列号不是接收方期望的序列号,接收方也会发送一个确认应答,告诉发送方需要重新发送这个数据包。
通过序列号和确认应答机制,TCP可以保证数据传输的可靠性和完整性。如果数据包在传输过程中丢失或者损坏,TCP会自动重新发送数据包,直到接收方成功接收到数据包并发送确认应答为止。

23.TCP的超时重传

TCP的超时重传指的是当发送方发送数据时,在规定的时间内没有收到确认应答或收到了冗余的确认应答,就会触发超时重传机制,即重新发送该数据。
具体来说,当发送方发送一个数据段后,会开启一个计时器,在等待时间内如果没有收到确认应答,就会认为该数据段丢失了,会立即重传该数据段。这个等待时间也就是TCP的超时时间,通常由操作系统内核根据网络环境和历史经验进行动态调整。
TCP的超时重传机制的主要作用是保证数据的可靠性和正确性,确保数据能够成功地被传输到目的地。不过过于频繁的重传也会对网络带宽造成压力,因此超时重传时间的设置需要平衡网络可靠性和效率。

24.TCP的连接管理

25.TCP的流量控制

TCP的流量控制是指通过动态调整发送方的发送速率来避免发送方过度发送数据,导致接收方无法及时处理或数据丢失的问题。
TCP的流量控制机制主要涉及两个因素:窗口和拥塞控制。

  1. 窗口 TCP协议中的窗口是指发送方和接收方之间的数据缓存区域,发送方会根据接收方的窗口大小动态调整发送速率。接收方会在TCP报文中设置一个接收窗口大小值(rwnd),发送方会根据该值控制发送速率,确保不会超出接收方的处理能力。
  2. 拥塞控制 拥塞控制是TCP协议保证网络高效和公平性的机制,主要通过动态调整发送方的拥塞窗口来控制发送速率。发送方会根据网络的拥塞程度,即拥塞窗口的大小来动态调整发送速率。在网络拥塞时,发送方会自动减小拥塞窗口的大小,以避免继续发送数据,导致网络拥塞更加严重。在网络质量恢复时,发送方会逐渐增加拥塞窗口的大小,以提高发送速率。

总之,TCP的流量控制机制可以确保发送方不会过度发送数据,避免了网络拥塞和数据丢失的问题,从而保证了数据传输的可靠性和稳定性。

26.TCP的拥塞控制

  1. 慢启动算法 当TCP连接刚建立时,发送方会以指数级别递增的速度增加拥塞窗口的大小,以确定网络的可用带宽。在每个传输循环中,拥塞窗口的大小加倍,直到网络出现拥塞。
  2. 拥塞避免算法 一旦网络出现拥塞,发送方会进入拥塞避免状态。此时,拥塞窗口的大小会以线性方式增加,而不是指数方式增加,以避免继续发送数据恶化网络拥塞。
  3. 快速重传算法 当接收方接收到的TCP数据包缺失时,它会立即向发送方发送一个重复确认(Duplicate ACK),并请求重传数据。发送方会尝试立即重传缺失的数据包,而不必等待定时器到期。这个过程被称为快速重传。
  4. 快速恢复算法 如果发送方接收到三个重复确认,则意味着该数据包已经丢失并已经被接收方接收。在这种情况下,发送方会将拥塞窗口减半,然后从当前拥塞窗口大小重新开始。这个过程被称为快速恢复。

27.TCP的超时重传

超时重传是指在发送方发送数据后,等待一段时间(即超时时间)后,如果没有收到接收方的确认信息,就会将数据进行重传。TCP会根据网络状况和数据包的重要性来动态调整超时时间,以提高重传的效率。超时重传可以保证数据的可靠传输,但是如果超时时间设置得太长,会导致传输延迟增加,影响用户体验。

28.TCP的快速重传

快速重传是指当发送方发送数据后,接收方只收到了部分数据,并向发送方发送了确认信息,但是发送方没有收到全部的确认信息,就会认为数据包丢失,立即进行重传,而不是等待超时重传机制的触发。快速重传可以避免超时时间设置得过长,提高传输效率,但是如果网络存在乱序丢包,可能会引起不必要的重传,影响网络性能。

29.TCP如果多次超时呢?—超时时间间隔加倍

在TCP中,如果重传超过一定次数,就会采取超时时间间隔加倍的策略,以避免网络拥塞。具体而言,每次超时重传之后,TCP会将超时时间间隔加倍,直到达到一个最大重传次数或者网络恢复正常。

30.SYNC FLOOD syn洪泛攻击

SYN Flood攻击是一种常见的网络攻击,它利用TCP协议的漏洞,向服务器发送大量的伪造SYN请求,使得服务器无法处理正常的请求,从而导致拒绝服务(Denial of Service,DoS)攻击。
在正常情况下,当客户端向服务器发送SYN请求时,服务器会为每个请求分配一定的资源,并向客户端发送SYN+ACK响应。客户端再发送ACK响应,完成三次握手建立连接。而在SYN Flood攻击中,攻击者发送大量的伪造SYN请求,但不会发送ACK响应,这样服务器会一直等待客户端发送ACK,直到超时。由于服务器在等待过程中会一直分配资源,所以当伪造的请求数量达到一定程度时,服务器就会因为资源耗尽而无法处理正常的请求,导致拒绝服务攻击。
为了防止SYN Flood攻击,可以采取以下措施:

  1. 启用SYN cookies:SYN cookies是一种TCP协议的扩展机制,它可以在服务器收到SYN请求时,动态生成一个临时的cookie作为响应,而不是在服务器端分配资源。这样即使攻击者发送大量的伪造SYN请求,服务器也不会耗尽资源,从而避免拒绝服务攻击。
  2. 设置防火墙规则:可以在防火墙中设置一些规则,例如限制每个IP地址发送SYN请求的数量,或者对来自特定IP地址的请求进行拦截,从而阻止SYN Flood攻击。
  3. 限制连接数:可以在服务器端限制每个IP地址建立的连接数,从而防止一个IP地址使用过多的资源,影响其他用户的正常使用。
  4. 加强系统安全:定期更新系统补丁,使用强密码和防病毒软件,可以减少系统被攻击的风险,从而避免SYN Flood攻击的发生。

31.Ping命令原理

Ping命令的原理是基于Internet控制消息协议(ICMP),它是一种网络协议,用于在IP网络上发送控制消息。Ping命令使用ICMP协议来发送数据包并接收响应。它通过向目标计算机发送一个特定格式的ICMP Echo请求消息来检查目标计算机是否可达。如果目标计算机可达,它将返回一个ICMP Echo响应消息。如果目标计算机不可达,它将返回一个ICMP目的地不可达消息。

32.TCP UDP相关问题

(1)服务端,TCP和UDP可以绑定相同的端口吗?

可以
在同一台服务器上,TCP和UDP可以绑定相同的端口号,因为它们是两种不同的传输层协议,它们使用不同的套接字类型和不同的传输机制。
当应用程序使用TCP或UDP套接字绑定到一个特定的端口时,这个端口就被占用了。如果应用程序同时使用TCP和UDP套接字绑定到相同的端口,那么这个端口就同时被TCP和UDP占用了
例如,如果一个应用程序需要同时使用TCP和UDP来监听同一个端口号,那么它可以创建一个TCP套接字和一个UDP套接字,并将它们都绑定到同一个端口号。在这种情况下,当TCP客户端连接到这个端口时,它将使用TCP套接字进行通信,而当UDP客户端发送数据到这个端口时,它将使用UDP套接字进行通信。

(2)服务端,多个TCP应用可以绑定同一个端口吗?

不可以

(3)重启TCP服务时候,为什么有时候会显示”address already in use’

当你尝试重新启动一个TCP服务时,如果之前绑定到该服务所使用的端口号的套接字仍然处于打开状态,那么操作系统会拒绝绑定新的套接字到该端口上并显示 “address already in use” 错误消息。
这通常发生在以下几种情况下:

  1. 服务没有正确地关闭:如果TCP服务在关闭之前没有正确地释放该端口上的套接字,则该端口可能仍然处于占用状态。在这种情况下,重新启动服务之前,必须先释放该端口上的套接字。
  2. 端口复用:在某些情况下,可以通过设置SO_REUSEADDR套接字选项来启用端口复用。这使得套接字可以重新绑定到已经在使用的端口上。但是,在某些情况下,端口复用可能会导致"address already in use"错误消息的出现。
  3. 并发请求:当有多个并发请求尝试同时绑定到同一个端口时,可能会发生冲突,导致某些请求失败并显示 “address already in use” 错误消息。

为了解决这个问题,你可以使用一些命令行工具或者编程语言提供的方法来关闭之前的套接字并释放该端口,或者修改服务的配置,以避免出现端口冲突的情况

(4)客户端的端口可以重复使用吗?

可以,但是要分类讨论,不bind0的情况
在客户端执行connect 函数的时候,只要客户端连接的服务器不是同一个,内核允许端口重复使用。 TCP 连接是由四元组(源IP地址,源端口,目的IP地址,目的端口)唯一确认的,那么只要四元组中其中一个元素发生了变化,那么就表示不同的TCP 连接的。

(5)多个客户端可以bind同一个端口吗? 不能

在同一个操作系统中,同一时刻只能有一个进程绑定在一个特定的端口上。因此,多个客户端不能直接绑定同一个端口。
然而,有几种方法可以允许多个客户端共享同一个端口:

  1. 使用多路复用技术(例如,select、poll、epoll):在一个进程中,可以使用这些技术同时监视多个客户端的连接,以及接收和处理这些连接上的数据。这样,多个客户端可以共享同一个端口。
  2. 使用代理服务器:代理服务器是一个中间层,可以代表多个客户端与目标服务器进行通信。代理服务器绑定在一个端口上,然后将收到的数据转发到目标服务器,并将响应数据返回给相应的客户端。在这种情况下,多个客户端可以将其连接到代理服务器的相同端口,而代理服务器可以管理和分配连接和数据。

需要注意的是,在任何情况下,所有客户端都必须通过不同的源端口与目标服务器进行通信,以确保网络通信的正确性。

(6)客户端TCP 连接TIME_WAIT 状态过多,会导致端口资源耗尽而无法建立新的连接吗?

是的,客户端TCP连接处于TIME_WAIT状态过多可能会导致端口资源耗尽,从而导致无法建立新的连接。
在TCP连接中,当客户端发送FIN包结束连接时,它会进入TIME_WAIT状态,以确保所有与该连接相关的数据都已经传输完成。在此状态下,客户端将继续等待一段时间,以确保远程主机已经接收到FIN包并响应了ACK包。
如果客户端TCP连接处于TIME_WAIT状态的数量过多,这可能会导致端口资源不足,因为每个TCP连接都需要一个唯一的端口。当所有可用的端口都已被使用时,新的连接将无法建立,从而导致服务不可用的情况。
为了避免这种情况,可以通过调整客户端TCP的TIME_WAIT超时时间来减少TIME_WAIT状态的持续时间,或使用连接重用来避免频繁地建立新的TCP连接。此外,也可以通过增加可用的端口数量来扩展端口资源,以支持更多的TCP连接。

(7)如何解决客户端TCP 连接 TIME_WAIT 过多,导致无法与同一个服务器建立连接的问题?

  1. 调整TIME_WAIT超时时间

可以通过修改客户端TCP的TIME_WAIT超时时间来减少TIME_WAIT状态的持续时间,从而释放端口资源以支持更多的TCP连接。这可以通过在操作系统上设置TCP的TIME_WAIT超时时间来实现。例如,在Linux中,可以使用sysctl命令修改TCP的TIME_WAIT超时时间。

  1. 使用连接重用

在建立TCP连接时,可以使用连接重用来避免频繁地建立新的TCP连接。连接重用允许多个HTTP请求或RPC调用在同一TCP连接上完成,从而减少TIME_WAIT状态的数量。

  1. 增加端口资源

如果TIME_WAIT状态过多,可能需要增加可用的端口数量来扩展端口资源,以支持更多的TCP连接。可以通过在操作系统上增加可用的端口范围或增加操作系统中允许的最大端口数来实现。

  1. 使用连接池

使用连接池可以有效地减少TIME_WAIT状态的数量。连接池管理已经建立的TCP连接,以便在需要时重复使用它们,而不是频繁地建立和关闭连接。
总之,为了解决客户端TCP连接处于TIME_WAIT状态过多的问题,可以采取上述一些或多个措施。这些方法也适用于HTTP调用和RPC调用。

33.Http调用和RPC调用

HTTP调用和RPC调用都是用于实现分布式系统中不同节点之间的通信。
HTTP调用是一种基于HTTP协议的远程调用方式,通常使用RESTful API进行实现。HTTP调用是一种无状态的协议,每次请求都是独立的,因此每个请求都需要包含足够的信息来执行所请求的操作。
RPC调用是一种远程过程调用方式,它通过使用特定的协议和序列化方法实现节点间的通信。RPC调用通常是基于TCP或UDP协议实现的,因此相比HTTP调用具有更高的性能和效率。
相比较而言,HTTP调用通常更适用于数据传输较小、频繁的场景,例如Web应用程序的API调用。而RPC调用则更适用于数据传输较大、复杂的场景,例如分布式计算、高性能数据库等。

软件测试面试必杀篇:2023软件测试面试八股文宝典

800道软件测试面试真题,高清打印版打包带走,横扫软件测试面试高频问题,涵盖测试理论、Linux、MySQL、Web测试、接口测试、App测试、Python、Selenium、性能测试、LordRunner、计算机网络、数据结构与算法、逻辑思维、人力资源等模块面试题,命中率杠杠的,绝对是测试人的福音,面试者的最强武器。

PS:加上参考答案有几十万字,答案就没有全部放上来了,高清打印版本超过400多页,留言直接获取

 

1 测试理论

1.1 测试基础

  1. 什么是软件测试?
  2. 软件测试的目的?
  3. 软件测试的目标
  4. 软件测试的原则
  5. 测试的工作流程
  6. 测试工程师的职责
  7. 软件都有多少种分类?
  8. 软件的分类
  9. 测试的主要方面

10、 软件测试的对象

11、 什么是“测试案例”?

12、 怎么编写案例?

13、 软件测试的两种方法

14、 测试结束的标准是什么?

15、 软件的生命周期

16、 什么是软件的生命周期?

17、 软件测试按过程分为三个步骤

18、 面向对象的设计如何影响测试?

19、 软件带来错误的原因很多。主要的原因有哪些?

20、 做好软件测试的一些关键点

21、 软件测试的步骤是什么?

22、 如何录制测试脚本?

23、 应该考虑进行如何测试的测试方法

24、 怎样估计测试工作量?

25、 测试设计的问题

26、 当测试过程发生错误时,有哪几种解决办法?

27、 测试执行的问题

28、 测试评估的目标

29、 如何提高测试?

30、 C/S 模式的优点和缺点

31、 B/S 模式的优点和缺点

32、 测试结束的标准是什么?

33、 怎么才能够全面的测试到每一个点?

34、 开发与测试的关系

35、 怎么和开发沟通

36、 测试过程

37、 测试出口准则

38、 测试完成标准

39、 测试活动中统计了哪些数据?

40、 如何选择用户测试的工作产品?

41、 测试环境描述在哪儿?

42、 进行测试时产生了哪些文档或记录?

43、 测试人员需要何时参加需求分析?

44、 产品测试完以后由谁来发布?

45、 软件测试与调试的关系

46、 质量的八大特性是什么?各种特性的定义?

47、 什么是软件的“质量”?

48、 软件质量应该从哪些方面来评价?

49、 什么是“软件质量保障”?

50、 为什么软件会有毛病?

51、 什么是 UML?

52、 什么是 CMM?

53、 55. 比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系

54、 比较负载测试、压力测试,容量测试和强度测试区别

55、 测试执行过程的三个阶段

56、 什么是验证、评价、预排、检查?

57、 什么是兼容性测试?兼容性测试侧重哪些方面?

58、 我现在有个程序,发现在Windows上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题?

59、 测试的策略有哪些?

60、 正交表测试用例设计方法的特点是什么?

61、 描述使用bugzilla缺陷管理工具对软件缺陷(BUG)跟踪的管理的流程?

62、 你觉得bugzilla在使用的过程中,有什么问题?

63、 描述测试用例设计的完整过程?

64、 单元测试的策略有哪些?

65、 使用QTP做功能测试,录制脚本的时候,要验证多个用户的登录情况/查询情况,如何操作?

66、 QTP中的Action有什么作用?有几种?

67、 TestDirector有些什么功能,如何对软件测试过程进行管理?

68、 你所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试……)?

69、 软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?

70、 软件的评审一般由哪些人参加?其目的是什么?

71、 测试活动中,如果发现需求文档不完善或者不准确,怎么处理?

72、 阶段评审与项目评审有什么区别?

73、 阐述工作版本的定义?

74、 什么是桩模块?什么是驱动模块?

75、 什么是扇入?什么是扇出?

76、 你认为做好测试计划工作的关键是什么?

77、 你觉得对于测试有哪些基本素质要求

78、 一套完整的测试应该由哪些阶段组成?

79、 软件测试的流程是什么?

80、 说说你对SQA的职责和工作活动(如软件度量)的理解:

81、 单元测试的主要内容?

82、 集成测试也叫组装测试或者联合测试,请简述集成测试的主要内容?

83、 简述集成测试与系统测试关系?

84、 软件测试的文档测试应当贯穿于软件生命周期的全过程,其中用户文档是文档测试的重点。那么软件系统的用户文档包括哪些?

85、 软件系统中除用户文档之外,文档测试还应该关注哪些文档?

86、 简述软件系统中用户文档的测试要点?

87、 单元测试主要内容是什么?

88、 如何理解强度测试?

89、 如何理解压力、负载、性能测试测试?

90、 什么是系统瓶颈?

91、 文档测试主要包含什么内容?

92、 功能测试用例需要详细到什么程度才是合格的?

93、 配置和兼容性测试的区别是什么?

94、 软件文档测试主要包含什么?

95、 没有产品说明书和需求文档地情况下能够进行黑盒测试吗?

96、 测试中的“杀虫剂怪事”是指什么?

97、 在配置测试中,如何判断发现的缺陷是普通问题还是特定的配置问题?

98、 为什么尽量不要让时间有富裕的员工去做一些测试?

99、 完全测试程序是可能的吗?

100、 软件测试的风险主要体现在哪里?

101、 发现的缺陷越多,说明软件缺陷越多吗?

102、 所有的软件缺陷都能修复吗?所有的软件缺陷都要修复吗?

103、 软件测试人员就是QA吗?

104、 如何减少测试人员跳槽带来的损失?

105、 测试产品与测试项目的区别是什么?

106、 和用户共同测试(UAT测试)的注意点有哪些?

107、 如何编写提交给用户的测试报告?

108、 测试工具在测试工作中是什么地位?

109、 什么是软件测试,软件测试的目的?

110、 简述负载测试与压力测试的区别。

111、 写出bug报告流转的步骤,每步的责任人及主要完成的工作。

112、 写出bug报告当中一些必备的内容。

113、 开发人员老是犯一些低级错误怎么解决?

114、 软件的构造号与版本号之间的区别?BVT(BuildVerificationTest)

115、 测试在开发阶段的作用

116、 一个完整的开发流程是什么样的?

117、 测试与开发各个阶段的关系

118、 在软件开发过程中 5 个常见的问题是什么?

119、 针对软件开发过程中的问题,有哪些解决方法?

120、 阐述软件生命周期都有哪些阶段?常见的软件生命周期模型有哪些?

121、 Beta测试与Alpha测试有什么区别?

122、 你认为做好测试用例工作的关键是什么?

123、 简述一下缺陷的生命周期?

124、 软件的安全性应从哪几个方面去测试?

125、 软件配置管理工作开展的情况和认识?

126、 你觉得软件测试通过的标准应该是什么样的?

127、 引入测试管理的含义?

128、 什么是版本控制,常用的版本控制系统有哪些?

129、 简述软件测试与软件开发之间的关系?

130、 为什么要在一个团队中开展软件测试工作?

131、 您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?

132、 您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试……)

133、 您认为做好测试用例设计工作的关键是什么?

134、 请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。

135、 测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?

136、 您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。

137、 说说你对软件配置管理的理解?

138、 请以您以往的实际工作为例,详细的描述一次测试用例设计的完整的过程。

139、 您以往是否曾经从事过性能测试工作?如果有,请尽可能的详细描述您以往的性能测试工作的完整过程。

140、 你对测试最大的兴趣在哪里?为什么?

141、 你以前工作时的测试流程是什么?

142、 当开发人员说不是BUG时,你如何应付?

143、 测试总结报告包括那些项

144、 测试工作进行到一半是,发现时间不够,你如何处理

145、 开发与测试的关系

146、 如果你是测试组长你如何对项目及组员进行管理

147、 缺陷报告严重级别的划分

148、 开发人员修复缺陷后,如何保证不影响其他功能

149、 发现问题后你是如何判断其是否是BUG,你是如何提交的、

150、 修复一个BUG而导致其他的BUG出现,该如何处理

151、 缺陷处理流程

152、 缺陷报告包括那些项

153、 介绍一下整体项目流程

154、 在实际项目中你是如何做测试计划

155、 你是如何制定测试过程中的时间进度表的

156、 测试计划都包括那些项

157、 bug有哪些等级?

158、 说说你对软件配置管理的理解。

159、 根据你的经验说说你对软件测试/质量保证的理解?

160、 QA和QC的区别是什么?

161、 软件测试的目的是什么?

162、 如何定义所提交bug的严重等级和优先等级的?

163、 Web和APP测试的异同有哪些?

164、 怎么理解回归测试?是否思考过如何减少回归测试工作量?

165、 一条软件缺陷(或BUG)包括哪些内容?请完整列出

166、 软件测试方法有哪些分类?

167、 设计测试用例的主要方法有哪些?

168、 单元测试、集成测试、系统测试的侧重点是什么?

169、 怎样才能成为一个优秀的测试工程师

170、 测试计划要安排哪些方面?

171、 为什么要有测试报告?一份日常的测试报告通常需要说明哪些内容?

172、 在您参与或负责的项目测试中,发生过哪些棘手的问题,最后是如何解决的?您在这个过程中做了什么?

173、 在测试工作中,您常使用的测试方法有哪些?它们都是在什么场景下使用的?

174、 什么是测试用例,设计测试用例时,您常用的设计方法有哪些?应如何设计才能保证测试用例的覆盖率?

175、 黑盒测试主要是为了发现那几类错误?

176、 测试工作的流程?缺陷状态有什么?设计测试用例有几种方法?

1.2 需求分析

  1. 需求人员需要何时参加需求分析?
  2. 如果需求一直在变化怎么办?

1.3 测试模型

  1. 常见测试模型有哪些?
  2. 请根据”V”模型分别概述测试人员在软件的需求定义阶段、设计阶段、编码阶段、系统集成阶段的工作任务及其相应生成的文档?
  3. W 模型的描述?
  4. 画出软件测试的V模型图。

1.4 测试计划

  1. 测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要
  2. 测试计划编写的六要素?
  3. 项目版本执行过程中,测试人员如何把控测试进度?
  4. 制定测试计划之前需要了解什么问题?
  5. 测试计划都包括哪些项?
  6. 怎样做好测试计划?
  7. 什么是测试资源
  8. 测试有哪些风险和问题

1.5 测试策略

  1. 什么是“测试策略”?
  2. 测试策略包括哪些?
  3. 系统测试的策略有哪些?

1.6 测试类型

  1. 请列出你所知道的软件测试种类,至少 5 项?
  2. 黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系?
  3. 黑盒测试和白盒测试常用的测试方法有哪些,举个例子?
  4. 简述黑盒测试和白盒测试的优缺点?
  5. 在没有产品说明书和需求文档的情况下能够进行黑盒测试的设计吗?
  6. 单元测试的策略有哪些,主要内容有哪些?
  7. 简述集成测试的过程
  8. 集成测试进入的准则?退出的准则?
  9. 集成测试通常都有那些策略?

10、 设计系统测试计划需要参考哪些项目文挡?

11、 系统测试计划是否需要同行审批,为什么

12、 Alpha 测试与 beta 的区别

13、 系统测试阶段低级缺陷较多 怎么办?

14、 系统测试的进入和退出准则?

15、 系统测试阶段低级缺陷较多怎么办?

16、 系统测试包含哪些方面?

17、 什么是验收测试?

18、 软件验收测试具体包括哪些测试?

19、 .什么是功能测试?

20、 2请问功能测试和性能测试的区别是什么?(只总结了两个方面,有其他的自己补充)

21、 兼容性测试

22、 什么是易用性测试?

23、 什么是文档测试

24、 怎么做好文档测试

25、 文档测试要注意什么?

26、 什么是安全测试?

27、 什么时候适用自动化测试?

28、 什么时候不宜使用自动化的情况

29、 什么是性能测试?

30、 您在从事性能测试工作时,是否使用过一些测试工具?如果有,请试述该工具的工作原 理,并以一个具体的工作中的例子描述该工具是如何在实际工作中应用的。

31、 您认为性能测试工作的目的是什么?做好性能测试工作的关键是什么?

32、 性能测试什么时候开始最合适

33、 并发性能测试的目的主要体现在三个方面?

1.7 测试流程

  1. 软件测试的基本流程有哪些?
  2. 测试结束的标准是什么?
  3. 软件测试的原则是什么?

1.8 用例设计

  1. 什么是测试用例,测试用例的基本要素?
  2. 怎样写测试用例
  3. 描述测试用例设计的完整过程?
  4. 好的测试用例有哪些特点?
  5. 测试用例制定的原则?
  6. 测试用例是否纳入测试基线管理?测试用例发生变更的流程?测试用例如何进行标识?
  7. 什么时候编写测试用例?依据是什么?如何保证测试用例与需求的一致性?需要同行评审吗?
  8. 测试用例如何设计的?
  9. 如何保证用例覆盖到罕见缺陷?

10、 什么时候编写测试用例?依据是什么?如何保证测试用例与需求的一致性?需要同行评审吗?

11、 写测试用例时要注意什么问题

12、 如何在有限的情况下提高测试效率,保证产品的上线质量?

13、 如何降低漏测率

14、 测试用例的基本设计方法

15、 测试为什么要写测试用例

1.9 缺陷bug

  1. 什么是缺陷报告,缺陷报告的作用,缺陷报告的要点
  2. 缺陷报告的优先级别
  3. 简单概述缺陷报告
  4. 缺陷报告包括哪些项?
  5. 软件测试缺陷报告的 5C 原则
  6. 软件缺陷的生命周期?
  7. 缺陷描述(报告单)中应该包括哪些内容?
  8. 如何提高缺陷的记录质量?
  9. 如果一个缺陷被提交后,开发人员认为不是问题,怎么处理?

10、 软件缺陷的原则

11、 软件缺陷的特征。

12、 软件缺陷产生的原因

13、 什么是 Bug?

14、 缺陷处理流程

15、 缺陷的等级划分

16、 开发人员修复缺陷后,如何保证不影响其他功能?

17、 状态为已修改的缺陷,实际没有修改怎么办?

18、 生产软件的最终目的是为了满足客户需求,我们以客户需求作为评判软件质量的标准,认为软件缺陷( Software Bug )的具体含义包括哪些几个因素?

19、 如何进行缺陷评估

1.10 测试案例

  1. 给你一个网站,你应该如何测试?
  2. 一个有广告的纸杯子,请设计测试用例?
  3. 一个身份证号码输入框,怎么设计用例?
  4. 登录功能怎么设计测试用例?
  5. 移动端和 web 端测试有什么区别
  6. 测试一个 C/S 客户端时,需要考虑的因素
  7. 测试电梯,请详细描述
  8. 对一只圆珠笔进行测试
  9. 游戏测试与软件测试的区别

10、 想象一个登录框,包括ID、密码、登录、取消,记住密码(复选框),尽可能的写出你想到的测试点?

11、 针对添加购物车这个测试点说一下你要怎么测试“添加购物车”

12、 网上银行转账是怎么测的,设计一下测试用例。

 

2 Linux 基础

  1. 说出10个以上的Linux命令
  2. 在RedHat中,从root用户切到userl用户,一般用什么命令?
  3. Linux中,一般怎么隐藏文件?
  4. 在Linux系统中,一个文件的访问权限是755,其含义是什么?
  5. 如何查看 CPU 信息?
  6. 查看占用 CPU 使用率最高的进程?
  7. 如何查看一个文件的末尾 50 行?
  8. 如何过滤文件内容中包含”ERROR“的行?
  9. 查看某端口号?

10、 查看某进程号?

11、 grep 和find 的区别?grep 都有哪些用法?

12、 查看IP 地址?

13、 创建和删除一个多级目录?

14、 在当前用户家目录中查找 haha.txt 文件?

15、 如何查询出 tomcat 的进程并杀掉这个进程,写出 linux 命令?

16、 动态查看日志文件?

17、 查看系统硬盘空间的命令?

18、 查看当前机器 listen 的所有端口?

19、 把一个文件夹打包压缩成.tar.gz 的命令,以及解压拆包.tar.gz 的命令?

20、 Xshell 工具如果想要实现从服务器上传或者下载文件的话,可以在服务器上安装什么包?

21、 以/etc/passwd 的前五行内容为例,提取用户名?

22、 在 linux 中 find 和grep 的区别?

23、 linux查看文件用什么命令,查看进程用什么命令

24、 查看日志常用什么命令,主要查看什么内容

3 MySQL基础

 

  1. 什么是数据库?
  2. 什么是关系型数据库,主键,外键,索引分别是什么?
  3. 写出表的增删改查SQL语法
  4. SQL的表连接方式有哪些?
  5. 表的连接查询方式有哪些,有什么区别?
  6. 什么三范式?
  7. SQL 的 select 语句完整的执行顺序?
  8. 说一下 Mysql 数据库存储的原理?
  9. 事务的特性?

10、 简述什么是存储过程和触发器?

11、 什么是数据库索引?

12、 数据库怎么优化查询效率?

13、 你用的 Mysql 是哪个引擎,各引擎之间有什么区别?

14、 如何对查询命令进行优化?

15、 数据库的优化?

16、 Sql 注入是如何产生的,如何防止?

17、 NoSQL 和关系数据库的区别?

18、 MySQL 与 MongoDB 本质之间最基本的差别是什么

19、 Mysql 数据库中怎么实现分页?

20、 Mysql 数据库的操作?

21、 优化数据库?提高数据库的性能?

22、 什么是数据的完整性?

23、 存储过程和函数的区别?

24、 怎么进行SQL的查询优化?

25、 索引的作用,聚集索引与非聚集索引的区别

4 Web测试

 

  1. 描述用浏览器访问http://www.baidu.com的过程
  2. 以京东首页为例,设计用例框架。(注意框架设计逻辑,区域划分,专项测试等,不需要详细用例,需要查看 PC 可直接和辨识管提要求)
  3. 如何测试购买下单和退货流程
  4. 什么是sql 注入,什么是跨站脚本,什么是跨站请求伪造?
  5. 给你一个网站怎么开展测试?
  6. 电商支付模块的测试如何展开?
  7. 如何开展兼容性测试?
  8. nginx,tomcat,apache 都是什么?
  9. apache 和 nginx 的区别?
  10. 0 Selenium 有哪些定位元素方法

5 接口测试

  1. 什么是接口
  2. 如果模块请求 http 改为了https,测试方案应该如何制定,修改?
  3. 常用 HTTP 协议调试代理工具有什么?详细说明抓取 HTTPS 协议的设置过程?
  4. 描述 TCP/IP 协议的层次结构,以及每一层中重要协议
  5. jmeter,一个接口的响应结果如下:
  6. 接口产生的垃圾数据如何清理
  7. 依赖第三方的接口如何处理
  8. 测试的数据你放在哪?
  9. 什么是数据驱动,如何参数化?

10、 下个接口请求参数依赖上个接口的返回数据

11、 依赖于登录的接口如何处理

12、 接口测试的步骤有哪些?

13、 接口测试中依赖登录状态的接口如何测试?

14、 依赖于第三方数据的接口如何进行测试?

15、 解释什么是SOAP?

16、 解释什么是REST API?

17、 API测试发现的Bug类型是什么?

18、 我们测试的接口属于哪一类?

19、 Cookie 保存在哪里?

20、 HTTP有哪些请求方法?

21、 接口自动化测试的流程?

22、 接口测试用例的编写要点有哪些?

23、 提到UI级别测试和API测试之间的关键区别?

24、 HTTPS的工作原理

25、 HTTPS有哪些优点?

26、 HTTPS的缺点

27、 HTTPS和HTTP的区别主要如下:

28、 POST和GET有什么区别?

29、 Session与Cookie有什么区别?

30、 TCP和UDP有什么区别

31、 什么是TCP/IP?

32、 在API测试中测试的常用协议是什么?

33、 cookie有什么作用?

34、 Cookie测试的测试点

35、 cookie的缺点

36、 cookie与session的区别

6 App 测试

  1. 什么是Android四大组件?
  2. 当点击 APP 图标启动程序,说明将要发生那些过程?
  3. APP 测试的内容主要包括哪些,如何开展?
  4. Android 的兼容性测试都考虑哪些内容?
  5. 针对 App 的安装功能,写出测试点?
  6. 常用的 ADB 命令?
  7. 在查看 logcat 命令日志时候怎么内容保存到本地文件?
  8. App 崩溃(闪退),可能是什么原因导致的?
  9. 如何测试监测 app 的内存使用、CPU 消耗、流量使用情况?

10、 弱网测试怎么测

11、 “//*[contains(@text,”登录”)]”是什么意思

12、 Appium 都有哪些启动方式

7 管理工具

  1. 简述常用的 Bug 管理或者用例管理工具,并且描述其中一个工作流程?
  2. 禅道和 qc 的区别?

8 Python 基础

 

8.1 Python基础

  1. 斐波那契数列求 N?
  2. 字符串反序输出?
  3. 判断回文?
  4. 统计python 源代码文件中代码行数,去除注释,空行,进行输出?
  5. python 调用cmd 并返回结果?
  6. 冒泡排序
  7. 1,2,3,4 这 4 个数字,能组成多少个互不相同的且无重复的三位数,都是多少?
  8. 4.给定一个整数 N,和一个 0-9 的数 K,要求返回 0-N 中数字 K 出现的次数
  9. 请用 python 打印出 10000 以内的对称数(对称数特点:数字左右对称,如:1,2,11,121,1221 等)

10、 判断 101-200 之间有多少个素数,并输出所有的素数

11、 一个输入三角形的函数,输入后输出是否能组成三角形,三角形类型,请用等价类划分法设计测试用例

8.2 输入与输出

  1. 代码中要修改不可变数据会出现什么问题? 抛出什么异常?
  2. print 调用 Python 中底层的什么方法?
  3. 简述你对 input()函数的理解?
  4. python 两层列表怎么提取第二层的元素

8.3 条件与循环

  1. 阅读下面的代码,写出 A0,A1 至 An 的最终值?
  2. range 和 xrange 的区别?
  3. 考虑以下 Python 代码,如果运行结束,命令行中的运行结果是什么?
  4. 在考虑以下代码,运行结束后的结果是什么?

8.4 字典

  1. 什么是字典
  2. 现有字典 d=‘a’:24,‘g’:52,‘i’:12,‘k’:33请按字典中的 value 值进行排序?
  3. 说一下字典和 json 的区别?
  4. 什么是可变、不可变类型?
  5. 存入字典里的数据有没有先后排序?
  6. 字典推导式?
  7. 现有字典 d=‘a’:24,’g’:52,’l’:12,’k’:33请按字 典中的 value 值进行排序?

8.5 字符串

  1. 什么是Python字符串
  2. 如何理解 Python 中字符串中的\\字符?
  3. 请反转字符串“aStr”?
  4. 请按 alist 中元素的 age 由大到小排序

8.6 列表

  1. 什么是Python中的list
  2. 列表增加
  3. 取值和修改取值:列表名[index] :根据下标来取值。
  4. 删除 del 列表名[index]:删除指定索引的数据。
  5. 列表名.remove(数据):删除第一个出现的指定数据。
  6. 列表名.pop():删除末尾的数据,返回值: 返回被删除的元素。
  7. 列表名.pop(index):删除指定索引的数据,返回被删除的元素。
  8. 列表名.clear():清空整个列表的元素。
  9. 排序列表名.sort():升序排序 从小到大。

10、 列表名.sort(reverse=True):降序排序 从大到小。

11、 列表名.reverse():列表逆序、反转。

12、 len(列表名):得到列表的长度。

13、 列表名.count(数据):数据在列表中出现的次数。

14、 列表名.index(数据):数据在列表中首次出现时的索引,没有查到会报错。

15、 if 数据 in 列表: 判断列表中是否包含某元素。

16、 循环遍历

17、 写一个列表生成式,产生一个公差为 11 的等差数列

18、 给定两个列表,怎么找出他们相同的元素和不同的元素?

19、 请写出一段 Python 代码实现删除一个 list 里面的重复元素?

20、 给定两个 list A ,B,请用找出 A ,B 中相同的元素,A ,B 中不同的元素

8.8 集合

  1. 什么是集合
  2. 快速去除列表中的重复元素
  3. 交集:共有的部分
  4. 并集:总共的部分
  5. 差集:另一个集合中没有的部分
  6. 对称差集(在 a 或 b 中,但不会同时出现在二者中)

8.9 文件操作

  1. 4G 内存怎么读取一个 5G 的数据?(2018-3-30-lxy)
  2. 现在要处理一个大小为 10G 的文件,但是内存只有 4G,如果在只修改 get_lines 函数而其他代码保持不变的情况下,应该如何实现?需要考虑的问题都有哪些?
  3. read、readline 和 readlines 的区别?

8.10 函数

  1. Python 函数调用的时候参数的传递方式是值传递还是引用传递?
  2. 对缺省参数的理解 ?
  3. 为什么函数名字可以当做参数用?
  4. Python 中 pass 语句的作用是什么?

8.11 内建函数

  1. map 函数和 reduce 函数?
  2. 递归函数停止的条件?
  3. 回调函数,如何通信的?
  4. Python 主要的内置数据类型都有哪些? print dir( ‘a ’) 的输出?
  5. print(list(map(lambda x: x * x, [y for y in range(3)])))的输出?

8.12 Lambda

  1. 什么是 lambda 函数? 有什么好处?
  2. 什么是 lambda 函数?它有什么好处?写一个匿名函数求两个数的和?

8.13 面向对象

  1. 结构化程序设计和面向对象程序设计各自的特点及优缺点是什么?
  2. Python 中的可变对象和不可变对象?
  3. Python 中is 和==的区别?
  4. Python 的魔法方法?
  5. 面向对象中怎么实现只读属性?
  6. 谈谈你对面向对象的理解?

8.14 正则表达式

  1. Python 里 match 与 search 的 区 别 ?
  2. Python 字符串查找和替换?
  3. 用 Python 匹 配 HTML g tag 的 时 候 ,<.> 和 <.?> 有 什 么 区别?
  4. 请写出下列正则关键字的含义?

8.15 异常

  1. 在 except 中 return 后还会不会执行 finally 中的代码?怎么抛出自定义异常?
  2. 介绍一下 except 的作用和用法?

8.16 模块和包

  1. 常用的 Python 标准库都有哪些?
  2. 赋值、浅拷贝和深拷贝的区别?
  3. init 和 new 的区别?
  4. Python 里面如何生成随机数?
  5. 输入某年某月某日, 判断这一天是这一年的第几天?( 可以用Python 标准库)
  6. 打乱一个排好序的 list 对象 alist?
  7. 说明一下 os.path 和 sys.path 分别代表什么?
  8. Python 中的 os 模块常见方法?
  9. Python 的 sys 模块常用方法?

10、模块和包是什么

8.17 Python特性

  1. Python 是强语言类型还是弱语言类型?
  2. 谈一下什么是解释性语言,什么是编译性语言?
  3. Python 中有日志吗?怎么使用?
  4. Python 是如何进行类型转换的?
  5. 工具安装问题
  6. 关于 Python 程序的运行方面,有什么手段能提升性能?
  7. Python 中的作用域?
  8. 什么是 Python?
  9. 什么是 Python 的命名空间?

10、 你所遵循的代码规范是什么?请举例说明其要求?

9 Selenium 相关

  1. 什么是Selenium?
  2. 什么是Selenium Webdriver
  3. S什么是elenium IDE?
  4. 2.常用自动化测试工具机器运行原理,写出一段元素查找的代码?
  5. 如何开展自动化测试框架的构建?
  6. 4.如何设计自动化测试用例:
  7. webdriver 如何开启和退出一个浏览器?
  8. 什么是自动化测试框架?
  9. Selenium是什么,流行的版本有哪些?

10、 你如何从命令行启动Selenium RC?

11、 在我的机器端口4444不是免费的。我怎样才能使用另一个端口?

12、 什么是Selenium Server,它与Selenium Hub有什么不同?

13、 你如何从Selenium连接到数据库?

14、 你如何验证多个页面上存在的一个对象?

15、 XPath中使用单斜杠和双斜杠有什么区别?

16、 如何编写Selenium IDE / RC的用户扩展?

17、 如何在页面加载成功后验证元素的存在?

18、 你对Selenium Grid有什么了解?它提供了什么功能?

19、 如何从你的Java Class启动Selenium服务器?

20、 Selenium中有哪些验证点?

21、 什么是XPath?什么时候应该在Selenium中使用XPath?

22、 什么是Selenium的CSS定位器策略?用例子来解释。

23、 当有很多定位器时,如ID、名称、XPath、CSS定位器,我应该使用哪一个?

24、 在Selenium中处理多个弹出窗口的机制是什么?

25、 你如何处理使用Selenium的Ajax控件?

26、 Selenium Webdriver优于Selenium RC的优点是什么?

27、 “GET”和“NAVIGATE”方法的主要区别是什么?

28、 隐式等待与显式等待有什么不同?

29、 你将如何处理Selenium WebDriver中的警报/弹出窗口?

30、 如何解决IE中的SSL认证问题?

31、 Selenium WebDriver中的可用定位器是什么?

32、 如何处理WebDriver中的AJAX控件?

33、 大致分类和比较TDD/BDD和DDD框架?

34、 什么是数据驱动框架?它与关键字驱动框架有什么不同?

35、 解释使用TestNG而不是JUnit框架的好处?

36、 与@Test注释相关的TestNG参数的目的是什么?

37、 可以使用TestNG运行一组测试用例吗?

38、 WebDriver哪个实现是最快的,为什么?

39、 是否可以在Selenium 2.0中使用Selenium RC API?

40、 可以在Java,Dot Net或Ruby中使用Selenium Grid吗?

10 性能测试

  1. 性能测试有哪些分类
  2. 你认为性能测试的目的是什么?做好性能测试的工作的关键是什么?
  3. 服务端性能分析都从哪些角度来进行?
  4. 如何理解压力测试,负载测试以及性能测试?
  5. 如何判断是否有内存泄漏及关注的指标?
  6. 描述软件产生内存泄露的原因以及检查方式。(可以结合一种开发语言进行描述)
  7. 简述什么是值传递,什么是地址传递,两者区别是什么?
  8. 什么是系统瓶颈?

11 LordRunner相关

  1. 1.LoadRunner 的工作原理是什么?
  2. LoadRunner分哪三部分?
  3. LoadRunner进行测试的流程?
  4. 什么是并发?在lordrunner中,如何进行并发的测试?集合点失败了会怎么样?
  5. LoadRunner 脚本如何录制和编写?
  6. LoadRunner 中的Think Time 有什么作用?
  7. 4.在搜索引擎中输入汉字就可以解析到对应的域名,请问如何用LoadRunner 进行测试?
  8. 5.一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别?
  9. 客户交付一个性能测试项目,请阐述你的实施流程。

10、 解释5个常用的性能指标的名称与具体含义。

11、 写出5个Loadrunner中常用函数,并对其中2个举例说明用法。

12、 简述LoadRunner的工作原理?

13、 什么是集合点?设置集合点有什么意义?LoadRunner中设置集合点的函数是哪个?

14、 HTML-based script与URL-based script的脚本有什么区别?

15、 如何设置LaodRunner才能让集合点只对一半的用户生效?

16、 LoadRunner的Controller组件中Pacing参数的作用是什么?

17、 LoadRunner中如何监控Windows资源?

18、 如果让QALoad模拟LoadRunner中只对关注的性能点进行迭代测试,你有什么好方法?

19、 什么是负载测试?

20、 什么是性能测试?

21、 说明负载测试过程?

22、 我们什么时候做负载和性能测试?

23、 什么是LoadRunner的组件?

24、 你用LoadRunner的哪个组件录制脚本?

25、 在多用户模式下你用LoadRunnner的哪个组件来回放脚本?

26、 在多用户模式下你用LoadRunnner的哪个组件来回放脚本?

27、 什么是场景

28、 解释Web Vuser脚本的录制模式

29、 为什么创建参数?

30、 什么是关联?解释自动关联和手动关联的区别

31、 什么是关联?解释自动关联和手动关联的区别,你在哪里设置自动关联的选项

32、 什么函数可以捕捉到web Vuser脚本的动态值?

33、 什么时候你在虚拟用户产生器中禁用日志,什么时候选择标准日志和扩展日志?

34、 你如何调试LoadRunner的脚本?

35、 你怎么写LR中用户自定义的函数?写几个你以前项目中的函数?

36、 在run-time setting里你可以设置哪些改变?

37、 你在哪里设置Vuser测试时迭代?

38、 你如何在负载下执行功能测试?

39、 什么是Ramp up?你如何设置?

40、 Vuser作为线程运行的优势是什么?

41、 如果你想停止执行出错的脚本,怎么做?

42、 响应时间和吞吐量间的关系是什么?

43、 你如何识别性能瓶颈?

44、 如果web服务器、数据库服务器、网络都一切正常,那么哪里可能有问题?

45、 你如何找出web服务器相关的问题?

46、 你是怎么找到数据库中的相关问题?

47、 覆盖图和关联图之间的区别是什么?

48、 你是怎么计划负载的?标准是什么?

49、 vuser_init动作包含什么?

50、 vuser_end动作包含什么?

51、 什么是Think Time?你如何改变这个阈值?

52、 简述使用Loadrunner的步骤

53、 什么是集合点?设置集合点有什么意义?Loadrunner中设置集合点的函数是哪个?

54、 你如何在负载测试模式下执行功能测试?

55、 什么是逐步递增?你如何来设置?

56、 响应时间和吞吐量之间的关系是什么?

57、 说明一下如何在LR中配置系统计数器?

58、 在LoadRunner中为什么要设置思考时间和pacing

59、 如何理解TPS?

60、 loadrunner中的设置线程和进程的区别

61、 HTML-Based scrīpt 和URL-Based scrīpt 录制的区别?

62、 本次通过loadRunner录制SQL Server介绍一下如何测试一个sql语句或存储过程的执行性能。

63、 LoadRunner如何创建脚本?

64、 LoadRunner如何设置Recording Options 选项?(以单协议http/html为例)

65、 LoadRunner如何选择协议?

66、 Loadrunner支持哪些常用协议?

67、 性能测试的类型都有哪些?

68、 Loadrunner常用的分析点都有哪些?

69、 并发用户数是什么?跟在线用户数什么关系?

70、 LoadRunner请求无法找到如何解决?

71、 LoadRunner HTTP服务器状态代码都有哪些?如何解决?

72、 HTTP的超时有哪三种?

73、 在什么地方设置HTTP页面filter?

74、 如何设置可以让一个虚拟IP对应到一个Vuser?

75、 ≈什么是contentcheck?如何来用?

76、 network中的speed simulation是模拟的什么带宽?

77、 生成WEB性能图有什么意义?大概描述即可。

78、 WAN emulation是模拟什么的?

79、 树视图和脚本视图各有什么优点?

80、 LR中的API分为几类?

12 计算机网络

 

  1. 什么是局域网和广域网
  2. DNS是什么,它是如何工作的?
  3. 描述TCP/IP协议的层次结构,以及每一层中重要协议。
  4. 请简述 ip 地址,网关,子网掩码的含义.
  5. 简述子网掩码的用途。
  6. 一台计算机的 IP 是 192.168.10.71 子网掩码 255.255.255.64 与 192.168.10.201 是同一局域网吗?
  7. 请简述DNS、活动目录、域的概念。
  8. 10M 兆宽带是什么意思?理论下载速度是多少?
  9. 什么是IP 地址?

10、 OSI 七层网络模型的划分?

11、 TCP 和 UDP 有什么不同?

12、 HTTP 属于哪一层的协议?

13、 HTTP 和 HTTPS 的区别?

14、 cookies 和session 的区别?

15、 HTTP 的get 请求和post 请求的区别?

16、 HTTP1.0 和 HTTP1.1 有什么区别

17、 TCP 的连接建立过程,以及断开过程?

18、 客户端使用 DHCP 获取IP 的过程?

19、 写出某个网段的网络地址和广播地址?

20、 什么是 VPN 都有什么类型?

21、 B/S 和 C/S 的区别

22、 21、TCP/UDP有哪些区别?

23、 22、ISO模型?HUB、tch、Router是ISO的第几层设备?

24、 线程和进程的区别

25、 常用的响应码

26、 手工修改 Tomcat 端口,在那个文件里?

13 组成原理

  1. 计算机基本组成
  2. 一条指令在CPU 的执行过程
  3. 3.计算机的逻辑部件
  4. 说出4种以上常用的操作系统及其主要的应用范围(微软的操作系统除外)。
  5. Windows操作系统中PATH环境变量的作用是什么?
  6. 目前流行的操作的系统有哪些?请举例说明安装操作系统的注意事项?

14 数据结构与算法

  1. 冒泡排序
  2. 插入排序
  3. 希尔排序
  4. 直接选择排序
  5. 堆排序
  6. 归并排序
  7. 基数排序

15 逻辑题

 

  1. 烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?
  2. 你有一桶果冻,其中有黄色、绿色、红色三种,闭上眼睛抓取同种颜色的两个。抓取多少个就可以确定你肯定有两个同一颜色的果冻?
  3. 如果你有无穷多的水,一个3公升的提捅,一个5公升的提捅,两只提捅形状上下都不均匀,问你如何才能准确称出4公升的水?
  4. 一个岔路口分别通向诚实国和说谎国。来了两个人,已知一个是诚实国的,另一个是说谎国的。诚实国永远说实话,说谎国永远说谎话。现在你要去说谎国,但不知道应该走哪条路,需要问这两个人。请问应该怎么问?
  5. 12个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球呢?(注意此题并未说明那个球的重量是轻是重,所以需要仔细考虑)
  6. 在一天的24小时之中,时钟的时针、分针和秒针完全重合在一起的时候有几次?都分别是什么时间?你怎样算出来的?
  7. 已知:每个飞机只有一个油箱,飞机之间可以相互加油(注意是相互,没有加油机)一箱油可供一架飞机绕地球飞半圈,问题:为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?(所有飞机从同一机场起飞,而且必须安全返回机场,不允许中途降落,中间没有飞机场)
  8. 一间囚房里面关押着两个犯人。每天监狱都会为这间囚房提供一罐汤,让这两个犯人自己分。起初,这两个人经常会发生争执,因为他们总是有人认为对方的汤比自己的多。后来他们找到了一个两全其美的办法:一个人分汤,让另一个人先选。于是争端就这么解决了。可是,现在这间囚房里又加进来一个新犯人,现在是三个人来分汤。必须寻找一个新的方法来维持他们之间的和平。该怎么办呢?按:心理问题,不是逻辑问题
  9. 一张长方形的桌面上放n个一样大小的圆形硬币。这些硬币中可能有一些不完全在桌面内,也可能有一些彼此重叠;当再多放一个硬币而它的圆心在桌面内时,新放的硬币便必定与原先某些硬币重叠。请证明整个桌面可以用4n个硬币完全覆盖。

10、 有五间房屋排成一列 所有房屋的外表颜色都不一样 所有的屋主来自不同的国家 所有的屋主都养不同的宠物;喝不同的饮料;抽不同的香烟 提示:

11、 如果29只青蛙在29分钟里捕捉到了29只苍蝇,那么,要在87分钟内捉到87只苍蝇,需要多少只青蛙才行?

12、 一个人花8块钱买了一只鸡,9块钱卖掉了。然后他觉得不划算,花10块钱又买回来了,11块钱卖给了另外一个人,请问他赚了多少钱?

13、 A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些人参加了竞赛?

14、 一天张三的店里来了一位顾客,挑了25元的货。顾客拿出100元,张三没零钱找不开,就到隔壁店里把这100元换成零钱,回来给顾客找了75元的零钱。过一会,李四回来找张三,说刚才的钱是假钱,张三马上给李四换了真钱,请问张三赔了多少?

15、 如果20分钟前离上午9点钟的分数钟,等于现在离上午12点的分钟数的3倍,那么现在离上午12点还有多少分钟?)

16 人力资源

 

  1. 你的测试职业发展是什么?你自认为做测试的优势在哪里?
  2. 你找工作时,最重要的考虑因素为何?
  3. 为什么我们应该录取你?
  4. 请谈谈你个人的最大特色。
  5. 一个测试工程师应具备那些素质和技能?
  6. 还有问一下你是怎样保证软件质量的,也就是说你觉得怎样才能最大限度地保证软件质量?
  7. 为什么选择测试这行?
  8. 为什么值得他们公司雇用?
  9. 如果我雇用你,你能给部门带来什么贡献?

10、 如何从工作中看出你是个自动自觉的人

11、 你的工作通常能在时限内完成吗.(我想问一下就是她问这个问题的动机是什么)

12、 通常你对于别人批评你会有什么样的反应

13、 如果明知这样做不对,你还会依主管的指过去做吗?

14、 你在五年内的个人目标和职业目标分别是什么?

15、 你怎样做出自己的职业选择?

16、 离职时候工资多少?

17 其他

  1. 好的测试工程师应具备的素质?
  2. 软件测试给你带来什么样的快乐?
  3. 为什么要在一个团队中开展测试工作?
  4. 你在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?
  5. 请介绍一下你的项目
  6. 测试过程中,遇到阻塞时,该如何推进?
  7. 你们以前测试的流程是怎样的?
  8. 为什么选择测试这行?
  9. 如果时间不够,无法进行充分的测试怎么办?

10、 你是否了解以往所工作的企业的软件测试过程?如果了解,请试述在这个过程中都有哪些工作要做?分别由哪些不同的角色来完成这些工作?

11、 你所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试……)

12、 你自认为测试的优势在哪里?

13、 你在测试中发现了一个 bug,但是开发经理认为这不是一个 bug。你应该怎么做?

14、 你是如何制定时间进度表的?

15、 介绍一下整体项目流程

16、 你是如何制定测试过程中的时间进度表的?

17、 测试工作进行到一半时,发现时间不够,你是如何处理的?

18、 怎样保证你所负责的模块通过了测试?

19、 软件测试人员和测试组长的职责分工

20、 如果你是测试组长你是如何对项目及组员进行管理的?

21、 什么时候开始搭建测试环境?由谁搭建?如何进行产品的集成?

22、 你所做的项目中采用了哪些测试方法?进行回归测试吗?

23、 上级如何检查你的工作?

24、 QA 是如何检查你的工作的?

25、 在你所做的项目中有需要测试的项目过程吗?有,请介绍。

26、 怎样保障你所负责的模块通过了测试?

27、 你是如何了解到你说项目中的成员?

28、 是否成立了独立的测试组?测试人员在项目中测试的职责?

29、 测试结果分析如何?如何产生和被记录?

30、 认为软件测试过程中较常见的困难是什么?如何有效克服这些困难?(根据自己实际测试中遇到的情况来写的)

31、 在实际项目中你是如何做测试计划?

32、 你什么时候开始制定测试计划?是否发生过变更?如何进行变更?

33、 你所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。

34、 你认为做好测试用例设计工作的关键是什么?

35、 在你以往的工作中,一条软件缺陷(或者叫 Bug)记录都包括哪些内容?如何提交高质量的软件缺陷(Bug)记录?

36、 你在五年内的个人目标和职业目标分别是什么?

37、 怎样做出自己的职业选择?

38、 离职原因

39、 面试官一般会问,您还有什么想问的吗?

完整版留言



 

以上是关于计算机网络八股文的主要内容,如果未能解决你的问题,请参考以下文章

三天吃透计算机网络面试八股文

10道网络八股文,每道都很经典,让你在面试中逼格满满

八股文——计算机网络

计算机网络八股文

《面试八股文》之网络19卷

神经网络优化 - 搭建神经网络八股