Python语言不仅是开发界的宠儿,也是测试界不可或缺的一个脚本语言,因为其语法简单,书写方便而受到广大测试人员的喜欢。不仅可以做自动化测试,而且还可以进行测试平台的开发,利用其flask和django的框架。
既然python也是测试界不可获取的一部分了,当然面试也多少会问到,那么就分享2道比较经典的面试题。
01、迭代器,生成器,装饰器
回答——
生成器:在Python中, 一边循环一边计算的机制, 称为生成器:generator 创建生成器: G = ( x*2 for x in range(5))可以通过 next(生成器) 函数获得生成器的下一个返回值 没有更多的元素时, 抛出 StopIteration 的异常生成器也可以使用for循环,因为生成器也是可迭代对象
迭代器:拥有__iter__方法和__next__方法的对象就是迭代器。接下来科普几个概念,第一迭代:迭代是访问集合元素的一种方式,可以将某个数据集内的数据一个挨着一个取出来,就叫做迭代,第二个是可迭代协议,协议就是互相规定好的,可迭代协议的定义非常简单,就是内部实现了__iter__方法和__next__方法。
装饰器:装饰器的本质就是闭包函数,那么什么是闭包呢,在 python 中创建一个闭包一般有 3 个要求:
- 闭包函数必须有内嵌函数。
- 内嵌函数必须要引用外层函数的变量。
- 闭包函数返回内嵌函数的地址(函数名称)
如下图所以:
装饰器的作用:在不修改原函数及其调用方式的情况下对原函数功能进行扩展
02、简述python的垃圾回收机制
回答——
以对象引用计数为主标记清除和分带技术为辅的那么一种方式,如果内容中对象的引用计数为0,那么就代表对象被销毁,这个对象所占用的内存空间就会被释放出来。
03、使用你熟悉的语言去写一个冒泡排序
回答——
首先科普下冒泡排序,冒泡排序就是由于相邻元素相互比较大小的交换,间接导致相对于偏大的元素不断往后移动,最后形成升序的数列,是一种交换排序。
核心原则就是:判断前一个元素和后一个元素的大小,如果前一个元素大于后一个元素,那么就会前后交换位置。
转换成代码即时
如果li序列是li=[30,12,56,9,8,68,2]里面有7个数字,那么确定一个数的位置至少需要6次的比较。
最后的运行结果如下,可以确定最大一个数的位置。
这个li需要确认6个数字的位置,因为一共7个,后面6个数的位置都确定了,最前面的一个数的位置自然就确定了。所以需要循环以上操作6次,代码完善如下:
经过上面运行结果的考察,我们会发现,每次的后一次排序都是在前一次的排序基础上面进行的排序,也就是第一次排序需要比较6次大小,第二次排序已经确定好68的位置,所以只需要比较5次就可以,第三次排序在之前已经确定好了56和68的位置,那么只需要比较4次就可以了,依次类推最后一次只需要比较1次即可。
那么可以给原来的代码做如下优化:
结果跟之前一样,依然可以确定最后的排序结果,然后用函数进行最终的优化结果如下:
Python的面试题就分享到这了,大家有什么问题可以评论区留言。
最后: 欢迎大家关注公众号:【 伤心的辣条 】,领取一份300页pdf文档的Python自动化测试工程师核心知识点总结!
公众号里大部分资料都是面试时面试官必问的知识点,也包括了很多测试行业常见知识,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。
如果你测试中有许多的困惑,那么我创建的软件测试技术交流群将会是你接触良师益友的有益社区,同行或许可以给你带来一些实际性的帮助与突破。群:902061117 你也想知道同行都在怎样致富吧!
如果对你有一点点帮助,各位的「点赞」就是小编创作的最大动力,我们下篇文章见!
好文推荐
2021软件测试工程师面试题汇总(内含答案)-看完BATJ面试官对你竖起大拇指!