首页 > 编程语言 >崩溃!学了三年Python,这几道面试题还是答不好

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

时间:2022-09-19 09:22:13浏览次数:75  
标签:__ 面试题 函数 迭代 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/关注码同学公众号:自动化软件测试

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

标签:__,面试题,函数,迭代,Python,生成器,学了,排序,软件测试
From: https://www.cnblogs.com/testfan2019/p/16706601.html

相关文章

  • python网络爬虫常用解析器
    BeautifulSoupBeautifulSoup是一个HTML/XML的解析器,主要用于解析和提取HTML/XML数据。它基于HTMLDOM的,会载入整个文档,解析整个DOM树,因此时间和内存开销都会大很多,......
  • pythonbiji
     Python基础入门笔记(二)_Jaybo_的博客-CSDN博客Python基础入门笔记(一)-腾讯云开发者社区-腾讯云(tencent.com)......
  • python logging模块
    logging模块处理流程:分为几个模块:logger:最高层模块,用来输出loglogger.level来筛选loglogger.debug()/info()/warning()/error()等输出loghandler:经过logger......
  • python-装饰器
    装饰器什么是装饰器?装饰器本质上是一个Python函数或类,它可以让其他函数或类在不需要做任何代码修改的前提下增加额外功能,装饰器的返回值也是一个函数/类对象。装饰器......
  • python爬虫入门笔记(随便记记,持续更新)
    准备:安装库pip3installbeautifulsoup4apt-getinstallpython-lxmlpip3installparse 一、获得从baidu.com中能够跳转到的页面(的链接)importrequests......
  • Python 类
    Class对象类对象支持两种操作:属性引用和实例化。实例对象实例对象有两种有效的属性名称:数据属性和方法。数据属性,不需要声明,像局部变量一样,将在第一次被赋值时产生方......
  • Python面向对象+unittest框架(存档)
    面向对象基本的介绍面向对象是一个编程思想(写代码的套路)编程思想:1.面向过程2.面向对象以上两种都属于写代码的套路(方法),最终目的都是为了将代码书写出来,只不过过......
  • python实训2
    test3-1print("今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?\n")number=int(input("请输入您认为符合条件的数:"))ifnumber%3==2andnumber%5==3andnumb......
  • 【利用Python进行edf格式的肌电处理的一些过程记录】-2022/09
    (1)获取原肌电数据,生成图片1.使用的库:mne2.肌电数据的格式:edfdefShow_Information(file):raw=read_raw_edf(file,preload=True)info=raw.info......
  • 0-2 测试面试题- 测试方法_压力测试怎么测_设计朋友圈点赞_HTTP报文段_HTTP请求报文_T
    面试题及解析答案来自牛客网https://www.nowcoder.com/exam/interview/5了解什么测试方法?测试的方法?写测试用例的方法?分析测试点的方法?测试是个大工程,很多环节,具......