1、描述一下四次握手?
TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过 三次握手 进行初始化的。同时由于TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议,TCP是 全双工模式 ,所以需要 四次挥手 关闭连接。
下面是四次握手的过程:
-
客户端发送一个FIN报文,报文中会指定一个序列号。
-
服务器收到FIN报文后,会发送一个ACK报文,报文中包含了客户端发送过来的序列号+1。
-
服务器发送一个FIN报文,报文中会指定一个序列号。
-
客户端收到FIN报文后,会发送一个ACK报文,报文中包含了服务器发送过来的序列号+1。
四次挥手过程中,双方都需要确认彼此的关闭请求和确认请求,以确保数据的完整传输和连接的正常关闭。
如果对软件测试、接口、自动化、性能测试、测试开发、面试经验交流。感兴趣可以加裙485187702,群内会有不定期的发放免费的资料链接,这些资料都是从各个技术网站搜集、整理出来的,如果你有好的学习资料可以私聊发我,我会注明出处之后分享给大家。
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,来模拟服务器宕机或断电的情况。
-
模拟找不到网页:可以在测试环境中删除或移动网页文件,从而模拟找不到网页的情况。
最后:下面是配套学习资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!【100%无套路免费领取】
软件测试面试小程序
被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!
终于成功上岸字节软件测试岗,多亏刷了这1000+道大厂面试真题,如果你还在面试,建议你试试
涵盖以下这些面试题板块:
1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux
6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础