我从各个面试官群里偷偷整理出来了30道Python面试真题+标准答案!!!赶紧收藏!

这30道Python自动化必备面试题(建议收藏)!!!

前言

作为前企鹅的自动化测试经理及面试官之一想和大家谈一谈,当我们去到各个公司面试时,首先我们认为自己的知识储备、能力、经验等方面都是没有问题的,但是为什么我们面试过后却没有收到offer,为什么???所以试着回想一下在面试过程中是否抓到了面试官的需求点,到底如何回答才能打动面试官? 针对一系列问题我整理了很多的面试资料希望能帮助到大家,有兴趣的朋友可以找我领取或者加入资料群领取! 领取资料点这里!!!

在这里插入图片描述
在过去的2020年,Python赢得了年度TIOBE编程语言奖,成为 过去一年最受欢迎的编程语言。在数据科学和机器学习等领域中,被广泛使用。

这里给大家整理了30道Python面试题,还有相对应的答案,来帮助大家更好的了解和学习Python。

1、什么是Python?为什么它会如此流行?

Python是一种解释的、高级的、通用的编程语言。

Python的设计理念是通过使用必要的空格与空行,增强代码的可读性。

它之所以受欢迎,就是因为它具有简单易用的语法。

2、为什么Python执行速度慢,我们如何改进它?

Python代码执行缓慢的原因,是因为它是一种解释型语言。它的代码在运行时进行解释,而不是编译为本地语言。

为了提高Python代码的速度,我们可以使用CPython、Numba,或者我们也可以对代码进行一些修改。

  1. 减少内存占用。

  2. 使用内置函数和库。

  3. 将计算移到循环外。

  4. 保持小的代码库。

  5. 避免不必要的循环

3、Python有什么特点?

  1. 易于编码

  2. 免费和开源语言

  3. 高级语言

  4. 易于调试

  5. OOPS支持

  6. 大量的标准库和第三方模块

  7. 可扩展性(我们可以用C或C++ 编写Python代码)

  8. 用户友好的数据结构

4、Python有哪些应用?

  1. Web开发

  2. 桌面GUI开发

  3. 人工智能和机器学习

  4. 软件开发

  5. 业务应用程序开发

  6. 基于控制台的应用程序

  7. 软件测试

  8. Web自动化

  9. 基于音频或视频的应用程序

  10. 图像处理应用程序

5、Python的局限性?

  1. 速度

  2. 移动开发

  3. 内存消耗(与其他语言相比非常高)

  4. 两个版本的不兼容(2,3)

  5. 运行错误(需要更多测试,并且错误仅在运行时显示)

  6. 简单性

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中,我们可以通过下面两种方式进行注释。

  1. 三引号”’,用于多行注释。
  2. 单井号#,用于单行注释。

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’

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值