1.数据结构
常见的数据结构包括数组、链表、栈、队列、树(如二叉树、B树、B+树)、图等
2.队列和栈的区别
队列是一种先入先出的数据结构,即最先加入的元素被最先移除;
栈是一种后进后出的数据结构,即最后加入的元素被最先移除;
3.常见的排序算法
冒泡、选择、快速、归并、堆排序
4.快速排序和堆排序的区别
快速排序通常比堆排序更快,因为它具有更好的平均性能O(nlogn),但是它不是稳定的;
堆排序也是O(nlogn),但它主要用于保持堆的性质,并不是稳定的排序算法;
5.
String.equals()判断字符相等
6.==和equals区别
==比较的是基本类型的值或者引用类型是否指向同一个对象;
equals方法比较的是两个对象内容是否相等;
7.MySQL索引有哪些?
B+树索引、哈希索引、全文索引、
9.树的类型
二叉树、B树、B+树、红黑树等
B+树非常适合磁盘存储系统中的范围查询,因为所有数据都存储在叶子节点上;
红黑树是一种自平衡的二叉查找树,适合内存中的数据存储;
AVL平衡二叉树,对高度要求严格,左右子树高度差不能超过1;
对于插入可能复杂度高
10.两种网络模型
OSI七层模型和TCP/IP四层模型
11.应用层和表示层区别
应用层是OSI模型最顶层,为应用程序提供服务;
表示层对数据做转换、加密解密,确保发送的数据被接收端正确解释;
12.垃圾回收机制
垃圾回收机制是一种自动内存管理机制,用于自动回收不再使用的对象所占用的内存
13.高并发情况,怎么解决
高并发场景采用多种解决方案,例如使用缓存减少数据库的访问次数,利用负载均衡器分散到不同的服务器,使用消息队列来异步处理
14.redis基本数据结构
字符串、列表、集合、哈希、有序数组集合
15.List和Set区别
List是有序的集合,可以包含重复元素;
Set是无序的集合,不能包含重复元素;
基础理论
产品经理提出需求,开发测试产品对需求评审,在开发人员开发同时,测试会进行测试用例编写,编写完成后,开发产品测试评审。开发完成后,测试根据测试用例进行测试,发现问题给开发修改,解决完之后进行回归测试。运维预发布。回归测试。没有问题就发布到生产环境,然后上线
2.软件测试周期
制定测试计划-测试设计与研发-执行测试-编写测试报告-版本发布-测试总结
3.bug单
1.所属产品
2.所属项目
3.所属模块
4.影响版本
5.bug 的类型
6.bug 的标题
7.bug 的严重程度
8.bug 的优先级
9.重现缺陷的三个方面:操作步骤,预期结果,实际结果10.bug的重现上次相应的文件例出现 bug 时的截图
5. 黑盒测试常用的测试方法
黑盒测试主要关注软件的输入和输出,不考虑内部代码结构,常用的测试方法包括:
- 等价类划分:将输入数据划分为不同的等价类,在每个等价类中选取一个代表值进行测试。
- 边界值分析:测试输入变量的边界情况(如最大值、最小值、临界点)。
- 因果图:通过因果关系分析输入条件之间的关系,生成测试用例。
- 决策表测试:根据输入条件的不同组合,构建决策表,保证条件覆盖。
- 场景测试:模拟实际用户的操作场景,验证功能的综合表现。
4.什么是集成测试
在单元测试的基础上,将各单元组成完整的体系,测试软件单位之间的接口是否正确,数据能否正常传递。…---------------比如注册和充值这两个功能能否连通
22.常见白盒测试的方法
1.语句覆盖 2.分支覆盖、判断覆盖 3.条件覆盖 4.判断/条件覆盖 5.路径覆盖
1. 测试工程师的功能和职责
测试工程师的主要职责是确保软件的质量,保证产品在交付前没有重大缺陷。其功能和职责包括:
- 编写测试计划:基于需求和功能设计测试用例,确保覆盖所有功能模块。
- 执行测试用例:运行手动或自动化测试,验证软件是否按照预期工作。
- 报告和跟踪缺陷:记录和报告在测试中发现的缺陷,并确保开发人员修复后进行验证。
- 回归测试:在修复或更新代码后重新测试,确保新的改动没有引入新的问题。
- 维护测试环境:确保测试环境的稳定性和一致性。
- 参与需求评审:帮助团队识别潜在的质量问题。
2. 如何实现测试的全覆盖
实现测试的全覆盖是一个复杂的任务,通常采用以下方法和工具来尽量达到:
- 需求覆盖率:确保每个需求都有相应的测试用例。
- 代码覆盖率:使用工具(如 JaCoCo、Cobertura)进行代码覆盖率分析,确保每一行代码都经过测试,常见覆盖率包括:
- 语句覆盖率:执行每个语句。
- 分支覆盖率:执行每个分支(例如
if-else
条件)。 - 路径覆盖率:确保所有可能的执行路径都测试到。
- 功能测试:测试所有功能模块,确保功能需求都实现。
- 边界测试:覆盖所有可能的边界条件,检查极端输入和输出情况。
- 交叉测试:测试不同模块之间的交互,确保它们在集成时能够正常工作。
3. 黑盒测试中的常用技术和方法
黑盒测试不关心代码内部实现,侧重于功能的输入和输出。常见的黑盒测试技术有:
- 等价类划分:将输入数据划分为几类,每类只选一个典型值进行测试,减少测试数据量。
- 边界值分析:针对临界点进行测试,如最大值、最小值、刚好超过或低于边界的值。
- 决策表测试:用来测试系统在不同条件组合下的行为。
- 场景测试:根据用户的操作场景,设计具有代表性的测试用例。
- 因果图测试:用于分析输入条件和输出之间的关系,确保覆盖各种组合情况。
4. 性能测试的概念及黑盒/白盒属性
性能测试主要关注软件在高负载条件下的表现,用于确定系统的速度、可扩展性和稳定性。通常性能测试属于黑盒测试,因为它测试的是系统外部表现,而不关心内部实现。
5. 性能测试的概念与观测指标
性能测试的目标是评估系统在特定工作负载下的响应能力和稳定性,常见类型包括:
- 负载测试:模拟多个用户访问系统,观察系统在正常负载下的表现。
- 压力测试:逐步增加负载,直到系统超负荷,评估系统的极限。
- 并发测试:测试多个用户同时操作同一资源时系统的性能。
- 稳定性测试:长时间运行系统,评估其在稳定负载下的表现。
主要观测的性能指标包括:
- 响应时间:系统处理请求所需的时间。
- 吞吐量:系统在单位时间内能处理的请求数。
- 并发用户数:系统能够同时支持的最大用户数。
- 资源使用率:CPU、内存、磁盘等资源的占用情况。
- 错误率:在负载下出现的错误请求比例。
7. 性能测试的步骤或流程
性能测试的标准流程包括以下步骤:
- 需求分析:了解性能需求,确定需要测试的性能指标(如响应时间、吞吐量)。
- 测试环境搭建:搭建与实际环境相似的测试环境,包括硬件、软件、网络条件等。
- 设计测试方案:确定测试场景、负载模型,设计性能测试用例。
- 执行测试:使用性能测试工具执行测试,模拟用户行为并加载系统。
- 数据监控与采集:实时监控系统的各项资源指标,并采集测试结果。
- 分析和报告:分析测试数据,找出瓶颈,并提出优化建议。
- 优化和重测:根据测试结果进行系统优化,再次测试,直到性能达到预期目标。
12. OSI 七层模型
OSI(Open Systems Interconnection)模型是一个标准化的通信框架,分为七个层次,每一层都有特定的功能和协议。这些层次从物理硬件层到应用软件层,提供了一个分层的抽象模型,便于理解网络通信。
OSI 七层模型的各层:
-
物理层(Physical Layer):
- 功能:负责传输数据的物理媒介,如电缆、光纤和电信号。
- 示例:RJ-45 接口、光纤、Wi-Fi 频段。
-
数据链路层(Data Link Layer):
- 功能:提供节点间的可靠数据传输,处理帧的建立、传输和错误检测。
- 协议:以太网(Ethernet)、点对点协议(PPP)、MAC 地址。
-
网络层(Network Layer):
- 功能:负责不同网络之间的数据传输,处理路由选择和逻辑地址(IP 地址)的分配。
- 协议:IP(Internet Protocol),ICMP(Internet Control Message Protocol)。
-
传输层(Transport Layer):
- 功能:提供端到端的可靠数据传输,确保数据按顺序无误地传输到目的地。
- 协议:TCP(Transmission Control Protocol),UDP(User Datagram Protocol)。
-
会话层(Session Layer):
- 功能:管理应用之间的会话,负责会话的建立、维持和终止。
- 协议:RPC(Remote Procedure Call),NetBIOS。
-
表示层(Presentation Layer):
- 功能:处理数据的表示形式,负责数据加密、解密和格式转换。
- 协议:SSL/TLS(加密协议),JPEG(图像格式),MPEG(视频格式)。
-
应用层(Application Layer):
- 功能:直接为用户提供网络服务,处理应用程序与网络之间的交互。
- 协议:HTTP、HTTPS、FTP、SMTP、DNS。
13. 浏览器输入一个地址到页面显示的过程和协议
当用户在浏览器中输入一个 URL(如 http://www.example.com
)并回车后,发生了多个步骤,涉及不同的协议和通信过程。
主要的步骤及其对应的协议:
-
DNS 查询(域名解析):
- 浏览器首先查找 URL 对应的 IP 地址。此时使用的协议是 DNS(Domain Name System) 协议。
- 浏览器会先查找本地缓存,若缓存中没有找到,会向 DNS 服务器发送请求,获得域名
www.example.com
对应的 IP 地址。
-
TCP 连接:
- 获得 IP 地址后,浏览器与服务器建立一个 TCP 连接。此过程使用 TCP(Transmission Control Protocol) 协议,保证数据传输的可靠性。
- 建立连接的过程中,使用了 三次握手 的机制:
- 客户端发送
SYN
请求到服务器。 - 服务器回复
SYN-ACK
。 - 客户端再回复
ACK
,连接建立完成。
- 客户端发送
-
HTTPS/HTTP 请求:
- 一旦 TCP 连接建立,浏览器向服务器发送 HTTP/HTTPS 请求,获取网页内容。具体协议取决于 URL 是
http://
还是https://
。 - HTTP(HyperText Transfer Protocol)是无状态的应用层协议,用于发送网页数据。
- HTTPS(HTTP Secure)是在 HTTP 之上加了 SSL/TLS 加密层,用于加密传输数据。
- 一旦 TCP 连接建立,浏览器向服务器发送 HTTP/HTTPS 请求,获取网页内容。具体协议取决于 URL 是
-
SSL/TLS 握手(仅适用于 HTTPS):
- 如果是 HTTPS 请求,浏览器和服务器之间会进行 SSL/TLS 握手,建立加密连接。这一过程包括协商加密算法、交换密钥、验证证书等步骤,确保数据传输安全。
-
服务器响应:
- 服务器收到请求后,根据请求的 URL,查找对应的资源,并通过 HTTP/HTTPS 协议返回响应数据,包括 HTML 页面、CSS 文件、JavaScript 文件等。
-
浏览器解析和渲染:
- 浏览器接收服务器响应的数据,开始解析 HTML 文件,下载引用的资源(如图片、CSS、JavaScript 等),并渲染页面。
- 其中,图片的下载可能使用 HTTP,而音视频的传输可能使用 RTMP 或 HTTP Streaming 等协议。
总结:
- DNS 协议用于解析域名到 IP 地址。
- TCP 协议用于建立客户端与服务器之间的可靠连接。
- HTTP/HTTPS 协议用于传输网页请求和响应。
- SSL/TLS 协议用于加密 HTTPS 连接。
- HTTP 还可能用于加载页面中的其他资源,如图片、样式表等。
2.数据库知识
. DELETE
和 DROP
的区别
-
DELETE
:- 作用:用于删除表中的部分或全部数据,但表结构依然存在。
- 特点:
- 只删除表中的数据,保留表和表的结构。
- 可以结合
WHERE
子句来删除特定的数据行。 - 可以回滚:如果使用了事务,
DELETE
操作可以回滚。
- 语法示例:
sql
复制代码
DELETE FROM table_name WHERE condition;
-
DROP
:- 作用:用于删除整个表,包括表结构和表中的数据。
- 特点:
- 不仅删除表中的数据,还删除整个表的定义。
- 删除表后,表不可恢复(除非有备份)。
- 不可回滚:
DROP
操作不可回滚。
- 语法示例:
sql
复制代码
DROP TABLE table_name;
总结:
DELETE
删除数据,保留表结构;DROP
删除整个表,包括表结构。DELETE
可以回滚,DROP
不可回滚。
4. 如果测试来不及怎么办
如果项目时间紧,测试时间不足,可以采取以下措施:
- 优先测试核心功能:把资源集中在最重要的业务功能上,优先测试用户最常使用的功能。
- 风险分析:分析各个模块的风险,优先测试高风险的模块,推迟低风险模块的测试。
- 增加测试人员:如果条件允许,调动其他团队的测试人员,进行并行测试。
- 自动化测试:优先编写自动化脚本,对回归测试和重复性高的测试用例进行自动化。
- 与开发团队紧密合作:提前介入开发,进行早期测试(例如单元测试和集成测试),减少后期需要执行的测试量。
-
5. 性能指标
性能测试中的关键指标包括:
-
响应时间(Response Time):
- 请求发出到收到响应的时间,通常用于衡量系统的性能。
-
吞吐量(Throughput):
- 单位时间内处理的请求数或事务数,通常以每秒请求数(RPS)或每秒事务数(TPS)表示。
-
并发用户数(Concurrency):
- 同时访问系统的用户数量。
-
资源使用率:
- CPU、内存、网络和磁盘的使用率,监测系统的资源消耗情况。
-
错误率:
- 请求失败的比例,通常表示为请求的失败率或错误代码的返回频率。
1.插入语句用法
insert into table_name (字段1,字段2,字段3)values(值1,值2,值3);
2.更新语句
update table_name set 字段1=值1
3.删除语句
delete from table_name where 字段1=值1
4.查询语句
selete * from table_name
5.多表联查
selete * from student st join score sc on st.name=sc.name
6.Oracle当中的for update怎么使用
selete * from table_name for update
1.执行 for update 语句2.打开小锁3.修改数据4.点击对号5.关闭小锁6.点击提交(执行 commit)
6.端口号
Mysql 3306;oracle 1521; sqlserver 1433
7.数据库聚合函数都有
Sum\avg\max\min\ount
8.模糊查询的方法
selet * from table_name where name like'孙%'
9.in 的用法
select name,age,sex from student where name in(‘曹操’,‘孙权’)
10.去重
distinct
11.说下取前几行的用法
select * from table_name limit 3;
12.倒序
desc
13.关系型数据库
mysql、oracle、sqlserver
14.非关系型数据库
redis,mongodb
16.三种数据库的区别
mysql:端口3306,客户端连接工具sqlyog,开源
17.删除数据库
delete from table_name where 字段 (删除部分语句
truncate table table_name (数据清空表结构还在
drop table table_name (删除数据表结构一并删除
delete和truncate之删除表的数据不删除表结构,drop都删除
三者使用场景也不一样,不需要一张表drop,删除部分数据delete,清空数据truncate
删除速度 drop > truncate > delete
18.说下A表和B表进行俩个表联查
selete * from A a1 join B b1 on a1.id=b1.id;
19什么是外连接
外连接分为左外和右外
20.
1.左连接以左表为基础,坐标内容全部输出,右表内容和左表相同的输出,不同的以NULL出现
selete * from A a left outer join B b on a.name=b.name
2.内连接,把两个表相同的全部输出,不同的全部过滤
3.右连接,和左连接正好反过来;
21。嵌套查询、子查询
嵌套:即子查询,查询里面还有查询
Select * from student where name in(select name from score where score>60)
22.什么是数据库中的索引,以及索引的作用,
如创建一个索引索引就好比一本书的目录,可以帮助我们快速的查询到我们查看的内容,也就是
说在数据库里添加索引能够加快数据的查询速度但是同时也会减慢数据的录入速度。
23. 事务具有4个特性:原子性、一致性、隔离性、持久性