某上市公司自动化测试面试题泄露了!

一、浮点数运算

◆ 题目

判断浮点数的运行结果是否相等:

某上市公司自动化测试面试题泄露了

 

◆ 题目解析:

本题考查的是计算机的浮点运算知识点。

不仅是python语言,其他的编程语言也面临同样的问题:

在进行浮点运算的时候,10 进制表示方式会丢掉它的精度,造成运算结果与实际结果不符合。

这是由于底层 CPU 和运算标准通过自己的浮点单位去执行算术时的特征决定的。看似有穷的小数, 在计算机的二进制表示里却是无穷的。

所以在进行高进度浮点运算的时候一定要注意,尤其是自动化测试过程中需要进行断言非常容易出错。

◆ 题目答案:

断言失败,抛出 AssertionError 错误。

◆ 解决方案:

使用Decimal模块:

某上市公司自动化测试面试题泄露了

 

Decimal() 可以维持浮点数的精度,在金融领域和测试领域等精度要求高的行业有非常大的作用。

但是一定要注意: Decimal() 传的参数一定要是字符串类型,如果是数据类型会再次丢掉精度。

某上市公司自动化测试面试题泄露了

 

二、列表的扁平化和降维

◆ 题目

有一个二维列表,降成普通的一维的。

比如说柠檬班都会有学员分组,我们想通过分组信息去获取所有的学员名称。

某上市公司自动化测试面试题泄露了

 

◆ 方法一

最简单的方式可以通过for循环的方式一一提取:

某上市公司自动化测试面试题泄露了

 

◆ 方法二

但是在面试的时候可能会加一些限制,比如让你用一行代码实现,这个时候就需要对python基础有进一步的理解了。

比如说使用sum函数:

某上市公司自动化测试面试题泄露了

 

非常简单就实现了同样的功能。

sum函数为什么可以做到呢?先看一个简单的例子:

某上市公司自动化测试面试题泄露了

 

得到的结果是6。

也就是说,sum函数会把一个列表里面的每个元素相加。

但是sum函数还可以有第二个参数:开始值,默认为0,所以上述过程其实可以写成:

某上市公司自动化测试面试题泄露了

 

依据同样的道理,可以对列表进行降维操作:

某上市公司自动化测试面试题泄露了

 

◆ 方法三

通过列表推导式也可以方便的解决:

某上市公司自动化测试面试题泄露了

 

三、多重继承

某上市公司自动化测试面试题泄露了

 

多重继承经常用来出面试题。

在这个考题中,C类的父类A和B都实现了run方法,那在C的对象里到底是优先调用哪一个呢?

答案是:a running

◆ 菱形问题

某上市公司自动化测试面试题泄露了

 

他们的继承关系图可以简化如下,这个问题又称为菱形问题或者钻石问题:

某上市公司自动化测试面试题泄露了

 

答案是:c running

如果我们不让C类继承A呢?

某上市公司自动化测试面试题泄露了

 

他们的继承关系图可以简化如下,可以简称为v型问题:

某上市公司自动化测试面试题泄露了

 

答案会变成a running

◆ 题目解析

具体原因是 python 的继承会遵循特定的顺序,优先级排在前面的,子类会优先使用。

怎么快速查看这种继承顺序呢?通过D.__mro__去查看

比如在菱形问题上,d的顺序是这样的:

(<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>)

D 排在最前面,如果 D 定义了 run 方法,就会被优先使用,然后是 B, 然后是C, 然后是 A, 最后是 object 基类。

而在V行问题上,d的顺序又变成了这样:

(<class '__main__.D'>, <class '__main__.B'>, <class '__main__.A'>, <class '__main__.C'>, <class 'object'>)

A和C互换了顺序。造成2个题目的答案不一致。

推荐一个软件测试学习交流群:785128166,群里有分享的视频,面试指导,测试资料,还有思维导图、群里有视频,都是干货的,你可以下载来看。主要分享测试基础、接口测试、性能测试、自动化测试、TestOps架构、Jmeter、LoadRunner、Fiddler、MySql、Linux、简历优化、面试技巧以及大型测试项目实战视频资料。合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

公众号:程序员二黑, 关注后免费领取海量学习资料。

好东西要和朋友一起分享哦
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值