50个Python常见面试问题答案
由于其性能和强大的库,Python 是英特尔、IBM、NASA、Netflix、Facebook、摩根大通、Spotify 等顶级公司最常用的语言。要以 Python 开发人员的身份进入这些公司和组织,您需要掌握一些重要的Python 面试问题,以破解他们的 Python 在线评估轮和 Python 面试轮。
本文我们晓得博客准备了50个Python常见面试问题答案。
什么是Python
Python 是最广泛使用和流行的编程语言之一,由 Guido van Rossum 开发,并于 1991 年 2 月 20 日首次发布。Python 是一种免费的开源语言,具有非常简单和干净的语法,可以轻松地开发人员学习Python。它支持面向对象编程,最常用于执行通用编程。Python 用于多个领域,如数据科学、机器学习、深度学习、人工智能、科学计算脚本、网络、游戏开发、Web 开发、网页抓取和各种其他领域。
Python 由于其简单性和仅用几行代码执行多个功能的能力而呈指数级增长。由于它能够使用强大的库支持强大的计算,因此它被用于各个领域,并成为全世界对 Python 开发人员巨大需求的原因。公司愿意为这些开发者提供令人惊叹的套餐和福利。
初学者的基本Python面试问题
1、什么是Python?列出 Python 在技术领域的一些流行应用。
Python 是一种广泛使用的通用高级编程语言。它由 Guido van Rossum 于 1991 年创建,并由 Python 软件基金会进一步开发。它的设计重点是代码的可读性,其语法允许程序员用更少的代码行表达他们的概念。
它用于:系统脚本、Web开发、游戏开发、软件开发、复杂数学
2、在目前场景下使用Python语言作为工具有什么好处?
使用Python语言的好处如下:面向对象语言、高级语言、动态类型语言、广泛的支持库、第三方模块的存在、开源和社区发展、便携、互动、可跨操作系统移植。
3、Python是编译型语言还是解释型语言?
实际上,Python 是一种部分编译、部分解释的语言。当我们执行代码时,首先完成编译部分,这将在内部生成字节码,该字节码由Python虚拟机(pvm)根据底层平台(机器+操作系统)进行转换。
4、Python 中的“#”符号有什么作用?
’#’ 用于注释该行后面的所有内容。
5、可变数据类型和不可变数据类型有什么区别?
可变数据类型可以编辑,即它们可以在运行时更改。例如,列表、字典等。
不可变数据类型无法编辑,即它们无法在运行时更改。例如——字符串、元组等。
6、 Python 中如何按值或按引用传递参数?
Python 中的一切都是对象,所有变量都保存对对象的引用。参考值根据功能而定;因此,您无法更改引用的值。但是,如果对象是可变的,您可以更改它。
7、集合和字典有什么区别?
集合是数据类型的无序集合,可迭代、可变且没有重复元素。Python中的字典是数据值的有序集合,用于像地图一样存储数据值。
8、什么是列表理解?举个例子。
列表理解是一种语法构造,可简化基于现有可迭代对象的列表的创建。例如:
my_list = [i for i in range(1, 10)]
9、什么是 lambda 函数?
lambda 函数是匿名函数。该函数可以有任意数量的参数,但只能有一个语句。例如:
a = lambda x, y : x*y
print(a(7, 19))
10、Python中的pass是什么?
pass表示不执行任何操作,或者说,它是复合语句中的占位符,其中应该留有空白,并且可以不写任何内容。
11、Python中/和//有什么区别?
// 执行整数除法,/ 执行浮点除法。例如:
5//2 = 2
5/2 = 2.5
12、Python 中如何进行异常处理?
有3个主要关键字,即try、 except和finally,用于捕获异常并相应地处理恢复机制。Try 是监视错误的代码块。发生错误时执行 except 块。
最后一个块的优点是在尝试错误后执行代码。无论是否发生错误,该块都会被执行。最后,块用于执行对象/变量所需的清理活动。
13、Python中的swapcase函数是什么?
它是一个字符串函数,可将所有大写字符转换为小写字符,反之亦然。它用于更改字符串的现有大小写。此方法创建包含交换大小写中所有字符的字符串副本。例如:
字符串=“极客们的极客们”
string.swapcase() —> “gEEKSFORgEEKS”
14、Python中for循环和while循环的区别
“for”循环通常用于迭代各种集合类型的元素,例如List、Tuple、Set和Dictionary。开发人员使用“for”循环,其中有条件开始和结束。而“while”循环是任何其他编程语言中使用的实际循环功能。程序员使用 Python while 循环,其中只有结束条件。
15、我们可以在Python中将函数作为参数传递吗?
是的,可以将多个参数传递给函数,包括对象、变量(具有相同或不同的数据类型)和函数。函数可以作为参数传递给其他函数,因为它们是对象。高阶函数是可以将其他函数作为参数的函数。
16、什么是args 和kwargs?
要将可变数量的参数传递给 Python 中的函数,请在函数规范中使用特殊语法*args 和 **kwargs 。它用于传递可变长度、无关键字参数列表。通过使用 *,我们与 * 关联的变量变得可迭代,允许您对其进行操作,例如迭代它以及使用映射和过滤器等高阶操作。
17、Python 中需要缩进吗?
是的,Python 中需要缩进。通过使用 Python 缩进, Python解释器可以获知一组语句属于特定的代码块。缩进使所有编程语言的开发人员都可以轻松阅读代码,但在 Python 中,按特定顺序缩进代码非常重要。
18、Python 中的作用域是什么?
我们可以找到变量并在需要时访问它的位置称为变量的范围。
Python 局部变量:局部变量是在函数内初始化的变量,并且对于该函数来说是唯一的。无法在函数外部访问它。
Python 全局变量:全局变量是在任何函数外部定义和声明的变量,并且不指定给任何函数。
模块级作用域:指程序中可访问的当前模块的全局对象。
最外层作用域:指的是程序可以调用的任何内置名称。引用的名称位于此范围内对象的最后。
19、Python 中的文档字符串是什么?
Python 文档字符串(或文档字符串)提供了一种将文档与 Python 模块、函数、类和方法关联起来的便捷方法。
声明文档字符串:文档字符串是在类、方法或函数声明下方使用“三单引号”或“”“三双引号”“”来声明的。所有函数都应该有一个文档字符串。
访问文档字符串:可以使用对象的 doc 方法或使用帮助函数来访问文档字符串。
20、什么是动态类型语言?
类型化语言是我们定义数据类型的语言,机器在编译时或运行时会知道它。类型语言可以分为两类:
静态类型语言:在这种类型的语言中,变量的数据类型在编译时已知,这意味着程序员必须在声明变量时指定变量的数据类型。
动态类型语言:这些语言不需要任何变量的任何预定义数据类型,因为它在运行时由机器本身解释。在这些语言中,解释器在运行时根据变量的值将数据类型分配给变量。
21、Python中的break、continue和pass是什么?
Break 语句用于终止它所在的循环或语句。之后,控制权将传递给break语句之后出现的语句(如果可用)。
和break语句一样, Continue也是一个循环控制语句。continue语句与break语句相反,它不是终止循环,而是强制执行循环的下一次迭代。
pass表示不执行任何操作,或者说,它是复合语句中的占位符,其中应该留有空白,并且可以不写任何内容。
推荐:如何使用Python程序Pytube库下载YouTube视频
22、Python 中的内置数据类型是什么?
以下是 Python 中的标准或内置数据类型:
数值: Python 中的数值数据类型表示具有数值的数据。数值可以是整数、浮点数、布尔值,甚至是复数。
序列类型: Python 中的序列数据类型是相似或不同数据类型的有序集合。Python中有几种序列类型:Python 字符串、Python列表、Python 元组
映射类型:在Python中,可以使用映射对象将可哈希数据映射到随机对象。目前只有一种常见的映射类型,字典,并且映射对象是可变的。
集合类型:在Python中,集合是数据类型的无序集合,它是可迭代的、可变的并且没有重复元素。尽管集合可能由各种元素组成,但集合中元素的顺序是未定义的。
23、如何在 Python 中对数字进行取整?
Python 数学模块包含一个可用于计算数字下限的方法。
Python中的floor()方法返回x的下限,即不大于x的最大整数。
另外,Python 中的 ceil(x) 方法返回 x 的上限值,即大于或等于 x 的最小整数。
中级Python面试问题
24、xrange 和 range 函数有什么区别?
range() 和 xrange() 是两个函数,可用于在 Python 中的 for 循环中迭代一定次数。在 Python 3 中,没有 xrange,但 range 函数的行为类似于 Python 2 中的 xrange。
range() – 返回使用 range() 函数创建的数字列表。
xrange() – 此函数返回可用于仅通过循环显示数字的生成器对象。唯一的特定范围是按需显示的,因此称为惰性评估。
25、什么是字典理解?举个例子
字典理解是一种语法构造,可以简化基于现有可迭代对象的字典的创建。
my_dict = {i:1+7 for i in range(1, 10)}
26、元组理解吗?如果是,怎么做,如果不是,为什么?
(i for i in (1, 2, 3))
元组理解在 Python 中是不可能的,因为它最终会出现在生成器中,而不是元组理解。
27、列表和元组的区别?
我们来分析一下List和Tuple的区别:
列表
- 列表是可变数据类型。
- 列表消耗更多内存
- 该列表更适合执行插入和删除等操作。
- 迭代的含义是耗时的
元组
- 元组是不可变的数据类型。
- 与列表相比,元组消耗的内存更少
- 元组数据类型适合访问元素
- 迭代的含义是相对更快
推荐:如何修复ChatGPT Error communicating with plugin service
28、浅拷贝和深拷贝有什么区别?
创建新实例类型时使用浅复制,它保留复制的值,而深复制则存储已复制的值。
浅拷贝具有更快的程序执行速度,而深拷贝则使其速度变慢。
29、python的sort()和sorted()函数使用哪种排序技术?
Python 使用Tim Sort算法进行排序。这是一种稳定的排序,最坏情况是 O(N log N)。它是一种混合排序算法,源自合并排序和插入排序,旨在对多种实际数据表现良好。
30、什么是装饰器?
装饰器是 Python 中非常强大且有用的工具,因为它们是我们在 Python 语法中进行的特定更改,以便轻松更改函数。
31、如何调试Python程序?
通过使用这个命令我们可以调试Python程序:
$ python -m pdb python-script.py
32、Python中的迭代器是什么?
在 Python 中,迭代器用于迭代一组元素、容器(例如列表)。迭代器是项目的集合,它们可以是列表、元组或字典。Python 迭代器实现 itr 和 next() 方法来迭代存储的元素。我们通常使用循环来迭代Python中的集合(列表、元组)。
33、Python中的生成器是什么?
在Python中,生成器是一种指定如何实现迭代器的方式。它是一个普通函数,只不过它在函数中产生表达式。它不实现 itr 和 next() 方法,并减少其他开销。
如果一个函数至少包含一个yield语句,它就成为一个生成器。Yield 关键字通过保存其状态来暂停当前执行,然后在需要时从相同状态恢复。
34、Python支持多重继承吗?
与 Java 不同,Python 确实支持多重继承。多重继承意味着一个类可以从多个父类派生。
35、Python中的多态性是什么?
多态性意味着采取多种形式的能力。因此,例如,如果父类有一个名为 ABC 的方法,那么子类也可以有一个具有相同名称 ABC 的方法,并有自己的参数和变量。Python 允许多态性。
36、Python中定义封装?
封装意味着将代码和数据绑定在一起。Python 类是封装的一个示例。
37、 Python 中如何进行数据抽象?
数据抽象仅提供所需的细节,并向外界隐藏实现。在Python中可以通过使用接口和抽象类来实现。
38、Python中如何进行内存管理?
Python 使用其私有堆空间来管理内存。基本上,所有的对象和数据结构都存储在私有堆空间中。即使程序员也无法访问这个私有空间,因为解释器会处理这个空间。Python还有一个内置的垃圾收集器,它回收所有未使用的内存并释放内存并使其可供堆空间使用。
39、如何使用Python删除文件?
我们可以通过以下方式使用Python删除文件:
os.remove()
os.unlink()
40、Python中的切片是什么?
Python 切片是一种字符串操作,用于提取字符串的一部分或列表的一部分。使用此运算符,可以指定切片从何处开始、在何处结束以及指定步骤。列表切片从现有列表中返回一个新列表。
Lst[ Initial : End : IndexJump ]
41、Python中什么是命名空间?
命名空间是一种命名系统,用于确保名称唯一以避免命名冲突。
推荐:NumPy字符串函数
高级 Python 面试问题与解答
42、什么是PIP?
PIP 是 Python Installer Package 的缩写,它提供了安装各种 Python 模块的无缝接口。它是一个命令行工具,可以通过互联网搜索软件包并安装它们,而无需任何用户交互。
43、 什么是 zip 函数?
Python zip() 函数返回一个 zip 对象,该对象映射多个容器的相似索引。它接受一个可迭代对象,将其转换为迭代器,并根据传递的可迭代对象聚合元素。它返回元组的迭代器。
44、什么是Pickling and Unpickling
Pickle 模块接受任何 Python 对象并将其转换为字符串表示形式并使用 dump 函数将其转储到文件中,这个过程称为 pickling。从存储的字符串表示中检索原始 Python 对象的过程称为 unpickling。
45、Python 中的monkey补丁是什么?
在Python中,术语“猴子补丁”仅指在运行时动态修改类或模块。
# g.py
class XiaoClass:
def function(self):
print "function()"
import m
def monkey_function(self):
print "monkey_function()"
m.XiaoClass.function = monkey_function
obj = m.XiaoClass()
obj.function()
46、Python 中的 init() 是什么?
init 相当于 OOP 术语中的构造函数,是 Python 类中的保留方法。每当启动新对象时,都会自动调用 init 方法。该方法在新对象创建后立即为其分配内存。该方法也可用于初始化变量。
47、 写一段代码来显示当前时间?
currenttime= time.localtime(time.time())
print (“Current time is”, currenttime)
48、Python 中的访问说明符是什么?
Python 使用“_”符号来确定对特定数据成员或类的成员函数的访问控制。Python 中的类具有三种类型的Python 访问修饰符:
公共访问修饰符:声明为公共的类成员可以从程序的任何部分轻松访问。类的所有数据成员和成员函数默认都是公共的。
受保护的访问修饰符:声明为受保护的类的成员只能由从该类派生的类访问。通过在该类的数据成员之前添加一个下划线“_”符号来声明该类的所有数据成员受保护。
私有访问修饰符:声明为私有的类成员只能在类内部访问,私有访问修饰符是最安全的访问修饰符。类的数据成员通过在该类的数据成员之前添加双下划线“__”符号来声明为私有。
49、Python 中的单元测试是什么?
单元测试是软件测试的第一级,其中测试软件的最小可测试部分。这用于验证软件的每个单元是否按设计运行。单元测试框架是Python的xUnit风格的框架。白盒测试方法用于单元测试。
50、Python全局解释器锁(GIL)?
Python 全局解释器锁(GIL) 是 Python 处理进程时使用的一种进程锁。一般来说,Python只使用一个线程来执行一组书面语句。Python 中单线程进程和多线程进程的性能是相同的,这是因为 Python 中的 GIL。我们无法在Python中实现多线程,因为我们有一个全局解释器锁来限制线程并作为单线程工作。
51、Python中的函数注释是什么?
函数注释是一项允许您将元数据添加到函数参数和返回值的功能。这样你就可以指定函数参数的输入类型和函数返回值的返回类型。
函数注释是与函数各个部分相关联的任意 Python 表达式。这些表达式在编译时计算,在 Python 的运行时环境中没有生命力。Python 没有为这些注释赋予任何含义。当由第三方库(例如 mypy)解释时,它们会被夺走生命。
52、Python中的异常组是什么?
Python 3.11 的最新功能,异常组。可以使用新的 except* 语法来处理 ExceptionGroup。* 符号表示每个 except* 子句可以处理多个异常。
ExceptionGroup 是不同类型异常的集合/组。在不创建多个异常的情况下,我们可以将不同的异常分组在一起,以后在需要时可以一一获取,异常在异常组中的存储顺序在调用它们时并不重要。
try:
raise ExceptionGroup('Example ExceptionGroup', (
TypeError('Example TypeError'),
ValueError('Example ValueError'),
KeyError('Example KeyError'),
AttributeError('Example AttributeError')
))
except* TypeError:
...
except* ValueError as e:
...
except* (KeyError, AttributeError) as e:
...
53、什么是Python Switch语句
从 3.10 版本开始,Python 实现了一个称为“结构模式匹配”的 switch case 功能。您可以使用 match 和 case 关键字来实现此功能。请注意,下划线符号用于定义 Python 中 switch 语句的默认情况。
match term:
case pattern-1:
action-1
case pattern-2:
action-2
case pattern-3:
action-3
case _:
action-default
注意:在 Python 3.10 之前,Python 不支持 match 语句。
Claude、Netflix、Midjourney、ChatGPT Plus、PS、Disney、Youtube、Office 365、多邻国Plus账号购买,ChatGPT API购买,优惠码XDBK,用户购买的时候输入优惠码可以打95折