正值「金三银四」,职场中的你是在摩拳擦掌准备跳槽?还是想在疫情之下奋力守住这份工作?,我来为大家讲解一下关于软件测试必考笔试题目?跟着小编一起来看一看吧!
软件测试必考笔试题目
正值「金三银四」,职场中的你是在摩拳擦掌准备跳槽?还是想在疫情之下奋力守住这份工作?
在听过不少学员的面试问答,总结归纳了一些软件测试工程师常见的面试题,供大家参考。
有更多的面试题或面试中遇到的坑,欢迎补充分享。希望大家都能找到满意的工作,共勉之!
一. 计算机网络知识
HTTP 和 HTTPS 的区别
1. HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文,不安全,HTTPS使用了SSL/TLS协议进行了加密处理,相对更安全。
2. HTTP 和 HTTPS 使用连接方式不同,默认端口也不一样,HTTP是80,HTTPS是443。
3. HTTPS 由于需要设计加密以及多次握手,性能方面不如 HTTP
HTTP 常见的响应状态码
200 请求已成功,请求所希望的响应头或数据体将随此响应返回;
201 请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其 URI 已经随 Location 头信息返回;
202 服务器已接受请求,但尚未处理;
301 (永久移动) 请求的网页已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置;
302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求;
303 (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码;
304 (未修改) 自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容;
305 (使用代理) 请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理;
307 (临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求;
401 当前请求需要用户验证。如果当前请求已经包含了 Authorization 证书,那么 401 响应代表着服务器验证已经拒绝了那些证书;
403 服务器已经理解请求,但是拒绝执行它。与 401 响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交;
404 请求失败,请求所希望得到的资源未被在服务器上发现;
500 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现;
501 服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求;
502 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应;
503 由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复;
TCP 和 UDP 的区别
1. TCP传输控制协议,udp用户数据报协议;
2. TCP的目的是提供可靠的数据传输,并在相互进行通信的设备或服务之间保持一个虚拟连接。TCP在数据包接收无序、丢失或在交付期间被破坏时,负责数据恢复;
3. UDP 不一定提供可靠的数据传输。事实上,该协议不能保证数据准确无误地到达目的地,可能会出现丢包的情况;
TCP 为什么要进行3次握手而不是2次
为了实现可靠数据传输,TCP 协议的通信双方,都必须维护一个序列号,以标识发送出去的数据包中哪些是已经被对方收到的。
三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值的必经步骤。如果只是两次握手,至多只有连接发起方的起始序列号能被确认,另一方选择的序列号则得不到确认。
TCP 为什么要进行4次挥手而不是3次
当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。
但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
TCP挥手后为什么有time_wait
虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可能最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。
cookie和session的区别
1. cookie是一种客户端的状态管理技术,它存在于我们的客户端,保存的内容大小有一定的限制,时效性长,安全性级别相对较低。
2. session是属于服务端的状态管理技术,产生的session保留在服务器上,当值过多时,会给服务端带来压力,不过其时效性比cookie短。
HTTP 请求和响应的组成结构
1. HTTP请求报文:一个HTTP请求报文由请求行、请求头部、空行和请求数据4个部分组成;
2. HTTP响应报文:HTTP响应也由三个部分组成,分别是:状态行、消息报头、响应正文;
HTTP请求中的Post和Get区别
GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。
Get 将请求体放在头部,只发一次请求,Post 将请求体放在内部,需要发送两次请求
GET请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。URL的编码格式采用的是ASCII编码,而不是uniclde,也就是说所有的非ASCII字符都要编码之后再传输。
POST请求会把请求的数据放置在HTTP请求体中,上面的item=bandsaw就是实际的传输数据。因此,GET请求的数据会暴露在地址栏中,而POST请求则不会。
在HTTP规范中,没有对URL的长度和传输的数据大小进行限制。但是在实际开发过程中,对于GET,特定的浏览器和服务器对URL的长度有限制。因此,在使用GET请求时,传输数据会受到URL长度的限制。POST,由于不是URL传值,理论上是不会受限制的,但是实际上各个服务器会规定对POST提交数据大小进行限制,Apache、IIS都有各自的配置。
POST的安全性比GET的高。这里的安全是指真正的安全,比如,在进行登录操作,通过GET请求,用户名和密码都会暴露再URL上,因为登录页面有可能被浏览器缓存以及其他人查看浏览器的历史记录的原因,此时的用户名和密码就很容易被他人拿到了。除此之外,GET请求提交的数据还可能会造成Cross-site request frogery攻击。
前后端数据交互为什么用json
数据交互格式简单,易于读写;
数据体积小;
支持多语言交互,易于解析;
json处理速度快;
二、数据库知识
常用的数据库有哪些
mysql、oracle
MySQL外连接、内连接的区别?
1.内连接
连接的数据表相对应的匹配字段完全相等的连接。连接关键字是 inner join;
2.外连接
分为左外连接与右外连接、全连接。
左连接的结果集包括指定的左表全部数据与匹配的右表数据,右表中没匹配的全为空值.关键字 left join;
右连接的结果集包含指定的右表全部数据与匹配的左边数据,左边中没匹配的全为空值.关键字 right join;
SQL 常见多表查询语句编写
a为学生表,字段姓名、课程、编号
b为成绩表,字段编号、课程、成绩
查询所有学生的数学成绩,由高到低排序。
SELECT a.name, b.score FROM student a, grade b WHERE a.id = b.id AND kemu = '数学' ORDER BY score DESC;
测试在什么情况下会用到数据库
1.执行测试用例过程中,借助数据库验证数据的准确性与完整性;2.精确定位缺项时,有时需要到数据库查看数据的详细信息;3.针对某些特许的测试场景,需要利用数据库构建相关测试数据;4.应用软件升级时或搭建测试环境时需要用到数据库。
redis的数据类型有哪些?
String(字符串)
Hash(哈希):键值对集合
List(列表)
Set(集合):无序集合
Zset(sorted set:有序集合)
,