Python常见面试题有哪些?科技行业正以前所未有的速度增长。我们时不时地看到新的软件产品在市场上发布。所以,无论你是新手还是经验丰富的Python 开发者,总有机会等着你。
唯一的要求是你必须用你的技能说服雇主。可以通过参加Python 编程面试来实现。
但是,你必须做好准备,否则,别人可能会得到这份工作。你可以尝试Python 编程挑战,
也可以简单地概述常见的 Python 面试问题和答案。
今天,在这个Python常见面试题和答案合集中,我要和大家分享一下我个人的Python面试经历。我会列出他们问我的问题,包括他们可能的解决方案。因此,这将是你被聘为Python 程序员的终极指南。
1- 假设我们有众所周知的“Iris”数据集。现在只检索“Sepal.Length”大于 6 且“Sepal.Width”大于 3.3 的那些记录。Iris数据集详细信息:-
官方网站
以 CSV 格式下载
Python面试题和答案解析代码:-
import pandas as pdiris = pd.read_csv('iris.csv')df = pd.DataFrame(iris) for i, j in df.iterrows():
if (j[
'sepal_length'] > 6) &
(j[
'sepal_width'] > 3.3):
print(j)
print()
输出:-
sepal_length7.2
sepal_width3.6
petal_length6.1
petal_width2.5
speciesvirginica
Name: 109, dtype: objectsepal_length7.7
sepal_width3.8
petal_length6.7
petal_width2.2
speciesvirginica
Name: 117, dtype: objectsepal_length7.9
sepal_width3.8
petal_length6.4
petal_width2
speciesvirginica
Name: 131, dtype: objectsepal_length6.3
sepal_width3.4
petal_length5.6
petal_width2.4
speciesvirginica
Name: 136, dtype: objectsepal_length6.2
sepal_width3.4
petal_length5.4
petal_width2.3
speciesvirginica
Name: 148, dtype: object
2- 假设我们有两个数组,如下所述。我们如何添加两个数组的对应项?数组:-
a = [
23,67,1]
b = [
98,543,7]
代码:-
import numpy as npa = np.array([
23,67,1])
b = np.array([
98,543,7])c = np.sum((a,b), axis=0)j = 0for i in c:
print("Index_" + str(j) + ":", i)
j += 1
输出:-
Index_0: 121
Index_1: 610
Index_2: 8
3- 什么是
*args
和**kwargs
?分别举一个例子。Python常见面试题有哪些?这两者都用于在函数中传递可变数量的参数。我们*args
用于非关键字参数,而**kwargs
用于基于关键字的参数(例如键值对)。*args
例子:-def myFun1(*argv):
for a in argv:
print(a)myFun1('Welcome', 'to', 'Live Code Stream')
输出:-
Welcome
to
Live Code Stream
**kwargs
例子:-def myFun2(**kwargs):
for k, v in kwargs.items():
print ("%s = %s" %(k, v))myFun2(username = 'John Doe', email = 'example@domain.com', password = 'Abc123')
输出:-
username = John Doe
email = example@domain.com
password = Abc123
4- 如何检查模块中可用的所有功能和属性?Python常见面试题和答案合集:我们可以在
dir()
函数内部传递模块名称以检索其函数和属性的名称。例如:-
假设我们有一个名为m.py的模块,其中包含一个变量和两个用户定义的函数。
name = "Juan"def myFun():
returndef myFun2():
return
现在,我们可以使用以下命令在另一个文件中显示其属性和函数名称:
import m
print(dir(m))
输出:-
[
'__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'myFun', 'myFun2', 'name']
在这里你可以看到该
dir()
函数还获取了所有内置属性和方法。5- Python 中的字面量是什么?在 Python 中,文字是分配给变量或常量的数据/值。例如,Python 有四种不同类型的文字。
- 数字文字
- 字符串文字
- 布尔文字
- 特殊文字
tuple_1 = (True,"Juan",561)
tuple_2 = (47,100,False)
现在,我们可以使用加号将它们连接在一起
+
。基本上,该语句将tuple_2
在tuple_1
.tuple_1 + tuple_2
像这样:
(True, 'Juan', 561, 47, 100, False)
7- Python 中的 lambda 是什么?Lambda 是 Python 中的一个小函数,只能处理一个表达式。但是,我们可以根据需要添加任意数量的参数。
通常,在另一个函数内部使用 lambda 函数更合适。
让我们使用 lambda 函数将 14 乘以通过参数传递的数字。
x = lambda a: a * 14
print(x(3))
输出:-
42
8-什么是切片?切片是检索字符串、数组、列表或元组的一部分的过程。基本上,我们传递一个开始和结束索引来指定我们感兴趣的数据的位置。重要的是要注意开始索引处的值包含在结果中,而结束索引处的值被排除在外。
我们甚至可以传递一个步长值来跳过一些数据。例如,从数组中检索所有其他项目。
在下面的代码片段中,切片是使用方括号
[]
执行的。我们传递了三个参数并用冒号分隔它们:
。第一个参数指定切片的开始位置,第二个参数用于标记结束,而最后一个参数用于定义步骤。countries = ("Germany", "Pakistan", "China", "Turkey", "Australia", "France")print(countries[
0:5:2])
输出:-
('Germany', 'China', 'Australia')
切片的三个参数都是可选的。如果我们不指定开始,那么 Python 将假定 0 索引作为起始位置。同样,当我们跳过第二个参数时,将使用数组/字符串/元组/列表的长度。而默认情况下,Python 将 1 视为一个步骤。
9- 什么是 Python 装饰器?Python 装饰器是一种功能,用于增强现有函数或类的功能。当开发人员想要动态更新功能的工作而不实际修改它时,这是首选。
假设我们有一个打印网站开发者姓名的函数。但是,现在的要求是向用户显示欢迎消息,然后显示开发人员名称。
我们可以在装饰器函数的帮助下添加此功能。
def welcome_user(func):
def inner(a, b):
print("Welcome to Live Code Stream!")
return func(a, b)
return inner@welcome_user
def dev_name(first_name, last_name):
print("Developed By:", first_name, last_name)dev_name("Juan", "Cruz Martinez")
在这里,你可以看到它
welcome_user()
是一个装饰器,而它dev_name()
是我们动态更新的主函数。输出:-
Welcome to Live Code Stream!
Developed By: Juan Cruz Martinez
10-
sort()
和sorted()
函数使用哪种算法?Python常见面试题有哪些?sort()
和sorted()
函数实现了 Timsort 算法。这是因为这种排序算法非常稳定和高效。的值大O在其最坏情况下是O(N log n)的。11- 如何调试 Python 程序?默认情况下,Python 带有一个称为pdb的内置调试器 。
我们可以通过执行如下所述的命令来启动任何 Python 文件的调试。
python -m pdb your-python-file.py
12- 什么是Pickling和Unpickling?Python面试题和答案解析:在 Python 中,有一个非常流行的库,称为pickle 。它用于对象序列化。这意味着它将 Python 对象作为输入并将其转换为字节流。转换 Python 对象的整个过程称为pickling。
另一方面,Unpickling是它的反面。在这里,接受字节流作为输入并转换为对象层次结构。
13- 什么是List Comprehension?举个例子。Python常见面试题和答案合集:List Comprehension 是一种创建 Python 列表的快速方法。无需为每个索引手动输入值,我们可以通过迭代数据来简单地填充列表。
假设我想创建一个列表,其每个索引将按顺序包含我姓名中的一个字母。
name_letters = [
letter for letter in 'Juan Cruz Martinez' ]
print( name_letters )
输出:-
[
'J', 'u', 'a', 'n', ' ', 'C', 'r', 'u', 'z', ' ', 'M', 'a', 'r', 't', 'i', 'n', 'e', 'z']
14-
(i for i in (54, 6, 71))
它是元组理解吗?不。在 Python 中,没有元组理解这样的概念。15- 什么是 Python 中的Monkey Patching?在运行时动态更改类或模块的过程称为 Monkey Patching。
website_name.py
class Website_name:
def func(self):
print("Live Code Stream")
main.py
import website_name
def welcome(self):
print("Welcome to Live Code Stream")# replacing address of "func" with "welcome"
website_name.Website_name.func = welcome
obj = website_name.Website_name() # calling function "func()" whose address got replaced with function "welcome()"
obj.func()
输出:-
Welcome to Live Code Stream
你有没有注意到我实际上调用了
func()
方法,但我收到的输出来自welcome()
?16- 预测以下代码的输出?解释你的答案。代码:-
class Parent(object):
x = 53class Child_1(Parent):
passclass Child_2(Parent):
passprint(Parent.x, Child_1.x, Child_2.x)
Child_1.x = 12
print(Parent.x, Child_1.x, Child_2.x)
Parent.x = 89
print(Parent.x, Child_1.x, Child_2.x)
输出:-
53 53 53
53 12 53
89 12 89
Python面试题和答案解析:-
这段代码中的主要混淆点出现在最后一条
print()
语句中。在打印之前,我们只是更新
x
了Parent
类中的值。它会自动更新 的值,Child_2.x
但不会更新Child_1.x
。这是因为我们已经设置了 的值Child_1.x
。换句话说,Python 尝试首先使用子类的属性/方法。如果在子类中找不到属性/方法,它只会搜索父类。
17- 如何在二叉树中显示给定节点的祖先?Python常见面试题有哪些?假设我们有这个二叉树。现在,检索65的祖先并使用 Python 代码显示它们。
58
/\
423
/\
065
/
17
代码:-
class Node:
# Create a new node
def __init__(self, data):
self.data = https://www.lsbin.com/data
self.left = None
self.right = Nonedef displayAncestors(root, target):
# Base case
if root == None:
return False if root.data == target:
return True # Print this node if target is present in either left or right subtree
if (displayAncestors(root.left, target) or
displayAncestors(root.right, target)):
print(root.data)
return True# Else
return False# Test above function
root = Node(58)
root.left = Node(42)
root.right = Node(3)
root.left.left = Node(0)
root.left.right = Node(65)
root.left.left.left = Node(17)displayAncestors(root, 65)
输出:-
42
58
Python常见面试题和答案合集结论练习面试对于找到理想的工作非常重要。在今天的文章中,我们介绍了一些流行的面试问题,但你应该了解更多。有很多网站可以让你为下一次面试做好准备,这是一个巨大的主题,所以请继续学习。
【17个Python常见面试题和答案合集(面试必备)】谢谢阅读!
推荐阅读
- 如何使用Plotly和Python实现交互式数据可视化()
- Node如何使用Elasticsearch(构建搜索引擎示例)
- 如何使用Electron构建桌面应用程序(分步指南)
- 如何使用NodeJS和AWS Lambda实现无服务器()
- Puppeteer和NodeJS如何将网页转换为PDF()
- Windows 8.1专业版降低硬盘读写频率的多种技巧
- windows 8系统下注册微软账户的技巧
- Windows 8.1系统调整系统服务保护磁盘读写次数
- Windows 8.1专业版系统下完成开机自动登录的技巧