学习python最终目的是为了入职,成为一名合格的程序员。但是如何通过面试又成为很多学习Python的学员面临的问题,逻辑教育在线课程告诉你15个Python面试问题和答案。
初学者 Python 面试题
这些 Python 初学者问题可帮助您了解应聘者对该语言基础知识的了解程度。他们是更初级的候选人的理想选择。
1. 什么是 Python?
回答:
让我们从头开始。这个问题实际上是关于 Python 的基础知识。没有教科书式的答案,因此请专注于倾听候选人的答案,以确定他们喜欢 Python 的原因以及他们使用 Python 的经验。
Python 是一种高级的、可移植的编程语言。它具有内置的自动内存管理、字符串和线程,并且它是基于对象的。它适用于快速应用程序开发以及作为脚本或粘合语言将现有组件连接在一起。
Python 是一种相对容易学习的简单语言。作为一种高度可读的语言,降低了程序维护的成本。而且由于该语言支持模块和包,它鼓励程序模块化和代码重用。
许多开发人员喜欢这样一个事实,即编辑、测试和调试是一个快速的过程。调试 Python 很容易,因为错误或错误输入不会导致分段错误,而是程序引发异常。
2. Python 是动态类型语言还是静态类型语言?
回答:
Python 是一种动态类型语言。在弱类型语言中,变量可以被隐式强制转换为不相关的类型,而在强类型语言中则不能,因此需要显式转换。
3. Python有哪些数据类型?
回答:
Python 有六种标准数据类型。数据类型是数据项的分类,表示可以对特定数据执行哪些操作的值类型。因为在 Python 中一切都是对象,所以它们实际上是类。变量是类的实例。
Python中的数据类型有:
l 数字
l 细绳
l 列表
l 元组
l 放
l 字典
进阶 Python 面试题
这些高级 Python 面试题都是关于了解候选人对 Python 的深入了解。问题不是关于 Python 是什么,而是关于它是如何工作的。
4. 如何从 C 访问用 Python 编写的模块?
回答:
任何 Python 开发人员都必须了解 Python 的工作原理。但是,尝试逐字逐句地回答是没有意义的。相反,请留意候选人如何使用特定功能的个人故事。
您可以获得指向模块对象的指针,如下所示:
module = PyImport_ImportModule("");
请注意,它不会将模块输入任何命名空间——它只确保它已被初始化并存储在 sys.modules 中。模块。
5. 如何在 Python 中反转列表?什么时候有用?
回答:
您可以使用 reverse() 或 reversed() 方法在 Python 中反转列表。他们反转列表,但不创建新列表。
例如,该方法可用于排列列表。如果有一个按字母倒序排列的名称列表,则必须将列表倒置以按字母顺序排列,这就是使用反向功能可以完成的事情。
6. Python 中的 break 和 continue 有什么作用?
回答:
这是另一个问题,可以了解候选人对 Python 功能的理解程度。
Break and continue 帮助控制 Python 中的循环。“Break”中断当前循环的执行并将控制权转移到下一个块。“继续”会跳转到循环的下一次迭代,而不会耗尽它。
当您想要终止当前迭代或整个循环时,这会很有帮助。循环遍历代码块,直到测试表达式为假,因此使用 break 和 continue 可以跳过它。
7.break和continue可以一起用吗?
回答:
上一个问题的后续问题。中断和继续可以一起使用。“Break”将停止当前循环的执行,而“continue”将导致循环的下一次迭代立即运行。
8. 下面代码的输出是什么?
list = [‘alfa’, ‘bravo’, ‘charlie’, ‘delta’. ‘echo’]
print list[10:]
回答:
通过要求候选人查看代码片段,您可以了解他们如何处理工作。大多数东西都可以用谷歌搜索,所以重点不是得到完美的答案,而是看看候选人是如何推理的。但请记住,不要使用“脑筋急转弯”或“陷阱”问题,因为它们大多只是浪费每个人的时间。
输出将是 []; 它不会导致 IndexError。代码试图访问列表中不存在的第 10 个对象,因此它将输出 []。
9. 解释生成器与迭代器
回答:
迭代器在返回第一个结果之前将整个序列存储在内存中。迭代器使用“return”。生成器在调用它的那一刻计算每个结果。下一个结果未知。生成器使用“产量”。
所以,简而言之:
l 在处理流或内存消耗很重要时,您会使用生成器。
l 生成器是迭代器,但迭代器不是生成器。
10、Python运行前需要编译吗?
回答:
编译语言基于可以直接在计算机处理器上执行的代码。另一方面,解释型语言在运行前并不存在于“机器代码”中。翻译发生在程序执行的同时。
Python 是一种解释型语言,因此不需要编译。
(注意:考生可能不会给出编译语言和解释语言的定义。如果您想了解他们对这些概念的理解程度,请跟进有关它们的问题。)
11. 什么是 *args、**kwargs?
这是经典!一定要听候选人解释使用它们的优点和缺点,尤其是在代码可维护性方面。
回答:
如果我们不知道将多少个参数传递给函数,例如当我们想要传递一个列表或一个值的元组时,我们使用 *args。
**kwargs 当我们不知道会有多少个关键字参数时:
args 和 kwargs 这两个词是约定俗成的,我们可以使用任何东西来代替它们。
建议仅将 **kwargs 用于范围缩小的方法。例如,在类中少数地方使用的私有方法(在 Python 的上下文中是私有的。以 _ 开头的方法)是很好的候选者。另一方面,代码库中数十个类使用的方法是非常糟糕的候选者。
12. Python 是按值调用还是按引用调用?参数如何通过值或引用传递?
回答:
Python 中的一切都是对象,所有变量都包含对对象的引用。参考值根据功能而定;因此,您无法更改引用的值。但是,如果对象是可变的,您可以更改它。一个很好的后续问题是#15,以深入研究不变性。
13. Python中的GIL是什么?
回答:
在内存管理方面,Python 不是线程安全的。所以,如果你在运行多个线程,GIL 就是一个瓶颈;它一次只允许一个线程访问内存。如果一切都发生在一个线程中,那么你很好。但是如果是多线程的话,当一个线程访问内存时,GIL 会阻塞所有其他线程。
这是多线程python程序的问题。对于多处理 python 来说这不是问题,因为每个进程都有自己的内存。
看看你的候选人是否提到了“瓶颈”、“多线程”和“内存管理”。
解决方案是使用多处理,使用用 C 编写的扩展,或使用其他 Python 实现,如 IronPython 或 Cython。
14.什么是lambda函数?
回答:
lambda 函数是在短时间内需要匿名函数时使用的匿名函数。这个函数只能有一个语句,但它可以有任意数量的参数。示例: a = lambda x,y : x+y print(a(5,6.
15. 解释可变类型和不可变类型?
回答:
不可变类型无法更改。例如整数、浮点数、字符串、元组。可变类型可以改变。示例是列表、字典、集合、类。
对于后续,您希望候选人解释不可变类型如何指向实际值,而不可变类型是指向内存中位置的指针,因此可能会发生变化。
16. 奖励:制表符与空格
回答:
在密集的面试环节后,使用这个问题让候选人放松。这里没有正确的答案,两者在语法上都完全没问题。最流行的缩进方式是仅使用空格,也是 PEP-8 标准的一部分。
4000520066 欢迎批评指正
All Rights Reserved 新浪公司 版权所有