一、自我介绍环节
1.介绍自己的基本情况
2.介绍自己的优势,对于这个岗位的契合度
(基于岗位职责,但是又要高于岗位职责去回复)
3.示例:
面试官好,我是XXX,是XX大学,计算机科学与技术专业毕业的。应聘的是软件测试工程师这一岗位。
我有过一定的软件测试经验,熟悉软件测试流程,可以单独的编写测试用例,测试报告等文档。可以熟练地使用禅道管理工具提交bug和跟踪管理bug,可以用FIddler抓包并且分析bug定位前后端问题,还可以用Fiddler模拟搭建测试环境,另外还使用Jmeter做过接口和性能测试。
我的介绍完毕,谢谢。
初级测试,这些就够了一般6到10K,具体多少看你掌握的深度,现在不会自动化,基本不会超过10K。
根据性能测试和接口测试的掌握深度,决定你的工资,功能测试就不用说了,最基本的,只会功能测试一般不会超过6K
二、面试官提问环节
2.1为什么从开发转到了测试?
示例:
首先是我个人觉得我更适合,并且喜欢做测试这一岗位。
其次是开发现在比较饱和,现在缺的是经验丰富的高级开发人员,我才毕业,经验相对少一些,竞争力就弱了不少,所以转行了。
2.2上一份工作为什么离职?
示例:
在上一家公司做的测试,主要是功能测试,性能测试和接口测试的要求相对较低,自动化测试很少涉及,所以呢我希望能够来到更大的平台来发挥自己的作用,并且不断发掘自己的潜力。
别说实话,编就完了,大家都懂为啥,但是你要让大家面子上过得去,
2.3专业知识提问
(1)说一下你理解的七层网络模型?
答:
应用层: 网络服务与最终用户的一个接口。协议有:HTTP FTP TFTP DNS协议等
表示层: 数据的表示、安全、压缩的格式;
会话层: 建立、管理、终止会话。对应主机进程,指本地主机与远程主机正在进行的会话
传输层: 定义传输数据的协议端口号,以及流控和差错校验。协议有:TCP UDP协议。
网络层: 进行逻辑地址寻址,实现不同网络之间的路径选择。协议有:ICMP IP(IPV4 IPV6)
数据链路层: 建立逻辑连接、进行硬件地址寻址功能。**将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。
物理层: 建立、维护、断开物理连接。
(2) TCP协议的三次握手过程?为什么要握三次手?
答:
①
TCP协议要建立连接的时候,需要经历三次握手的过程:
第一次握手:是客户端向服务器发起的,用来申请建立连接的,这个报文中的SYN标志位标记为1,所以我们也叫作SYN包;
第二次握手:是服务器回复客户端的,用来确认并接受连接请求的,这个报文中的SYN位和ACK位都标记为1,所以叫做SYN-ACK报文;
第三次握手:仍然是客户端发给服务器的,用来确认服务器的回复消息,这个报文中的ACK标志位标记为1,所以我们也叫作ACK包。
这就是TCP协议的三次握手过程。
②
建立可靠的通信连接,避免资源浪费。
(3)TCP协议的4次挥手是什么?
答:
TCP协议完成了数据发送之后,就会断开连接,此时就需要经历四次挥手的过程:
第一次挥手:是客户端向服务器发起的,用来申请断开连接的,这个报文中的FIN标志位标记为1,所以我们也叫作FIN包;
第二次挥手:是服务器回复客户端的,用来确认客户端的上一个断开连接请求的,所以是一个ACK报文;
第三次挥手:仍然是服务器发给客户端的,用来告知客户端服务器的数据发送完毕了,需要断开连接;这个报文中的FIN标志位标记为1,所以也是一个FIN包。
第四次挥手:是客户端回复服务器的,确认服务器的上一个断开连接请求,所以也是一个ACK报文;
这就是TCP协议的四次挥手过程。
(4) 为什么握手需要三次,挥手却需要四次呢?
答:
三次握手是TCP协议建立连接的过程,建立连接,我只需要确认一下你在我也在就好了啊,三次握手够了;
但是四次挥手是TCP协议是为了断开连接的,所以需要确保我既结束发送数据,也结束接收数据;开始客户端先结束发送并告知服务器,服务器确认后就结束接收了;这两次挥手完成后,客户端还在接收数据哦,服务器也还在发送;所以需要服务器也发送一次FIN包,告知我也结束数据发送了,客户端确认后,才双方都关闭发送和接收数据通道,所以必须要四次。
(5)TCP和UDP的区别?
答:
TCP协议和UDP协议都是传输层的两个协议: 它们的区别主要有如下3个方面:
第一:TCP是面向连接,就像打电话要先拨号建立连接一样,而UDP是无连接的,即发送数据之前不需要建立连接。
第二:TCP可以提供可靠的服务,能保证数据传输无差错,不丢失,不重复,且按序到达;而UDP协议只是尽最大努力交付,即不保证可靠交付。
第三:因为TCP以上两个特点,所以对应传输效率相对较低,而UDP效率高,所以一些注重速度而不在乎的丢包的场景,会选择用UDP协议,比如IP电话,流媒体等。
TCP面向连接、可靠、传输速率低
UDP无连接、不可靠、传输速率高
(6)HTTP和HTTPS的区别?
答:
从安全性来说:HTTP传输的数据都是明文,不安全;而HTTPS在HTTP上加入了SSL/TLS协议,使用非对称加密技术加密传输数据,更加安全。
从端口来看:HTTP默认端口80,HTTPS默认端口443
灵活性上:HTTP简单快速,使用灵活;HTTPS技术门槛较高,多数个人或私人网站难以支撑。
访问速度:HTTP协议简单,HTTP服务器的程序规模小,因而通信速度很快;HTTPS加重了服务端负担,需要更多的资源来支撑,降低了用户的访问速度
经济适用度:HTTP没有额外的费用要求,HTTPS协议CA机构颁发的证书都是需年费的,此外对接HTTPS协议也需要额外的技术支持。
(7)你了解HTTP协议有哪些响应状态码?
1xx(信息性状态码):表示接收到请求并正在继续处理。
100 (Continue):服务器已经接收到请求头,并且客户端可以继续发送请求体。
101 (Switching Protocols):客户端需要切换协议(如websocket)以完成请求。
2xx(成功状态码):表示请求已成功处理。
200 (OK):服务器已成功处理请求。
201 (Created):请求已经被成功处理,并且服务器创建了新的资源。
204 (No Content):请求已成功处理,但是没有返回任何内容。
3xx(重定向状态码):表示需要进一步操作来完成请求。
301 (Moved Permanently):请求的资源已经永久移动到新位置。
302 (Found):请求的资源已经临时移动到新位置。
304 (Not Modified):客户端通过发送条件式请求访问资源,服务器告诉客户端资源未被修改而不需要重新获取。
4xx(客户端错误状态码):表示请求存在语法错误或无法完成请求。
400 (Bad Request):服务器无法理解请求的语法。
401 (Unauthorized):请求未经授权。
403 (Forbidden):服务器拒绝请求。
404 (Not Found):服务器无法找到请求的资源。
5xx(服务器错误状态码):表示服务器在处理请求时发生内部错误。
500 (Internal Server Error):服务器遇到了意料不到的情况,无法完成客户端的请求。
503 (Service Unavailable):服务器暂时无法处理请求,可能是由于维护或过载等原因。
(8)HTTPS协议比HTTP安全,是如何实现的呢?
答:
其安全性主要通过以下几个方面的实现:
加密通信:HTTPS使用SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议,在TCP/IP连接上建立了一个加密隧道。所有在这个隧道中传输的数据都经过加密,使得第三方无法窃听和篡改数据。
身份验证:HTTPS使用数字证书对服务器进行身份验证,确保客户端与服务器之间的通信是安全且可信的。数字证书由可信机构颁发,包含了公钥和相关的认证信息。
完整性保护:HTTPS使用消息摘要算法(如MD5、SHA等)对数据进行摘要计算,并将结果附加到传输的数据中,以确保数据在传输过程中未发生任何篡改。接收方会验证摘要的一致性。
安全性指标:HTTPS提供了更多的安全性指标,如密钥长度、握手过程中的加密算法选择等,以确保通信的安全性和可靠性。
总结来说,HTTPS通过加密通信、身份验证、完整性保护和安全性指标等手段,提供了更高层次的数据传输安全保障。这些机制共同作用下,使得HTTPS协议比HTTP更加安全可靠,适用于敏感数据的传输,如密码、个人信息等。
(9)当一个用户在浏览器输入URL打开一个网页的时候,从输入到加载完整个过程经历了什么?
答:
会进行URL解析;
DNS的域名解析;
建立TCP连接;
发送一个HTTP的请求;
服务器处理相关的请求并返回处理后的结果;
关闭TCP连接;
浏览器接收到服务器给到的html代码,开始解析;
浏览器将解析后的资源(如js、css、图片等)进行请求,并对页面进行渲染呈现给用户。
URL(Uniform Resource Locator)是统一资源定位符的缩写,用于标识和定位互联网上的资源,如网页、图片、文件等。一个URL由多个组成部分组成,包括协议、主机名、端口号、路径、查询参数和片段等。
一个典型的URL格式如下:
协议://主机名[:端口号]/路径[?查询参数]#片段
以下是各部分的解释:
协议:指定访问资源所使用的协议,常见的有HTTP、HTTPS、FTP等。
主机名:指定资源所在的主机或服务器的域名或IP地址。
端口号:可选项,默认使用特定协议的默认端口(如HTTP默认使用80端口,HTTPS默认使用443端口),用于指定连接服务器的端口。
路径:指定资源在服务器上的位置,表示资源的具体路径信息。
查询参数:可选项,用于传递额外的参数给服务器,通常以键值对的形式出现,多个参数之间使用&符号分隔。
片段:可选项,用于指定资源中的一个片段,常用于网页内部跳转定位。
以下是一个示例URL:
https://www.example.com:8080/path/to/resource?id=123&name=example#section1
该URL表示通过HTTPS协议访问位于主机名为www.example.com、端口号为8080的服务器上的path/to/resource路径下的资源。查询参数id和name分别为123和example,片段为section1。
通过URL,我们可以在浏览器或应用程序中直接定位和访问互联网上的资源。
当用户在浏览器中输入URL并按下回车键时,以下是从输入到加载完整个过程的一般步骤:
1.URL解析:浏览器会解析用户输入的URL,提取出协议、主机名、端口号、路径、查询参数和片段等信息。
2.DNS解析:浏览器会检查本地DNS缓存,如果找到对应的域名解析结果,则直接获取对应的IP地址。否则,浏览器将发送DNS查询请求到本地DNS服务器,以获取主机名对应的IP地址。
3.建立TCP连接:浏览器使用HTTP或HTTPS协议与服务器建立TCP连接,通过三次握手确认双方的通信能力。
4.发送HTTP请求:浏览器向服务器发送HTTP请求,包括请求方法(GET、POST等)、请求头(例如Accept、User-Agent等)和请求体(POST请求时发送的数据)等。
5.服务器处理请求:服务器接收到请求后,根据路径和其他参数,处理用户请求,并生成相应的响应。
6.服务器返回响应:服务器将生成的HTTP响应发送回浏览器,包括状态码、响应头和响应体等信息。
7.浏览器接收响应:浏览器接收到服务器返回的响应,并开始处理响应。
8.HTML解析:浏览器解析HTML响应,构建DOM树,同时解析CSS和JavaScript等外部资源。
9.渲染页面:浏览器利用DOM树和CSS样式表来计算每个元素的位置和样式,并将其渲染到屏幕上。
10.执行JavaScript:如果页面中有JavaScript代码,浏览器会执行JavaScript代码,对页面进行动态交互和修改。
11.加载其他资源:页面加载过程中,浏览器还可能会发起其他的HTTP请求,用于加载图片、样式表、脚本文件等。
12.加载完成:当所有资源都加载完毕后,页面就加载完成了,用户可以看到并与页面进行交互。
以上是一般的流程,实际情况可能因网络环境、服务器性能以及页面内容复杂性等因素而有所差异。
(10)说下cookies和session和token鉴权机制?
因为http协议是无连接,无状态的。简单来说就是为了节省服务器资源,客户端和服务端无法保持长时间连接,所以服务端无法记住该用户的状态。所以引入了鉴权机制,用户在第一次登陆时,服务器会生成cookies给客户端,第二次登陆时客户端会带着之前的cookies来访问,这样服务端就可以判断是哪一个用户。
session是保存在服务端的,当用户登录时会生成session id保存在数据库,下次用户登录就可以识别该session进行判断是哪个用户。
token是另一种鉴权机制,跟cookies类似是由服务端生成token给到客户端,下次登录时或者调其它接口带上该token就可以判断出是哪个用户。
Cookies、Session和Token都是常用的鉴权机制。
1. Cookies:Cookie是客户端存储在浏览器中的小文本文件,用于在Web服务器和客户端之间传递会话状态。Web服务器可以在响应中设置一个包含身份验证令牌的Cookie,以便后续请求中包含该Cookie。当客户端发起请求时,它会自动包含与该域名相关联的所有Cookie,从而让Web服务器能够识别该用户的身份并为其提供个性化服务。Cookies安全性较差,容易被黑客窃取。
2. Session:Session是一种服务器端的状态管理技术。当用户第一次访问Web服务器时,服务器会为该用户创建一个Session,并为其分配一个唯一的会话ID。该Session会保存在服务器端,并与该用户的请求相关联。当用户发送下一次请求时,Web服务器将使用会话ID标识该用户。Web服务器可以在Session中存储用户的身份认证信息、状态信息等。Session机制相对安全,但需要占用服务器资源,同时也不方便多服务器共享Session数据。
3. Token:Token是一种无状态的鉴权方式,即服务器端不保存任何状态信息。它使用JWT(JSON Web Token)来实现,将用户信息和密钥进行签名生成一个Token,然后返回给客户端。客户端在后续请求中将Token返回给服务器,服务器进行解密验证,从而确定用户的身份和权限。Token机制安全性较高,同时也方便跨域使用,但需要注意密钥的安全性。
在实际开发中,Cookies、Session和Token可以根据具体情况选择使用,例如对于一些敏感操作,可以使用Token鉴权方式来保证安全性;对于需要做状态管理的应用,则可以使用Session来实现;对于简单的应用,则可以使用Cookies来方便地传递信息。
(11)HTTP协议请求的八种方式以及get和post有什么区别?
答:
①基于http协议的接口请求有八种方式分别为GET,POST,PUT,HEAD,DELETE,OPTIONS,TRACE,CONNECT。
②
数据携带上:
GET方式:在URL地址后附带的参数是有限制的,其数据容量通常不能超过1K。
POST方式:可以在请求的实体内容中向服务器发送数据,传送的数据量无限制。
请求参数的位置上:
GET方式:请求参数放在URL地址后面,以 ? 的方式来进行拼接
POST方式:请求参数放在HTTP请求包中
用途上:
GET方式一般用来获取数据
POST方式一般用来提交数据
首先是因为GET方式携带的数据量比较小,无法带过去很大的数量
POST方式提交的参数后台更加容易解析(使用POST方式提交的中文数据,后台也更加容易解决)
GET方式比POST方式要快
更详细的八大方式看这个:https://blog.csdn.net/qq_41547882/article/details/107369980
(12)Linux常用命令
查看进程:
ps:显示当前用户的进程状态。
ps aux:显示所有进程的详细信息,包括其他用户的进程。
top:实时显示进程状态和系统资源占用情况。
查看端口:
netstat:显示网络连接、路由表和网络接口信息。
netstat -tuln:显示所有TCP和UDP端口的监听情况。
lsof:列出当前系统打开的文件和网络连接。
查看内存和进程:
free:显示系统内存使用情况。
htop:交互式显示系统状态和进程信息。
top:实时显示进程状态和系统资源占用情况。
pmap:显示进程占用的内存映射。
动态日志:
tail:显示文件的末尾内容。
tail -f file.log:实时监视文件的变化,并动态显示新增的日志内容。
less:逐页显示文件内容,可以向前或向后翻页查看。
less +F file.log:以类似tail -f的方式实时查看文件内容。按Ctrl+C可停止实时跟踪。
grep:在文件中搜索指定的字符串。
grep "keyword" file.log:搜索文件中包含关键字的行。
更详细的命令:https://blog.csdn.net/x2waiwai/article/details/131379911
(13)软件测试如何定位Bug?
(14)如何搭建测试环境?
(15)HTTP1.0和HTTP1,1的区别?
HTTP 1.0和HTTP 1.1是HTTP协议的两个版本,它们在功能和性能上有一些区别。
1. **持久连接(Persistent Connections)**:HTTP 1.0中,默认情况下每个HTTP请求/响应都要建立一个新的TCP连接,请求完成后立即关闭连接。而HTTP 1.1引入了持久连接,允许在同一个TCP连接上发送多个HTTP请求/响应,减少了连接建立和关闭的开销。
2. **流水线(Pipelining)**:HTTP 1.1支持流水线机制,可以同时发送多个未响应的请求,而无需等待每个请求的响应返回。这样可以提高请求的处理效率,并减少了请求的延迟。
3. **缓存控制(Caching)**:HTTP 1.1引入了更强大的缓存机制,支持更精细的缓存控制。例如,包括Cache-Control、ETag、If-Modified-Since等头部字段的添加,可以进行更灵活的缓存管理,提高了缓存的效率。
4. **Host头部字段(Host Header)**:HTTP 1.1中增加了Host头部字段,用于指定服务器的主机名。这样,可以在一台服务器上运行多个虚拟主机,通过Host字段来区分不同的主机。
5. **错误处理(Error Handling)**:HTTP 1.1对错误处理进行了扩展和改进,引入了更多的状态码,如206 Partial Content(部分内容)、300 Multiple Choices(多重选择)等。
6. **管道化(Pipeline)**:HTTP 1.1支持请求的管道化,允许客户端将多个请求发送到服务器而无需等待每个请求的响应。但由于实现和处理上的困难,HTTP 1.1中的管道化并没有得到广泛的应用。
总体上说,HTTP 1.1相对于HTTP 1.0来说增加了很多新特性和改进,提升了性能和效率,更适应了复杂的网络环境和应用需求。HTTP 1.1成为主流的HTTP版本,并被广泛使用。
(16)10M兆宽带是什么意思?理论下载速度是多少?
10M兆宽带是指传输速率为10Mbps的网络接入方式,其中“Mbps”表示数据传输速率单位,即百万位每秒(Megabits per second)。
理论上,10M兆宽带的下载速度为10Mbps / 8 = 1.25MB/s,也就是说最快每秒可以下载1.25MB的数据。但实际下载速度会受到多种因素的影响,例如网络拥塞、路由器性能、下载源服务器性能等等,因此真实下载速度可能会低于理论值。
(17)TCP/IP四层网络模型?
TCP/IP网络模型是一个广泛采用的网络参考模型,它将计算机网络通信分为四个层次,分别是:应用层(Application Layer)、传输层(Transport Layer)、网络层(Network Layer)和链路层(Link Layer)。
1. **应用层:** 应用层是TCP/IP模型中最靠近用户的层级,负责处理特定应用程序和网络之间的通信。它包括了许多常见的协议和服务,如HTTP、FTP、SMTP等。在应用层,数据被封装成特定的应用层协议格式,以供应用程序之间进行交互。
2. **传输层:** 传输层提供了端到端的通信,负责在源主机和目标主机之间传递数据。主要有两个协议:传输控制协议(TCP)和用户数据报协议(UDP)。TCP提供可靠的、面向连接的数据传输,而UDP则提供无连接的、不可靠的数据传输。
3. **网络层:** 网络层负责将数据包从源主机传输到目标主机,通过IP协议进行网络间的路由选择和寻址。它将数据分割成数据包,并添加源IP地址和目标IP地址信息,以便在网络中正确地传递数据。
4. **链路层:** 链路层处理与物理介质的直接通信,主要涉及网络适配器(网卡)、局域网(LAN)等。它负责将网络层传来的IP数据包封装成帧,以便在实际的物理连接上进行传输。
(18)grep
和 find
的区别
`grep` 和 `find` 是在 Linux/unix 系统中非常常用的两个命令。
1. `grep` 主要是用来搜索特定文本,它可以对文件或标准输入进行模式匹配搜索。通常结合正则表达式使用,可以高效地查找符合规则的字符串并输出。例如:`grep "pattern" file.txt` 会在 `file.txt` 中查找所有符合 "pattern" 的行,并输出结果。
2. `find` 主要用于查找文件或目录,也可以根据不同的条件(如名称、类型、大小等)进行过滤。它会递归地查找指定目录及其子目录中符合条件的文件或目录,并将其列出。例如:`find /usr/local -name "test*.txt"` 将递归地查找 `/usr/local` 目录及其子目录中所有以 "test" 开头、扩展名为 ".txt" 的文件,并输出结果。
因此,`grep` 和 `find` 的主要区别在于它们的用途不同:`grep` 用于在文本中搜索指定模式的字符串,而 `find` 用于查找文件或目录。另外,`grep` 可以实时匹配并输出结果,而 `find` 则需要先遍历文件系统和目录结构,再输出匹配的结果。
(19)数据库相关知识
2.4项目提问
三、自己提问环节
(1)部门主要负责哪一类项目
(2)团队有多少人,多少测试人员
(3)团队有运维人员吗?需要测试自己去搭建测试环境吗
(4)新人入职会有一定的业务培训或者帮带吗
(5)现在部门负责的项目情况