最新真实软件测试面试题分享,收藏了还怕进入不了大厂?

前言

笔者很久没有给大家聊面试题目,今天呢笔者就来和大家聊聊面试题,希望可以帮助到大家,废话不多说了咱们直接进入主题哟。

在这里插入图片描述

一、计算机基础

1、TCP/IP五层模型(从下往上):

物理层:保证原始数据可在各种物理媒体上传输,主要应用:集线器

数据链路层:传输单位为帧,主要应用:交换机

网络层:传输单位为数据报,主要应用:路由器,保证端到端系统之间通信正常,路径选择、路由及逻辑寻址。主要协议:IP协议、ICMP协议(ping命令即为该协议)、ARP协议(IP地址转为MAC地址)、RARP协议(MAC地址转为IP地址)

传输层:主要应用:网关,保证端口到端口之间的可靠/不可靠的传输,主要协议:TCP\UDP

应用层:传输单位为报文,主要协议:HTTP\FTP等

2、IP地址:

A类地址:第一个字节为网络号,地址范围为0-127

B类地址:前两个字节为网络号,地址范围为128-191

C类地址:前三个字节为网络号,地址范围为192-223

3、子网掩码:1表示网络位,0表示主机位

4、http和https的区别

http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
http是80,https是443,http连接是无状态连接(每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。而cookie和session可以保持http连接状态),HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全

5、cookie和session的区别:

cookie存储在浏览器上,session存储在服务器上,更安全
cookie可在浏览器明文查看,session通过服务器加密是一串无序字符串
cookie有两种:

一种存在于浏览器的进程中,一种存在于硬盘上。每个session有一个唯一的sessionid,这个id存放在浏览器进程中的cookie中。当关闭浏览器后cookie消失了,sessionid也消失了,那服务器端的session也消失了。但实际服务器不知道浏览器是否关闭,因此服务器会设置一个session失效时间,到时间后将对应的session删除。

每次浏览器被关闭后再次打开访问同一个请求,都是不同的session。

当勾选自动登录,其实是将sessionid存放在了硬盘cookie中,这样下次可以免登录

6、tcp和udp区别

udp是不可靠、无连接,tcp是可靠,有连接,三次握手,四次挥手。udp比tcp传播速度更快
udp可以一对多或者多对多连接,tcp是一对一连接
TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证(tcp支持重传,而且也有序列号保证数据顺序)

7、进程与线程区别:

进程是资源分配的最小单位,计算机把资源分配给进程,同个进程下的线程间共享资源
一个进程可以包含多个线程,一个线程只能在一个进程中
一个进程内即使有很多线程,也只运行在一个cpu内,多核cpu上可以运行多个进程,提高速度
进程的切换开销比线程的大很多,因为每个进程有自己的虚拟地址空间,同个进程下的线程则是共享该进程的虚拟地址空间。进程切换需要切换虚拟地址,虚拟地址映射为物理地址通过页表实现,进程切换页表也切换,导致缓存失效,映射物理地址速率就变慢,而线程不需要切换地址空间
线程间的通信方式有4种:wait/notify(等待唤醒)、volatile、CountDownLatch、CyclicBarrier

8、tcp怎么保证可靠性传输:

校验和:保持首部和数据的校验和
序列号:使用序列号保证数据传输的顺序性
支持重传
停止等待协议:每发完一个分组就停止等待对端确认

9、ping命令不通的原因:

本机或目的机子未联网,报time_out超时
网络很差超时
对端有防火墙阻止Ping

11、get和post区别:

get一般用于从服务器获取数据,post用于向服务器提交数据
get表单提交参数直接明文显示在url中,post提交的数据在body中,因此post比get更安全

12、http状态码:

1xx:信息性状态码
2xx:成功状态码
3xx:重定向
4xx:客户端错误状态码
5xx:服务器错误状态码

13、重定向:

在 HTTP 协议中,重定向操作由服务器通过发送特殊的响应(即 redirects)而触发。HTTP 协议的重定向响应的状态码为 3xx 。浏览器在接收到重定向响应的时候,会采用该响应提供的新的 URL ,并立即进行加载,大多数情况下,除了会有一小部分性能损失之外,重定向操作对于用户来说是不可见的。

14、TCP的重传机制:

超时重传:TCP协议要求在发送端每发送一个报文段,就启动一个定时器并等待确认信息;接收端成功接收新数据后返回确认信息。若在定时器超时前数据未能被确认,TCP就认为报文段中的数据已丢失或损坏,需要对报文段中的数据重新组织和重传。这种方式会增加端到端的时延
快速重传:报文段1成功接收并被确认ACK 2,接收端的期待序号为2,当报文段2丢失,报文段3失序到来,与接收端的期望不匹配,接收端重复发送冗余ACK 2。这样,如果在超时重传定时器溢出之前,接收到连续的三个重复冗余ACK(其实是收到4个同样的ACK,第一个是正常的,后三个才是冗余的),发送端便知晓哪个报文段在传输过程中丢失了,于是重发该报文段,不需要等待超时重传定时器溢出,大大提高了效率。这便是快速重传机制。

二、Python

1、python迭代器和生成器区别:

1.迭代器是一种访问集合元素的方式,只能往前访问不能后退,迭代器可以记住遍历的位置

使用iter(obj)可生成一个迭代器对象,使用next(迭代器对象)可遍历迭代器中的元素,也可以for语句遍历。字符串,列表或元组对象都可用于创建迭代器。注:每次调用next()方法只会输出一个值

2.使用了yield关键字的函数为生成器函数,调用生成器函数返回的是迭代器对象

2、python是动态语言,动态语言和静态语言区别:

动态语言无需申明变量类型,运行时才确定数据类型的语言,如python,js等
静态语言需要先申明变量类型,如java\c\c++

3、python装饰器:

当一个方法有装饰器修饰时,首先会将该方法当作参数传入装饰器函数中执行,再执行该方法。

4、python2和python3的区别:

python2的字符串编码有两类(unicode【字符串】和str【字节】),unicode在python3中改为str,python2的str在python3中改为byte
python2可以使用print ‘hi’打印,python3必须使用小括号包含:print(‘hi’)
Python2中使用ascii编码,Python3中使用uft-8编码
python3新增了set集合

5、 python可变与不可变类型区别:

可变表示值变,但是指向的内存地址不变;不可变表示值变,指向的内存地址也变

tuple 整型 字符串都为不可变类型

list dict set都为可变类型

tuple中嵌套list或者dict,dict和list的值都可变,但是tuple的值不可变。

6、浅拷贝与深拷贝与赋值:

赋值表示指向同一个地址,任何一个变都会变。

浅拷贝:嵌套内的原值改变,新值也变。原值改变,新值不变

深拷贝:嵌套内的原值改变,新值不变。原值改变,新值不变

7、python垃圾回收机制,python进程与线程

8、python的列表和元组的区别以及其他Python基础

三、数据库

1、嵌套查询需关注:

最外层的为最终的结果,再根据条件一层一层嵌套
嵌套查询每次只查找一个表

2、内连接、左外连接、右外连接:

写法:from table_a inner/left/right join table_b on 关联两个表的条件。
三个连接区别:内连接只显示两表中有关联(符合条件)的数据;左连接显示左表所有数据,右表没有对应的数据用NULL补齐,右表多余的数据删除;右连接显示右表所有数据,左表没有对应的数据用NULL补齐,左表多余的数据删除

3、group by的分组字段要与select的字段一致,除去使用聚合函数的字段

group by后可以跟having对分组后的数据再进行筛查
delete table where xxx,update table set xxx
模糊查询用like,不匹配用is not
sum和count区别:sum用于统计值的总和,count用于统计行数即记录数

4、索引(用户不可见,主键默认为索引):

创建索引:create index 索引名称 on table_name(column_name)
根据索引查询:select * from tabel_name where column_name=‘xxx’
为某一列创建索引,搜索该列的值的时候可以提高查询速度,但是索引太多将会影响更新和插入的速度,因为它同样需要更新每个索引文件。

5、主键,外键和索引

主键的值唯一,不能为空,一个表只能有一个主键。

外键的值可以不唯一,可以为空,一个表可以有多个外键,一个表的外键通常是另一隔壁表的主键。

索引的值不能唯一,可以为空,一个表可以有多个索引

6、TOP 子句用于规定要返回的记录的数目,需要现场写sql语句,多为连表查询

四、Linux

1、vim下的指令参数:

nx:连续向后删除n个字符
dd:删除游标所在的那一行
ndd:删除光标所在的向下n行
yy:复制光标所在的那一行
nyy:复制光标所在的向下n行

2、python反转字符串

切片: str【: : -1】
list=list(str) list. reverse() ’ '. join(list)

3、linux查看进程命令:

ps -ef | grep 查找需要的进程

top 列出各个进程的资源占用情况

Linux找到被占用的端口号进程并结束:

netstat -tunl|grep 端口号 找到进程号后kill -9 进程号(-9强制删除)

五、Selenium

定位元素方法有id,name,class_name,tag_name,linktext,xpath,css

1、driver.quit()关闭浏览器,driver.close()仅关闭当前页面

2、等待分为强制等待(必须等待多久),显示等待(直到某个元素出现才操作,除非超时)和隐式等待(为浏览器对象创建一个等待时间,得不到某个元素就等待,直至拿到)

3、isDisplayed()方法可以判断某个元素是否显示

4、driver.switchTo().alert()切换到web弹窗

5、driver.window_handles()可查看当前所有句柄,driver.switch_to.window(index)切换句柄


1.软件测试基础题(250题)

在这里插入图片描述
在这里插入图片描述

2.Linux(55题)

在这里插入图片描述

在这里插入图片描述

3.MySQL(80题)

在这里插入图片描述
在这里插入图片描述

4.web测试(10题)

在这里插入图片描述
在这里插入图片描述

5.接口测试(36题)

在这里插入图片描述

在这里插入图片描述

6.APP测试(12题)

在这里插入图片描述
在这里插入图片描述

7.Python(100题)

在这里插入图片描述
在这里插入图片描述

8.Selenium(40题)

在这里插入图片描述
在这里插入图片描述

9.LordRunner相关(80题)

在这里插入图片描述
在这里插入图片描述

10.计算机网络(26题)

在这里插入图片描述
在这里插入图片描述

11.人力资源(55题)

在这里插入图片描述
在这里插入图片描述

现在我邀请你进入我们的软件测试学习交流群:746506216】,备注“入群”, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路。

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一 键三连哦!

软件测试工程师自学教程:

这才是2022最精细的自动化测试自学教程,我把它刷了无数遍才上岸字节跳动,做到涨薪20K【值得自学软件测试的人刷】

接口性能测试 — 软件测试人必会618实战场景分析

软件测试工程师月薪2W以上薪资必学技能 — Python接口自动化框架封装.

美团面试真题_高级测试25K岗位面试 — 软件测试人都应该看看

测试开发之全面剖析自动化测试平台 — 软件测试人的必经之路

软件测试必会_Jmeter大厂实战 — 仅6步可实现接口自动化测试

Jmeter实战讲解案例 — 软件测试人必会

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_67695717/article/details/126109694