来了~来了~它真的来了,2020大厂软件测试面试题
01浮点数运算
◆ 题目
判断浮点数的运行结果是否相等:
◆ 题目解析:
本题考查的是计算机的浮点运算知识点。
不仅是python语言,其他的编程语言也面临同样的问题:
在进行浮点运算的时候,10 进制表示方式会丢掉它的精度,造成运算结果与实际结果不符合。
这是由于底层 CPU 和运算标准通过自己的浮点单位去执行算术时的特征决定的。看似有穷的小数, 在计算机的二进制表示里却是无穷的。
所以在进行高进度浮点运算的时候一定要注意,尤其是自动化测试过程中需要进行断言非常容易出错。
◆ 题目答案:
断言失败,抛出 AssertionError 错误。
◆ 解决方案:
使用Decimal模块:
Decimal() 可以维持浮点数的精度,在金融领域和测试领域等精度要求高的行业有非常大的作用。
但是一定要注意: Decimal() 传的参数一定要是字符串类型,如果是数据类型会再次丢掉精度。
02 列表的扁平化和降维
◆ 题目
有一个二维列表,降成普通的一维的。
比如说华测高级班都会有学员分组,我们想通过分组信息去获取所有的学员名称。
◆ 方法一
最简单的方式可以通过for循环的方式一一提取:
◆ 方法二
但是在面试的时候可能会加一些限制,比如让你用一行代码实现,这个时候就需要对python基础有进一步的理解了。
比如说使用sum函数:
非常简单就实现了同样的功能。
sum函数为什么可以做到呢?先看一个简单的例子:
得到的结果是6。
也就是说,sum函数会把一个列表里面的每个元素相加。
但是sum函数还可以有第二个参数:开始值,默认为0,所以上述过程其实可以写成:
依据同样的道理,可以对列表进行降维操作:
精选2019大厂软件测试面试题
◆ 方法三
通过列表推导式也可以方便的解决:
03 多重继承
多重继承经常用来出面试题。
在这个考题中,C类的父类A和B都实现了run方法,那在C的对象里到底是优先调用哪一个呢?
答案是:a running
◆ 菱形问题
他们的继承关系图可以简化如下,这个问题又称为菱形问题或者钻石问题:
答案是:c running
如果我们不让C类继承A呢?
他们的继承关系图可以简化如下,可以简称为v型问题:
答案会变成a running
◆ 题目解析
具体原因是 python 的继承会遵循特定的顺序,优先级排在前面的,子类会优先使用。
怎么快速查看这种继承顺序呢?通过D.__mro__去查看
比如在菱形问题上,d的顺序是这样的:
(, , , , )
D 排在最前面,如果 D 定义了 run 方法,就会被优先使用,然后是 B, 然后是C, 然后是 A, 最后是 object 基类。
而在V行问题上,d的顺序又变成了这样:
(, , , , )
A和C互换了顺序。造成2个题目的答案不一致。
结束语:感谢各位测试员的阅读,希望大家新年都能获得一份高薪的offer。需要更多Python自动化测试视频学习资料的可以加群 313782132 私信我哦。
最后:
凡事要趁早,特别是技术行业,一定要提升技术功底,丰富自动化项目实战经验,这对于你未来几年职业规划,以及测试技术掌握的深度非常有帮助。