这30道Python自动化必备面试题(建议收藏)!!!
前言
作为前企鹅的自动化测试经理及面试官之一想和大家谈一谈,当我们去到各个公司面试时,首先我们认为自己的知识储备、能力、经验等方面都是没有问题的,但是为什么我们面试过后却没有收到offer,为什么???所以试着回想一下在面试过程中是否抓到了面试官的需求点,到底如何回答才能打动面试官? 针对一系列问题我整理了很多的面试资料希望能帮助到大家,有兴趣的朋友可以找我领取或者加入资料群领取! 领取资料点这里!!!
目录
- 前言
- 1、什么是Python?为什么它会如此流行?
- 2、为什么Python执行速度慢,我们如何改进它?
- 3、Python有什么特点?
- 4、Python有哪些应用?
- 5、Python的局限性?
- 6、Python代码是如何执行的?
- 7、如何在Python中管理内存?
- 8、解释Python的内置数据结构?
- 9、解释//、%、* *运算符?
- 10、Python中的单引号和双引号有什么区别?
- 11、Python中append,insert和extend的区别?
- 12、break、continue、pass是什么?
- 13、区分Python中的remove,del和pop?
- 14、什么是switch语句。如何在Python中创建switch语句?
- 15、举例说明Python中的range函数?
- 16、==和is的区别是?
- 17、如何更改列表的数据类型?
- 18、Python中注释代码的方法有哪些?
- 19、!=和is not运算符的区别?
- 20、Python是否有main函数?
- 21、什么是lambda函数?
- 22、iterables和iterators之间的区别?
- 23、 Python中的Map Function是什么?
- 24、解释 Python中的Filter?
- 25、解释Python中reduce函数的用法?
- 26、什么是pickling和unpickling?
- 27、解释*args和**kwargs?
- 28、解释re模块的 split、sub、subn方法 ?
- 29、Python中的生成器是什么?
- 30、如何使用索引来反转Python中的字符串?
在过去的2020年,Python赢得了年度TIOBE编程语言奖,成为 过去一年最受欢迎的编程语言。在数据科学和机器学习等领域中,被广泛使用。
这里给大家整理了30道Python面试题,还有相对应的答案,来帮助大家更好的了解和学习Python。
1、什么是Python?为什么它会如此流行?
Python是一种解释的、高级的、通用的编程语言。
Python的设计理念是通过使用必要的空格与空行,增强代码的可读性。
它之所以受欢迎,就是因为它具有简单易用的语法。
2、为什么Python执行速度慢,我们如何改进它?
Python代码执行缓慢的原因,是因为它是一种解释型语言。它的代码在运行时进行解释,而不是编译为本地语言。
为了提高Python代码的速度,我们可以使用CPython、Numba,或者我们也可以对代码进行一些修改。
-
减少内存占用。
-
使用内置函数和库。
-
将计算移到循环外。
-
保持小的代码库。
-
避免不必要的循环
3、Python有什么特点?
-
易于编码
-
免费和开源语言
-
高级语言
-
易于调试
-
OOPS支持
-
大量的标准库和第三方模块
-
可扩展性(我们可以用C或C++ 编写Python代码)
-
用户友好的数据结构
4、Python有哪些应用?
-
Web开发
-
桌面GUI开发
-
人工智能和机器学习
-
软件开发
-
业务应用程序开发
-
基于控制台的应用程序
-
软件测试
-
Web自动化
-
基于音频或视频的应用程序
-
图像处理应用程序
5、Python的局限性?
-
速度
-
移动开发
-
内存消耗(与其他语言相比非常高)
-
两个版本的不兼容(2,3)
-
运行错误(需要更多测试,并且错误仅在运行时显示)
-
简单性
6、Python代码是如何执行的?
首先,解释器读取Python代码并检查是否有语法或格式错误。
如果发现错误,则暂停执行。如果没有发现错误,则解释器会将Python代码转换为等效形式或字节代码。
然后将字节码发送到Python虚拟机(PVM),这里Python代码将被执行,如果发现任何错误,则暂停执行,否则结果将显示在输出窗口中。
7、如何在Python中管理内存?
Python内存由Python的私有headspace管理。
所有的Python对象和数据结构都位于一个私有堆中。私用堆的分配由Python内存管理器负责。
Python还内置了一个的垃圾收集器,可以回收未使用的内存并释放内存,使其可用于headspace。
8、解释Python的内置数据结构?
Python中主要有四种类型的数据结构。
列表:列表是从整数到字符串甚至另一个列表的异构数据项的集合。列表是可变的。列表完成了其他语言中大多数集合数据结构的工作。列表在[ ]方括号中定义。
例如:a = [1,2,3,4]
集合:集合是唯一元素的无序集合。集合运算如联合|,交集&和差异,可以应用于集合。集是不可变的。用于表示一个集合。
例如:a = {1,2,3,4}
元组:Python元组的工作方式与Python列表完全相同,只是它们是不可变的。用于定义元组。
例如:a =(1,2,3,4)
字典:字典是键值对的集合。它类似于其他语言中的hash map。在字典里,键是唯一且不可变的对象。
例如:a = {‘number’:[1,2,3,4]}
9、解释//、%、* *运算符?
//(Floor Division)-这是一个除法运算符,它返回除法的整数部分。
例如:5 // 2 = 2
%(模数)-返回除法的余数。
例如:5 % 2 = 1
**(幂)-它对运算符执行指数计算。a ** b表示a的b次方。
例如:5 ** 2 = 25、5 ** 3 = 125
10、Python中的单引号和双引号有什么区别?
在Python中使用单引号(‘ ‘)或双引号 (” “)是没有区别的,都可以用来表示一个字符串。
这两种通用的表达方式,除了可以简化程序员的开发,避免出错之外,还有一种好处,就是可以减少转义字符的使用,使程序看起来更简洁,更清晰。
11、Python中append,insert和extend的区别?
append:在列表末尾添加新元素。
insert:在列表的特定位置添加元素。
extend:通过添加新列表来扩展列表。
numbers = [ 1, 2, 3, 4, 5]
numbers.append( 6)
print(numbers)
[ 1, 2, 3, 4, 5, 6]
##insert(position,value)
numbers.insert( 2, 7)
print(numbers)
[ 1, 2, 7, 4, 5, 6]
numbers.extend([ 7, 8, 9])
print(numbers)
[ 1, 2, 7, 4, 5, 6, 7, 8, 9]
numbers.append([ 4, 5])
[ 1, 2, 7, 4, 5, 6, 7, 8, 9,[ 4, 5]]
12、break、continue、pass是什么?
break:在满足条件时,它将导致程序退出循环。
continue:将返回到循环的开头,它使程序在当前循环迭代中的跳过所有剩余语句。
pass:使程序传递所有剩余语句而不执行。
13、区分Python中的remove,del和pop?
remove:将删除列表中的第一个匹配值,它以值作为参数。
del:使用索引删除元素,它不返回任何值。
pop:将删除列表中顶部的元素,并返回列表的顶部元素。
numbers = [ 1, 2, 3, 4, 5]
numbers.remove( 5)
[ 1, 2, 3, 4]
delnumbers[ 0]
[ 2, 3, 4]
numbers.pop
4
14、什么是switch语句。如何在Python中创建switch语句?
switch语句是实现多分支选择功能,根据列表值测试变量。
switch语句中的每个值都被称为一个case。
在Python中,没有内置switch函数,但是我们可以创建一个自定义的switch语句。
switcher = {
1: “January”,
2: “February”,
3: “March”,
4: “April”,
5: “May”,
6: “June”,
7: “July”,
8: “August”,
9: “September”,
10: “October”,
11: “November”,
12: “December”
}
month = int(input)
print(switcher.get(month))
3
march
15、举例说明Python中的range函数?
range:range函数返回从起点到终点的一系列序列。
range(start, end, step),第三个参数是用于定义范围内的步数。
#number
fori inrange( 5):
print(i)
0, 1, 2, 3, 4
#(start, end)
fori inrange( 1, 5):
print(i)
1, 2, 3, 4
#(start, end, step)
fori inrange( 0, 5, 2):
print(i)
0, 2, 4
16、==和is的区别是?
比较两个对象或值的相等性。
is运算符用于检查两个对象是否属于同一内存对象。
lst1 = [ 1, 2, 3]
lst2 = [ 1, 2, 3]
lst1 == lst2
True
lst1 islst2
False
17、如何更改列表的数据类型?
要将列表的数据类型进行更改,可以使用tuple或者set。
lst = [ 1, 2, 3, 4, 2]
#更改为集合
set(lst) ## {1,2,3,4}
#更改为元组
tuple(lst) ## (1,2,3,4,2)
18、Python中注释代码的方法有哪些?
在Python中,我们可以通过下面两种方式进行注释。
- 三引号”’,用于多行注释。
- 单井号#,用于单行注释。
19、!=和is not运算符的区别?
!=如果两个变量或对象的值不相等,则返回true。
is not是用来检查两个对象是否属于同一内存对象。
lst1 = [ 1, 2, 3, 4]
lst2 = [ 1, 2, 3, 4]
lst1 != lst2
False
lst1 isnotlst2
True
20、Python是否有main函数?
是的,它有的。只要我们运行Python脚本,它就会自动执行。
21、什么是lambda函数?
Lambda函数是不带名称的单行函数,可以具有n个参数,但只能有一个表达式。也称为匿名函数。
a = lambdax, y:x + y
print(a( 5, 6))
11
22、iterables和iterators之间的区别?
iterable:可迭代是一个对象,可以对其进行迭代。在可迭代的情况下,整个数据一次存储在内存中。
iterators:迭代器是用来在对象上迭代的对象。它只在被调用时被初始化或存储在内存中。迭代器使用next从对象中取出元素。
#List is an iterable
lst = [ 1, 2, 3, 4, 5]
fori inlst:
print(i)
#iterator
lst1 = iter(lst)
next(lst1)
1
next(lst1)
2
fori inlst1:
print(i)
3, 4, 5
23、 Python中的Map Function是什么?
map函数在对可迭代对象的每一项应用特定函数后,会返回map对象。
24、解释 Python中的Filter?
过滤器函数,根据某些条件从可迭代对象中筛选值。
#iterable
lst = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
defeven(num):
ifnum% 2== 0:
returnnum
#filter all even numbers
list(filter(even,lst))
———————————————
[ 2, 4, 6, 8, 10]
25、解释Python中reduce函数的用法?
reduce函数接受一个函数和一个序列,并在计算后返回数值。
fromfunctools importreduce
a = lambdax,y:x+y
print(reduce(a,[ 1, 2, 3, 4]))
10
26、什么是pickling和unpickling?
pickling是将Python对象(甚至是Python代码),转换为字符串的过程。
unpickling是将字符串,转换为原来对象的逆过程。
27、解释*args和**kwargs?
args,是当我们不确定要传递给函数参数的数量时使用的。
def add( num):
sum = 0
forval innum:
sum = val + sum
print(sum)
add( 4, 5)
add( 7, 4, 6)
add( 10, 34, 23)
———————
9
17
57
**kwargs,是当我们想将字典作为参数传递给函数时使用的。
28、解释re模块的 split、sub、subn方法 ?
split:只要模式匹配,此方法就会拆分字符串。
sub:此方法用于将字符串中的某些模式替换为其他字符串或序列。
subn:和sub很相似,不同之处在于它返回一个元组,将总替换计数和新字符串作为输出。
importre
string = “There are two ball in the basket 101”
re.split( “\W+”,string)
—————————————
[ ‘There’, ‘are’, ‘two’, ‘ball’, ‘in’, ‘the’, ‘basket’, ‘101’]
re.sub( “[^A-Za-z]”, ” “,string)
—————————————-
‘There are two ball in the basket’
re.subn( “[^A-Za-z]”, ” “,string)
—————————————–
( ‘There are two ball in the basket’, 10)
29、Python中的生成器是什么?
生成器(generator)的定义与普通函数类似,生成器使用yield关键字生成值。
如果一个函数包含yield关键字,那么该函数将自动成为一个生成器。
#A program to demonstrate the use of generator object with next A generator function
defFun:
yield1
yield2
yield3
#x is a generator object
x = Fun
print(next(x))
—————————–
1
print(next(x))
—————————–
2
30、如何使用索引来反转Python中的字符串?
string = ‘hello’
string[:: -1]
‘olleh’