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


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

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

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

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

     

    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,那么就代表对象被销毁,这个对象所占用的内存空间就会被释放出来。

     

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

     

    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的面试题就分享到这了,大家有什么问题可以评论区留言。

     

    END

    免费领取码同学软件测试课程笔记+超多学习资料+学习完整视频,可以可加微信:Matongxue_8/关注我们公众号哦:自动化软件测试

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

  • 相关阅读:
    父类引用指向子类对象详解
    词尾的-sion和-tion的发音规则
    att&ack学习笔记6
    att&ack框架学习笔记5
    att&ack学习笔记4
    att&ck框架学习笔记3
    att&ck学习笔记2
    att&ck学习笔记1
    kerberos系列之spark认证配置
    kerberos系列之kerberos安装
  • 原文地址:https://www.cnblogs.com/testfan2019/p/16015931.html
Copyright © 2020-2023  润新知