测试工程师python常见面试题_关于python工程师的面试题(一)

一、如何提高python的运行效率?

答:

使用生成器;关键代码使用外部功能,针对循环的优化-尽量避免在循环中访问变量的属性。

二、什么是生成器?

答:

我们创建列表的时候,受到内存限制,容量肯定是有限的,而且不可能全部给他一次枚举出来。这里可以使用列表生成式,但是它有一个致命的缺点就是定义即生成,非常的浪费空间和效率。

所以,如果列表元素可以按照某种算法推算出来,那我们可以在循环的过程中不断推算出后续的元素,这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。

要创建一个 generator ,最简单的方法是改造列表生成式

[x*x for x in range(10)] # 列表推导式 --> (x * x for x in range(10)) # 生成器

三、什么是可迭代对象?

答:

简单的来理解就是可以使用for循环遍历的对象。比如常见的list、set和dict。

可以使用测试对象是否是可迭代:

from collections import Iterable

isinstance(对象,Iterable)

四、什么是迭代器?

答:

迭代器是一个可以记住遍历的位置的对象。

迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

迭代器有两个基本的方法:iter() 和 next()。

五、什么是装饰器?

答:

装饰器(Decorator)是python中最吸引人的特性,装饰器本质上还是一个函数,它可以让已有的函数不做任何改动的情况下增加功能。

六、生成器、迭代器和可迭代对象的区别和应用?

答:

能使用for循环遍历的叫可迭代对象,能使用next方法的就是迭代器,生成器是特殊的迭代器。

七、python中yield的用法?

答:

yield简单来说是一个生成器,这样函数记住上次返回时在函数中的位置,对于生成器第二次或n次调用跳转至该函数。

八、python中如何进行内存管理的?

答:

垃圾回收、内存池机制

九、描述数组,链表,队列,堆栈的区别?

答:

数组和链表时存储方式的概念,数组在连续的空间中存储数据,链表在非连续的空间中存储数据

队列和堆栈时描述数据存取的方法概念,队列是先进先出,而堆栈是后进后出,队列和堆栈可以用链表来实现,也可以用数组来实现。

十、如何实现0-100的和?

答:

sum(range(0,101))

十一、请说几个python的标准库

答:

os:操作系统相关联的函数

datetime:日期时间

sys:命令行参数

re:正则匹配

math:数学运算

十二、字典如何删除键和合并两个字典的?

答:

dict_first = {'name': 'wangwu', 'age': 20}

del.dict_first['name'] # 删除键

dict_second['gender': 'female'}

dict_first.update(dict_second) # 字典合并

san

十三、谈一谈python中的GIL

答:

GIL是python中的全局解释其所。

每个线程在执行的过程都需要先获取GIL,保证同一时刻只有一个线程可以执行代码。

1、什么时候释放GIL锁?

答:

① 时间片耗尽(cpu时间)

② 任务遇到I/O等待

③ 任务结束后

十四、GIL和互斥锁的区别

答:

GIL是全局解释器锁,是解释器层面的,不可控的。

互斥锁是代码层面的锁,是可控的

GIL和互斥锁都是解决共享资源竞争的问题

十五、python中的可变类型与不可变类型

答:

可变类型:在原来的内存地址上修改元素,比如:列表字典

不可变类型:不会在原来的内存地址上修改元素,而是指向了一个新的内存引用,比如整型、字符串、元组

十六、break和continue的区别

答:

continue是跳过本次循环,继续执行下一次循环

break是结束整个循环

十七、对不定长参数的理解?

答:

*args:可以接收任意多个实参,用元组类型保存数据。

**kwargs:可以接收任意多个的命名参数,用子弹类型保存

十八、对缺省参数的理解?

答:

在调用函数时,缺省参数的值如果没有传入,则被认为是默认值,缺省参数一定要位于参数列表的最后面。

十九、什么是lambda函数?

答:

Lambda函数能接收任何数量的参数但只能返回一个表达式的值

匿名函数不能直接调用print,因此lambda需要一个表达式

二十、read、readline和readlines的区别

答:

read():读取整个文件

read(num):读取文件中的数据长度,单位为字节

readline():读取一行

readlines():读取所有内容并返回一个列表

二十一、上下文管理器了解吗?

答:

with有两个方法,一个是enter,它主要负责上下文的准备工作,一般是打开文件,准备环境;另一个是exit主要负责善后工作,比如关闭文件,一些回收机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值