软件测试经典面试题(小题汇总)[通俗易懂]

2022-07-29 12:58:48 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

整理收集一些自己遇到的面试题及部分大家的题,自己来作答,回答不妥或者不全的还请大家指正

网络

(一)简单描述下TCP协议

TCP:传输控制协议,是传输层通信协议。它有面向连接、可靠、字节流传输等特点 TCP建立连接时,需要三次握手协议 TCP三次握手的过程如下:

客户端发送SYN报文给服务端,进入SYN_SEND(SEQ=X)状态 服务端收到SYN报文,回应一个SYN(SEQ=Y) ACK(ACK=X 1)报文,进入SYN_RECV状态 客户端收到服务端的SYN报文,回应一个ACK(ACK=Y 1)报文,开始建立连接

TCP/IP作用是什么?

TCP/IP协议是一套网络通信标准,让全世界的各种不同的设备之间可以进行通信

TCP与UDP的区别?

TCP传输控制协议 。UDP用户数据报协议 TCP对资源要求比较多,UDP对资源要求比较少 TCP可以保证数据的正确性,UDP有可能会丢包 TCP可以保证数据的顺序,UDP不会保证

(二)网络7层模型是那7层?列举一些具体的应用实例

从下到上,物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 物理层:同轴电缆、接收器、发送器等 数据链路层:网卡、交换机、网桥 网络层:路由器、网关 传输层:TCP协议、UDP协议 会话层:SQL、ASP、 PHP等 表示层:ASCII、JPEG、PNG、MP3等 应用层:telnet、ssh、http、smtp等

怎么测试网络是否连通

使用ping命令

什么方式可以是外网连接到家里主机

telnet

如何让外网访问家里的终端?它的原理是什么?

  1. 电脑上开启远程桌面
  2. 使用teamview 他们的原理是:
  3. 你和对方机器建立一个Socket连接
  4. 在本地虚拟一个对方的系统
  5. 对方系统会在这个Socket连接上实时发送它系统状态的数据
  6. 收到的数据,是本虚拟系统通过这个数据还原对方系统操作
  7. 本地操作这个虚拟操作系统,会发送数据命令到对方机器
  8. 对方继器接收指令,通过Hook(底层钩子)传给操作系统
  9. 然后循环

访问一个网址会经历哪些流程?

以下几个简单的流程

  1. 首先需要通过域名找到IP,如果本地缓存没有需要请求DNS服务器
  2. 得到IP后开始与目的主机进行三次握手来建立TCP连接
  3. 连接建立后进行HTTP访问,传输病获取网页内容
  4. 传输完成后与目的主机四次挥手断开TCP连接

Linux

Linux常用命令有哪些,并简述他们的作用

ls 查看当前目录 df-h 查看磁盘使用情况 kill 杀掉进程 top 查看当前主机状态 mv 移动文件 cp 复制文件 netstat-a 查看端口使用状态 rm 删除 cat 查看文件

vim怎么退出

q 不保存直接退出 wq 保存后退出 q! 强制退出

vim怎么快速查找

按下ESC输入 再输入 空格 查找内容

如何查找日志关键词上下文

代码语言:javascript复制
# 查看文件关键词前后10行
grep 关键词 -C 10 文件名 catalina.out
# 查看文件关键词后10行 a=after
grep 关键词 -A 10 文件名 catalina.out
# 查看文件关键词前10行 b=before
grep 关键词 -B 10 文件名 catalina.out

怎样一页一页地查看一个大文件的内容呢?

cat filename.txt | more 通过管道命令和more实现

如何查看linux端口号被占用

netstat -a 查看端口状态

如何查看进程状态?

ps -ef | grep 进程名

chown是什么?grep是什么?

chown 改变文件的拥有者和组 gerp 查找文件里符合条件的字符串

如何查看日志?

tail -f 日志文件名

5个客户端通过TCP连接到主机,如何查看这5个连接

代码语言:javascript复制
netstat -nat|grep ESTABLISHED

数据库

哪些方法可以提高数据库查询效率?

  1. 建立索引,利用索引
  2. 只查询必要的字段
  3. 合理的处理NULL字段
  4. 慎用like等通配符

索引设计的时候要注意什么?

  1. 索引字段长度不能太长
  2. 索引的个数不能太多

数据库更新语句?GROUP BY 如何使用?

代码语言:javascript复制
UPDATE TABLENAME SET 字段名称 = 新值 WHERE 列名称 = 旧值

GROUP BY 一般常用于对查询结果进行分组

代码语言:javascript复制
# 如果想要对结果进行分组统计,加上SUM函数即可
SELECT SUM(列名1) 列命2 FROM TABLENAME
WHERE 列名1 列名2 
GROUP BY 列命1

如果一个数据表有成千上万条记录,访问时很慢,有哪些方法可以优化? Redis的优势是什么

  1. 读写快,Redis是将数据放在内存里,而内存的读取速度比硬盘要快,所以Redis性能优势比其他数据库要好
  2. 并发性能好

编程

HTTP协议中GET和POST的区别

在http协议中 get方法一般用来从服务器获取数据 post方法一般用来向服务器上传数据

HTTP状态码的含义

状态码

描述

1XX

服务器收到请求,需要请求者继续执行操作

2XX

成功,操作被成功接收并处理

3XX

重定向,需要进一步的操作以完成请求

4XX

客户端错误,请求包含语法错误或无法完成请求

5XX

服务器错误,服务器在处理请求的过程中发生了错误

常用的如下

状态码

返回

描述

200

OK

请求成功。一般用于GET与POST请求

400

Bad Request

客户端请求的语法错误,服务器无法理解

401

Unauthorized

未注册或需要用户的身份认证

403

Forbidden

服务器理解请求客户端的请求,但是拒绝执行此请求

404

Not Found

服务器无法根据客户端的请求找到资源

500

Internal Server Error

服务器内部错误,无法完成请求

502

Bad Gateway

作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应

503

Service Unavailable

由于超载或系统维护,服务器暂时的无法处理客户端的请求

505

HTTP Version not supported

服务器不支持请求的HTTP协议的版本,无法完成处理

HTTP请求Header里包含哪些内容

浏览器F12随意截取了一段,可以看看

代码语言:javascript复制
# 主机名
Host: cn.bing.com
# 你当前访问的方式,一般为浏览器版本,或者APP
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0
Accept: text/html,application/xhtml xml,application/xml;q=0.9,image/webp,*/*;q=0.8
# 语言信息
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
# 编码信息
Accept-Encoding: gzip, deflate, br
# HTTP请求应答模式,KeepAlive模式,也有非KeepAlive模式
Connection: keep-alive
# 本地缓存
Cookie: SNRHOP=I=&TS=; _EDGE_S=mkt=zh-cn&F=1&SID=0227DE6146F26D360001D09247DC6CAA; _EDGE_V=1; MUID=0791871266626F2726E289E1674C6E73; _SS=PC=MOZI&SID=0227DE6146F26D360001D09247DC6CAA; SRCHS=PC=MOZI; SRCHD=AF=MOZLBR; SRCHUID=V=2&GUID=552BA37B5F5640E0BFCB0985B1F1AF85&dmnchg=1; SRCHUSR=DOB=20200624&T=1592977196000; MUIDB=0791871266626F2726E289E1674C6E73; SRCHHPGUSR=HV=1592977466&WTS=63728573996&CW=1920&CH=432&DPR=1&UTC=480&DM=0; ipv6=hit=1592980798172&t=6
# 是对应服务器的响应头部信息,Content-Security-Policy: upgrade-insecure-requests
Content-Security-Policy: upgrade-insecure-requests
# 1,表示只是客户端支持
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0

白盒测试方法有哪些

语句覆盖 使程序中的每个可执行语句都能执行一次的测试用例

判定覆盖 对于判断语句,在设计用例的时候,要设计判断语句结果为True和False的两种情况

条件覆盖 设计足够多的测试用例,使得程序中每个判定包含的每个条件的可能取值(真/假)都至少满足一次

判定条件覆盖 设计足够的测试用例,使得判断条件中的所有条件可能取值至少执行一次,同时,所有判断的可能结果至少执行一次

条件组合覆盖 设计足够的测试用例,使得程序中每个判断的所有可能的条件取值组合都至少出现一次

路径覆盖 设计所有的测试用例,来覆盖程序中的所有可能的执行路径

白盒测试覆盖率如何保证

使用条件组合覆盖达到100% 让程序中每个判断的所有可能条件取值组合都至少出现一次 这就就可以保证语句覆盖率、判定覆盖率、条件覆盖率和判定-条件覆盖率必为100% 关系如下: 参考知乎作者-吃完饭后不刷牙(https://zhuanlan.zhihu.com/p/43007988)

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/129204.html原文链接:https://javaforall.cn

0 人点赞