前言
时光荏苒,一转眼已踏入2023年,人员就业市场以往的寒冬也貌似有了转暖的迹象,身边大批的就业人员也开始了紧张的备战之中。近几周也和多家合作公司的HR进行了沟通,发现虽然岗位就业情况较去年有所好转,但整体的需求缺口与候选人的条件选择却比19年的时候稀少与严格了许多。
许多的应聘者投出简历之后经常会遇到根本没有反馈的情况,一方面也是大批的大厂、中厂的竞争者出现,他们有着大厂背景和大项目背书,相对来说公司方面就有了更优解,另一方面经历了去年一整年的变故,许多的优势竞争者只能降低预期,这对用人单位来说性价比就更高了。
也正是因为以上的种种,博主作为一个测试管理者也常年面试各类的测试行业就业人员,也发现了形形色色的面试相关的问题,希望将自己的长久经验积累转化为博文的这种方式来帮助到更多的软件测试应聘者。
大家可以通过面试题内的一些解析再结合自己的真实工作经验来进行答题思路的提取、整理。
友情提示:硬背答案虽好,但容易翻车哦。
同时,我也准备了一份软件测试视频教程(含接口、自动化、性能等),需要的可以直接在下方观看,或者直接关注VX公众号:互联网杂货铺,免费领取
软件测试视频教程观看处:
2023最新【软件测试面试300问】面试八股文教程,涵盖自动化测试/接口测试/性能测试/测试开发等内容
软件测试面试题分享
1、描述一下四次握手?
TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过 三次握手 进行初始化的。同时由于TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议,TCP是 全双工模式 ,所以需要 四次挥手 关闭连接。
下面是四次握手的过程:
-
客户端发送一个FIN报文,报文中会指定一个序列号。
-
服务器收到FIN报文后,会发送一个ACK报文,报文中包含了客户端发送过来的序列号+1。
-
服务器发送一个FIN报文,报文中会指定一个序列号。
-
客户端收到FIN报文后,会发送一个ACK报文,报文中包含了服务器发送过来的序列号+1。
四次挥手过程中,双方都需要确认彼此的关闭请求和确认请求,以确保数据的完整传输和连接的正常关闭。
2、在网页输入一个地址,会发生什么?
当在浏览器中输入一个网址并按下回车键时,会发生以下过程:
-
首先,浏览器会解析你输入的网址,判断它是否合法。如果不合法,浏览器会自动进行搜索。
-
浏览器会向 DNS 服务器发送请求,以获取该网址对应的 IP 地址。
-
浏览器会与该 IP 地址建立 TCP 连接,并向服务器发送 HTTP 请求。
-
服务器会响应该请求,并返回相应的 HTML 文件。
-
浏览器会解析 HTML 文件,并根据其中的 CSS 和 JavaScript 代码渲染出网页。
3、进程的调度算法有哪些,进程的状态有哪些?
进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。进程有五种状态:创建态,就绪态,运行态,阻塞态,结束态。进程的调度算法有以下几种:
-
先来先服务(FCFS):按照进程到达的先后顺序进行调度。
-
短作业优先(SJF):选择剩余时间最短的进程进行调度。
-
优先权优先(FPF):按照进程的优先级进行调度。
-
时间片轮询法:将CPU时间分成若干个时间片,每个进程占用一个时间片后就重新排队等待下一次调度。
4、简述下数据库索引
数据库索引是一种数据结构,用于加快数据库查询的速度和性能。索引是对数据库表中一个或多个列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。索引分为单列索引和组合索引。单列索引只包含单个列,一个表可以有多个单列索引。组合索引包含多个列。创建索引时,需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。虽然索引能够提高查询性能,但也需要注意以下几点:索引需要占用额外的存储空间;对表进行插入、更新和删除操作时,索引需要维护,可能会影响性能;过多或不合理的索引可能会导致性能下降,因此需要谨慎选择和规划索引。
5、TCP和UDP的区别以及应用场景?
TCP 和 UDP 是传输层协议。TCP 是面向连接的、可靠的流协议,UDP 是面向报文的不可靠数据报协议。TCP 保证数据传输的可靠性,UDP 则不保证可靠性。TCP 适用于对数据传输质量有较高要求的应用,如 HTTP、HTTPS、FTP 等传输文件的协议以及 POP、SMTP 等邮件传输的协议。UDP 适用于对数据传输实时性要求较高,但不对传输质量有要求的应用,如视频传输、实时通信等。
6、出现界面白屏,说下排查思路?
当界面白屏时,可以按照以下步骤进行排查:
-
检查网络连接是否正常,确保 URL 地址正确。
-
打开控制台,查看是否有报错信息。
-
检查接口访问是否有请求。
-
检查路由是否有 path 错误,导致加载了不存在的页面。
-
从 JS 和 CSS 方面检测,排除网络问题后,如果还是白屏,那一般都是 CSS 和 JS 加载造成的。CSS 和 JS 会造成阻塞渲染。
7、描述下性能测试指标?
性能测试指标是衡量系统性能的评价标准,常用的系统性能测试指标包括:响应时间、并发用户/并发、点击率、吞吐量、TPS/QPS、PV/UV;
Linux服务器常用的性能指标包括:CPU使用率、内存占用率、磁盘IO、系统平均负载等。从以上的性能测试指标可以看出,性能包含多个维度。
8、描述下可变类和不可变类区别?
在计算机编程中,可变类和不可变类是两种不同的类别。可变类是指其实例的状态可以在创建后更改,而不可变类是指其实例的状态不能更改。例如,Python 中的列表是可变的,而元组是不可变的。
以下是可变类和不可变类之间的一些区别:
-
可变类的实例可以更改,而不可变类的实例不能更改。
-
可变类的实例通常需要更多的内存,因为它们需要存储状态的历史记录。
-
不可变类的实例通常比可变类的实例更容易缓存和共享,因为它们具有相同的状态。
-
不可变类可以更容易地进行线程安全编程,因为它们没有竞争条件。
9、描述下数组和列表的区别?
在 Python 中,列表和数组都是用于存储多个元素的数据结构。它们都支持索引、切片和迭代等操作。但是,它们之间有以下区别:
-
列表可以包含不同类型的元素,而数组只能包含相同类型的元素。
-
列表可以动态增加或删除元素,而数组的大小是固定的。
-
在 Python 中,列表是内置的数据类型,而数组需要通过导入 array 模块来使用。
10、python文字乱码怎么办?
Python 中出现文字乱码的原因通常是编码格式不一致导致的。以下是一些解决方法:
-
在 Python 文件开头加入 # -*- coding: UTF-8 -*- 或者 #coding=utf-8,确保文件编码格式为 UTF-8。
-
在字符串前面加上 u,使用 Unicode 编码存储中文。
-
使用 decode() 和 encode() 方法将字符串转换为指定编码格式。
-
在控制台中输入中文时,需要将提示字符串强制转换为 GBK 编码。
11、什么是测试用例?什么事测试脚本?两者关系是什么?
测试用例是一个具体的测试场景或测试情况,它描述了被测系统在特定条件下的输入、操作和预期输出。测试用例通常包括测试目的、测试步骤、预期结果和实际结果等信息,用于验证软件系统的功能、性能或其他质量属性。
测试脚本是一段自动化脚本或代码,用于执行测试用例并验证预期结果。测试脚本通常由测试工程师编写,使用特定的测试框架、编程语言和工具来实现自动化测试。测试脚本可以模拟用户的操作,自动执行一系列测试步骤,并根据预期结果进行断言验证。
两者之间的关系是:测试脚本是测试用例的具体实现,它将测试用例转化为可自动化执行的代码。
12、测试如何模拟404、断网、断电、找不到网页的情况?
-
模拟404:在测试环境中,可以修改请求的URL地址,将其修改为不存在的地址,从而模拟404错误。
-
模拟断网:可以使用网络模拟工具,如Network Link Conditioner(Mac)或Clumsy(Windows),来模拟网络连接不稳定或断开的情况。
-
模拟断电:可以使用硬件模拟器,如Chaos Monkey,来模拟服务器宕机或断电的情况。
-
模拟找不到网页:可以在测试环境中删除或移动网页文件,从而模拟找不到网页的情况。
总结
PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G。如需要软件测试学习资料,关注公众号(互联网杂货铺),后台回复1,整理不易,给个关注点个赞吧,谢谢各位大佬!
☑ 240集-零基础到精通全套视频课程
☑ [课件+源码]-完整配套的教程
☑ 18套-测试实战项目源码
☑ 37套-测试工具软件包
☑ 268道-真实面试题
☑ 200个模板-面试简历模板、测试方案模板、软件测试报告模板、测试分析模版、测试计划模板、性能测试报告、性能测试报告、性能测试脚本用例模板(信息完整)
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。