2021最新软件测试经典面试题-答答看?

网络

简单描述下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

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

电脑上开启远程桌面

使用teamview

他们的原理是:

你和对方机器建立一个Socket连接

在本地虚拟一个对方的系统

对方系统会在这个Socket连接上实时发送它系统状态的数据

收到的数据,是本虚拟系统通过这个数据还原对方系统操作

本地操作这个虚拟操作系统,会发送数据命令到对方机器

对方继器接收指令,通过Hook(底层钩子)传给操作系统

然后循环

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

以下几个简单的流程

首先需要通过域名找到IP,如果本地缓存没有需要请求DNS服务器

得到IP后开始与目的主机进行三次握手来建立TCP连接

连接建立后进行HTTP访问,传输病获取网页内容

传输完成后与目的主机四次握手断开TCP连接

2Linux

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

ls 查看当前目录

df-h 查看磁盘使用情况

kill 杀掉进程

top 查看当前主机状态

mv 移动文件

cp 复制文件

netstat-a 查看端口使用状态

rm 删除

cat 查看文件

vim怎么退出

q 不保存直接退出

wq 保存后退出

q! 强制退出

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

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

如何查看linux端口号被占用?

netstat -a 查看端口状态

如何查看进程状态?

ps -ef | grep 进程名

chown是什么?grep是什么?

chown 改变文件的拥有者和组

gerp 查找文件里符合条件的字符串

如何查看日志?

tail -f 日志文件名

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

netstat -nat|grep ESTABLISHED

3数据库

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

建立索引,利用索引

只查询必要的字段

合理的处理NULL字段

慎用like等通配符

在这里我向大家推荐一个自动化学习交流群。交流学习群号:902061117 里面会分享一些资深架构师录制的视频录像

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

索引字段长度不能太长

索引的个数不能太多

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

UPDATE TABLENAME SET 字段名称 = 新值 WHERE 列名称 = 旧值

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

#如果想要对结果进行分组统计,加上SUM函数即可

SELECT SUM(列名1) 列命2 FROM TABLENAME

WHERE 列名1 列名2

GROUP BY 列命1

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

MySQL

mysql的索引,最左匹配原则

索引可以加快对数据的检索。常见的有B+Tree索引,哈希索引。

最左匹配原则:

当索引是联合索引,在查询条件中,mysql是从最左边开始命中的,如果出现了范围查询(>、<、between、like),就不能进一步命中了,后续退化为线性查找,列的排列顺序决定了可命中索引的列数。

mysql的主从复制

mysql为了保持高可用,会采用一主多从的结构,一个master节点,多个slave节点,master节点可以进行写操作,而slave节点只能进行读操作。

binlog线程:将主服务器上的数据更改写入二进制日志中

I/O线程:从主服务器上读取二进制日志,并写入从服务器的重放日志中

SQL线程:读取重放日志并重放其中的SQL语句

mysql的聚集索引、非聚集索引

聚集索引:以主键创建的索引,在叶子结点上存储的是表中的数据

非聚集索引:以非主键创建的索引,叶子结点上存储的是主键和索引列

使用非聚集索引查询出数据时,拿到叶子上的主键再去查到想要查找的数据。(回表)

mysql联合索引,要注意什么?

联合索引即索引由多个列(a,b,c,d)组成,要注意索引的命中,最左匹配原则,从左开始命中,遇到范围查询就不能进一步匹配。

为什么数据库要使用B+树来实现索引?

更少的查找次数(B+树相比红黑树更矮胖)

利用磁盘预读特性(一次IO能完全载入一个节点)

4编程

HTTP协议中GET和POST的区别

1、get请求重点在从服务器上获取资源,而post请求重点在向服务器发送数据。

2、get传输数据是通过URL请求,以字段=value的形式,用?连接置于URL之后,多个请求数据之间用&连接,这个过程用户可见,不安全,参数暴露。post传输数据是将字段与对应值封存在请求实体中发送给服务器,这个过程用户不可见,隐藏式的请求,相比是安全的。

3,get传输的数据量小,受URL长度的限制,但是效率高。post传输数据量不受限制,可以传输大量数据,所以传输文件时只能使用post,但是效率较低。请求较多时可能形成一个请求队列。

4,get方式只支持ASCII字符,因此向服务器传输中文有可能出现乱码。post支持标准字符集,可以正确传递中文字符。

HTTPS怎么建立请求?

HTTPS = HTTP + SSL(Secure Sockets Layer, 安全套接字层)

HTTPS 可以防窃听(非对称密钥加密)、防伪装、防篡改(加密和认证)

客户端发送请求到服务器端

服务器端返回证书和公开密钥,公开密钥作为证书的一部分而存在

客户端验证证书和公开密钥的有效性,如果有效,则生成共享密钥并使用公开密钥加密发送到服务器端

服务器端使用私有密钥解密数据,并使用收到的共享密钥加密数据,发送到客户端

客户端使用共享密钥解密数据

SSL加密建立…


最后: 欢迎大家关注公众号:【 伤心的辣条 】,领取一份300页pdf文档的Python自动化测试工程师核心知识点总结!

公众号里大部分资料都是面试时面试官必问的知识点,也包括了很多测试行业常见知识,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果你测试中有许多的困惑,那么我创建的软件测试技术交流群将会是你接触良师益友的有益社区,同行或许可以给你带来一些实际性的帮助与突破。群:902061117 你也想知道同行都在怎样致富吧!

如果对你有一点点帮助,各位的「点赞」就是小编创作的最大动力,我们下篇文章见!

好文推荐:

包装成1年工作经验的测试工程师,我给他的面试前的建议如下

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

“入职一年,那个被高薪挖来的自动化软件测试被劝退了。”

那个准点下班的人,比我先升职了…

自动化测试大总结
在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值