• 崩溃!学了三年Python,这几道面试题还是答不好


    每天进步一点点,关注我们哦,每天分享测试技术文章

    本文章出自【码同学软件测试】

    码同学公众号:自动化软件测试,领取资料可加:magetest

    码同学抖音号:小码哥聊软件测试

    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使用你熟悉的语言去写一个冒泡排序

    回答——

    首先科普下冒泡排序,冒泡排序就是由于相邻元素相互比较大小的交换,间接导致相对于偏大的元素不断往后移动,最后形成升序的数列,是一种交换排序

    核心原则就是:判断前一个元素和后一个元素的大小,如果前一个元素大于后一个元素,那么就会前后交换位置。

    转换成代码即时

    免费领取码同学软件测试课程笔记+超多学习资料+完整视频+面试题,可加微信:magetest

    如果li序列是li=[30,12,56,9,8,68,2]里面有7个数字,那么确定一个数的位置至少需要6次的比较。

    最后的运行结果如下,可以确定最大一个数的位置。

    这个li需要确认6个数字的位置,因为一共7个,后面6个数的位置都确定了,最前面的一个数的位置自然就确定了。所以需要循环以上操作6次,代码完善如下:

    经过上面运行结果的考察,我们会发现,每次的后一次排序都是在前一次的排序基础上面进行的排序,也就是第一次排序需要比较6次大小,第二次排序已经确定好68的位置,所以只需要比较5次就可以,第三次排序在之前已经确定好了56和68的位置,那么只需要比较4次就可以了,依次类推最后一次只需要比较1次即可。

    那么可以给原来的代码做如下优化:

    结果跟之前一样,依然可以确定最后的排序结果,然后用函数进行最终的优化结果如下:

    Python的面试题就分享到这了,大家有什么问题可以评论区留言。

    免费领取码同学软件测试课程笔记+超多学习资料+学习完整视频 ☞ 可加:magetest/关注码同学公众号:自动化软件测试

    本文著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 相关阅读:
    ImportError: cannot import name 'render_to_response' 解决方法
    python 操作zookeeper详解
    Appium swipe实现屏幕滑动
    Appium 环境配置
    pytest 常用方法介绍
    Allure+pytest 生成测试报告
    Pytest 使用简介
    python 实现线程之间的通信
    python 使用 thrift 教程
    nginx 配置简单反向代理
  • 原文地址:https://www.cnblogs.com/testfan2019/p/16706601.html
Copyright © 2020-2023  润新知