50个顶级Python常见面试题和答案合集

2021年11月29日03:41:30 发表评论 1,971 次浏览
Python 面试题

无论你从哪个来源中挑选出一份2021 年要学习的最佳编程语言列表,Python 是一个总能找到一席之地的名字。

因此,答案是肯定的,如果你要问是否可以通过致力于解释型、高级、通用编程语言(即学习 Python)来获得丰厚的职业生涯。

让我们从Python 的热门面试问题开始吧。

热门Python常见面试题和答案合集

一旦你对 Python 的各种概念有了足够的了解,就该参加一些面试了。为了增加你通过它们的机会,这里列出了一些你必须知道的Python 面试问题

初学者和初学者的基本级 Python 面试问题

问题:解释Python?

答:Python 是一种高度综合、交互式和面向对象的脚本编写语言。它是专门开发的,目的是使内容在网络浏览者中具有高度可读性。除了标点符号之外,Python 还使用了各种英语关键字。与其他语言一样,它也具有较少的句法结构。

问题:Python 的显著特点是什么?

Python面试题解析Python 的独特功能包括以下内容。

  1. 支持结构化和函数式编程。
  2. 它可以编译为字节码以创建更大的应用程序。
  3. 开发高级动态数据类型。
  4. 支持动态数据类型检查。
  5. 应用自动垃圾收集。
  6. 它可以与 Java、COBRA、C、C++、ActiveX 和 COM 一起有效地使用。

问题:什么是 Pythonpath?

答:Pythonpath 告诉 Python 解释器定位可以导入到程序中的模块文件。它包括 Python 源库目录和源代码目录。

问题:我们可以预设Pythonpath吗?

答:是的,我们可以将 Pythonpath 预设为 Python 安装程序。

Python常见面试题有哪些:为什么要使用 Pythonstartup 环境变量?

答:我们使用 Pythonstartup 环境变量是因为它包含可以执行带有 Python 源代码的初始化文件以启动解释器的路径。 

问题:Pythoncaseok 环境变量是什么?

答:Pythoncaseok 环境变量在 Windows 中应用,目的是引导 Python 在导入语句中找到第一个不区分大小写的匹配项。

问题:Python 支持哪些标准数据类型?

答:Python 中支持的标准数据类型包括以下几种。

  1. 列表。
  2. 数字。
  3. 字符串。
  4. 字典。
  5. 元组。

问题:在 Python 中定义元组?

答:元组是 Python 中的一种序列数据类型。元组中值的数量用逗号分隔。

问题:Python 中元组和列表的主要区别是什么?

答:Python 中的元组和列表有几个主要区别,包括以下几点:

元组列表
元组类似于列表,但与列表不同,它们被括在括号内。该列表用于创建序列。
元素和大小可以更改。元素和大小不能更改。
它们无法更新。它们可以更新。
它们充当只读列表。它们充当可变列表。
元组被 ( ) 包围列表被 [ ] 包围
元组代码的示例是,tup = (1, "a", "string", 1+2)列表代码的示例是,L = [1, "a" , "string" , 1+2]

问题:什么是正指数和负指数?

回答: 在正索引中,搜索是从左到右的。在负索引的情况下,搜索从右到左开始。例如,在大小为 n 的数组列表中为正索引,第一个索引为 0,然后为 1,直到最后一个索引为 n-1。但是,在负索引中,第一个索引是 -n,然后是 -(n-1),直到最后一个索引将为 -1。

问题:Python 中标识符的长度可以是多少?

答:Python 中标识符的长度可以是任意长度。最长的标识符将违反 PEP – 8 和 PEP – 20。

问题:在 Python 中定义 Pass 语句?

回答:当我们无法决定在代码中做什么时,使用 Python 中的 Pass 语句,但我们必须键入一些内容以使语法正确。

问题:Python 的局限性是什么?

答:Python 有一定的局限性,其中包括:

  1. 它有设计限制。
  2. 与 C 和 C++ 或 Java 相比,它更慢。
  3. 它在移动计算中效率低下。
  4. 它由一个欠发达的数据库访问层组成。

问题:Python 中是否存在运行时错误?举个例子?

答:是的,Python 中存在运行时错误。例如,如果你使用鸭子打字并且事物看起来像鸭子,那么即使它只是一面旗帜或邮票或任何其他东西,它也会被视为鸭子。在这种情况下,代码将是运行时错误。例如,打印“Hackr io”,那么运行时错误将是缺少 print ( ) 所需的括号。

问题:我们可以在 Python 中反转列表吗?

答:是的,我们可以使用 reverse() 方法在 Python 中保留一个列表。代码可以描述如下。

def reverse(s): 
  str = "" 
  for i in s: 
    str = i + str
  return str

问题:为什么我们需要在 Python 中休息一下?

答:Break 通过中断当前循环的执行并将控制转移到下一个块来帮助控制 Python 循环。

问题:为什么我们需要在 Python 中继续?

回答:continue 也有助于控制 Python 循环,但通过跳转到循环的下一次迭代而不用尽它。

问题:我们可以在 Python 中使用 break 并继续吗?如何?

答:Break 和 continue 在 Python 中可以一起使用。break 将停止当前循环的执行,而 jump 将进入另一个循环。

问题:Python 是否支持内部 do-while 循环?

答:没有 Python 不支持内在的 do-while 循环。

问:反向串的应用有多少种方式?

答:有五种方法可以应用反向字符串,其中包括以下五种。

  1. Loop
  2. 递归
  3. 扩展切片语法
  4. 反转

Python常见面试题有哪些:线程生命周期的不同阶段是什么?

答:线程生命周期的不同阶段可以表述如下。

  • 阶段 1:创建一个类,我们可以在其中覆盖 Thread 类的 run 方法。
  • 阶段 2:我们在新线程上调用 start()。该线程被用于调度目的。
  • 阶段 3:执行发生,线程开始执行,并达到运行状态。
  • 阶段 4:线程等待,直到调用包括 join() 和 sleep() 在内的方法。 
  • 阶段 5:线程等待或执行完毕后,发送等待线程进行调度。
  • 阶段 6运行线程通过执行终止并达到死状态来完成。

问题:Python 中关系运算符的用途是什么?

答:Python 中关系运算符的目的是比较值。

问题:Python 中的赋值运算符是什么?

答:Python 中的赋值运算符可以帮助将所有算术运算符与赋值符号组合在一起。

问题:为什么我们需要在 Python 中使用成员运算符?

答:  我们需要 Python 中的成员运算符,目的是确认该值是否是另一个的成员。

问题:身份运算符与成员运算符有何不同?

答案:与成员运算符不同,身份运算符比较值以确定它们是否具有相同的值。

问题:描述如何在 Python 中实现多线程。

Python面试题解析:即使 Python 带有一个多线程包,如果多线程背后的动机是为了加速代码,那么使用该包并不是首选。

这个包有一个叫做 GIL 或 Global Interpreter Lock 的东西,它是一个构造。它确保在任何给定时间执行一个且仅一个线程。一个线程获取 GIL,然后在将它传递给下一个线程之前做一些工作。

这发生得如此之快,以至于对用户来说似乎线程是并行执行的。显然,情况并非如此,因为它们只是轮流使用相同的 CPU 内核。此外,GIL 传递增加了执行的总体开销。

因此,如果你打算使用 threading 包来加速执行,则不建议使用该包。

Python常见面试题和答案合集:在 Python 中绘制 range 和 xrange 之间的比较。

答:就功能而言,range 和 xrange 是相同的。两者都允许生成整数列表。两者之间的主要区别在于 range 返回一个 Python 列表对象,而 xrange 返回一个 xrange 对象。

Xrange 无法像 range 那样在运行时生成静态列表。相反,它通过一种称为屈服的特殊技术根据需求创造价值。它与一种称为生成器的对象一起使用。

如果你有一个非常大的范围需要为其生成列表,那么 xrange 就是你要选择的功能。这对于处理内存敏感系统(例如智能手机)的场景尤其重要。

该范围是一个记忆野兽。使用它需要更多的内存,尤其是在需求巨大的情况下。因此,在创建整数数组以满足需要时,可能会导致内存错误并最终导致程序崩溃。

问题:解释 Python 中的继承及其各种类型?

答:继承使一个类能够获取另一个类的所有成员。这些成员可以是属性、方法或两者。通过提供可重用性,继承使得创建和维护应用程序变得更加容易。

获得的类称为子类或派生类。它从中获取的那个被称为超类或基类或父类。Python支持4种形式的继承:

  • 单一继承——单一派生类从单一超类获取。
  • 多级继承——从两个不同的基类中获取至少 2 个不同的派生类。
  • 分层继承——许多子类从一个超类中获得
  • 多重继承——派生类从多个超类获取。

问题:解释如何使用 Python 获取任何 URL 或网页的 Google 缓存年龄。

答:为了获取任何使用 Python 的 URL 或网页的 Google 缓存年龄,使用以下 URL 格式:

http://webcache.googleusercontent.com/search?q=cache:URLGOESHERE

只需将 URLGOESHERE 替换为你需要在 Python 中检索和查看其缓存的网站或网页的网址。

问题:请详细说明在Django中设置数据库。

答:建立数据库的过程是通过edit mysite/setting.py命令启动的。这是一个普通的 Python 模块,具有 Django 设置的模块级表示。Django 默认依赖 SQLite,使用方便,不需要任何其他安装。

SQLite 将数据存储为文件系统中的单个文件。现在,你需要告诉 Django 如何使用数据库。为此,需要使用项目的 setting.py 文件。必须将以下代码添加到文件中,以使数据库可用于 Django 项目:

DATABASES = {
 'default': {
 'ENGINE' : 'django.db.backends.sqlite3',
 'NAME' : os.path.join(BASE_DIR, 'db.sqlite3'),
 }
}

如果你需要使用 SQLite 以外的数据库服务器,例如 MS SQL、MySQL 和 PostgreSQL,那么你需要使用数据库的管理工具为你的 Django 项目创建一个全新的数据库。

你必须修改 DATABASE 'default' 项中的以下键,以使新数据库与 Django 项目一起使用:

  • ENGINE – 例如,当使用 MySQL 数据库时,将 'django.db.backends.sqlite3' 替换为 'django.db.backends.mysql'
  • NAME – 无论是使用 SQLite 还是其他一些数据库管理系统,数据库通常是系统上的一个文件。NAME 应包含文件的完整路径,包括该特定文件的名称。

注意: -当不选择 SQLite 作为数据库时,需要添加主机、密码和用户等设置。

查看Django的优点和缺点。

面向有经验和专业人士的高级 Python 面试问题

问题:如何区分深拷贝和浅拷贝?

答:当创建新的实例类型时,我们使用浅拷贝。它保留在新实例中复制的值。就像它复制值一样,浅拷贝也复制引用指针。

浅拷贝中复制的参考点对原始对象的引用。在类的任何成员中所做的任何更改都会影响相同的原始副本。浅拷贝可以更快地执行程序。

深拷贝用于存储已经复制的值。与浅拷贝不同,它不会将引用指针复制到对象。除了存储某个其他对象指向的新对象外,深拷贝还会引用一个对象。

对原始副本所做的更改不会影响使用引用或存储对象的任何其他副本。与浅拷贝相反,深拷贝使程序的执行速度变慢。这是因为它为每个被调用的对象制作了一些副本。

问题:你将如何区分 NumPy 和 SciPy?

答:通常,NumPy 只包含数组数据类型和最基本的操作,例如基本的逐元素函数、索引、整形和排序。所有数字代码都位于 SciPy 中。

由于 NumPy 最重要的目标之一是兼容性,该库试图保留其任一前辈支持的所有功能。因此,NumPy 包含一些线性代数函数,尽管它们更适合属于 SciPy 库。

除了其他几种数值算法之外,SciPy 还包含 NumPy 可用的线性代数模块的全功能版本。

问题:观察以下代码:

A0 = dict(zip(('a','b','c','d','e'),(1,2,3,4,5)))
A1 = range(10)A2 = sorted([i for i in A1 if i in A0])
A3 = sorted([A0[s] for s in A0])
A4 = [i for i in A1 if i in A3]
A5 = 
A6 = [[i,i*i] for i in A1]
print(A0,A1,A2,A3,A4,A5,A6)

写下代码的输出。

回答:

A0 = {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4} # 顺序可能会有所不同
A1 = range(0, 10)
A2 = []
A3 = [1, 2, 3, 4, 5]
A4 = [1, 2, 3, 4, 5]
A5 =
A6 = [[0, 0], [1, 1], [2, 4], [ 3, 9], [4, 16], [5, 25], [6, 36], [7, 49], [8, 64], [9, 81]]

Python常见面试题有哪些:Python 有一种叫做字典的东西。用一个例子来解释。

答: Python 编程语言中的字典是数据值的无序集合,例如地图。字典保存键:值对。它有助于定义键和值之间的一对一关系。通过键索引,典型的字典包含一对键和相应的值。

让我们以三个键为例,即网站、语言和产品。它们对应的值为 hackr.io、Python 和 Tutorials。该示例的代码将是:

dict={‘Website’:‘hackr.io’,‘Language’:‘Python’:‘Offering’:‘Tutorials’}
print dict[Website] #Prints hackr.io
print dict[Language] #Prints Python
print dict[Offering] #Prints Tutorials

问题:Python 支持负索引。它们是什么以及为什么使用它们?

答案: Python 中的序列是有索引的。它由正数和负数组成。正数使用 0 作为第一个索引,1 作为第二个索引,依此类推。因此,正数 n 的任何索引都是 n-1。

与正数不同,负数的索引编号从 -1 开始,它代表序列中的最后一个索引。同样,-2 表示倒数第二个索引。这些被称为负指数。负索引用于:

  • 从字符串中删除任何换行符,从而允许字符串除了最后一个字符,表示为 S[:-1]
  • 显示以正确顺序表示字符串的索引

问题:假设你需要从 IMDb 前 250 部电影页面收集和打印数据。用 Python 编写一个程序来执行此操作。(注意: - 你可以限制 3 个字段的显示信息;即电影名称、发行年份和评级。)

回答:

from bs4 import BeautifulSoup
import requests
import sys
url = 'http://www.imdb.com/chart/top'
response = requests.get(url)
soup = BeautifulSoup(response.text)
tr = soup.findChildren("tr")
tr = iter(tr)
next(tr) 
for movie in tr:
title = movie.find('td', {'class': 'titleColumn'} ).find('a').contents[0]
year = movie.find('td', {'class': 'titleColumn'} ).find('span', {'class': 'secondaryInfo'}).contents[0]
rating = movie.find('td', {'class': 'ratingColumn imdbRating'} ).find('strong').contents[0]
row = title + ' - ' + year + ' ' + ' ' + rating 
print(row)

问题:看看下面的代码:

try: if '1' != 1: 
raise "someError" 
else: print("someError has not occured") 
except "someError": pr
int ("someError has occured")

输出会是什么?

答:程序的输出将是“无效代码”。这是因为新的异常类必须从 BaseException 继承。

Python常见面试题和答案合集:你对 Python 中的monkey补丁有什么理解?

答:在运行时对类或模块进行的动态修改在 Python 中称为monkey修补。考虑以下代码片段:

# m.py
class MyClass:
def f(self):
print "f()"

我们可以像这样对程序进行monkey补丁:

import m
def monkey_f(self):
print "monkey_f()"
m.MyClass.f = monkey_f
obj = m.MyClass()
obj.f()

程序的输出将是monkey_f()。

这些示例演示了使用我们在模块 m 之外定义的函数(即monkey_f())对 MyClass 中 f() 的行为所做的更改。

问题:你对Python中编译链接的过程有什么理解?

答:为了编译新的扩展没有任何错误,Python 中使用了编译和链接。链接仅在编译完成时启动。

在动态加载的情况下,编译和链接的过程取决于相关系统提供的样式。为了提供配置设置文件的动态加载和重建解释器,使用了 Python 解释器。

问题:什么是 Flask,使用它有什么好处?

Python面试题解析: Flask 是Python的 Web微框架,以 Jinja2 和 Werkzeug 作为其依赖项。因此,它具有一些显着的优点:

  • Flask 对外部库几乎没有依赖
  • 由于更新需要一点外部依赖且安全漏洞较少,因此 Web 微框架使用起来很轻量级。
  • 具有内置开发服务器和快速调试器。

问题:Python 中的 map() 函数是做什么用的?

答案: map() 函数将给定的函数应用于可迭代对象的每个项目。然后它返回一个结果列表。然后可以将 map() 函数返回的值传递给 list() 和 set() 之类的函数。

通常,给定的函数是第一个参数,可迭代对象可用作 map() 函数的第二个参数。如果函数接受多个参数,则会给出几个表。

问题:Python 中的 Pickling 和 Unpickling 是什么?

答: Python 中的 Pickle 模块允许接受任何对象,然后将其转换为字符串表示形式。然后它通过转储功能将其转储到一个文件中。这个过程被称为酸洗。

酸洗的逆过程称为 unpickling,即从存储的字符串表示中检索原始 Python 对象。

问题:每当 Python 退出时,所有内存都不会被释放。为什么会这样?

答:退出时,Python 的内置有效清理机制开始发挥作用,并尝试释放或销毁所有其他对象。

但是,循环引用其他对象或从全局命名空间引用的对象的 Python 模块并不总是被释放或销毁。

这是因为不可能释放那些由 C 库保留的内存部分。

问题:用 Python 编写一个程序,用于获取 NumPy 数组中 N 个最大值的索引。

回答:

import numpy as np
arr = np.array([1, 3, 2, 4, 5])
print(arr.argsort()[-3:][::-1])
Output:
[4 3 1]

问题:编写代码以显示在 Python 中随机化列表中的项目以及输出。

回答:

from random import shuffle
x = ['lsbin.com', 'Is', 'The', 'Best', 'For', 'Learning', 'Python']
shuffle(x) 
print(x)
Output:
['For', 'Python', 'Learning', 'Is', 'Best', 'The', 'lsbin.com']

问题:解释在 Python 中管理的内存?

答: Python 私有堆空间代替了 Python 中的内存管理。它包含所有 Python 对象和数据结构。解释器负责处理这个私有堆,程序员无权访问它。Python 内存管理器负责为 Python 对象分配 Python 堆空间。程序员可以在核心 API 的帮助下访问代码的一些工具。Python 还提供了一个内置的垃圾收集器,它回收所有未使用的内存并释放内存并使其可用于堆空间。

问题:什么是 lambda 函数?

答:匿名函数称为 lambda 函数。该函数只能有一个语句,但可以有任意数量的参数。

a = lambda x,y : x+y
print(a(5, 6))

问题:什么是 Python 装饰器?

答:在 Python 语法中为轻松更改函数而进行的特定更改称为 Python 装饰器。

问题:区分列表和元组。

答:元组是不可变的,它可以被散列,例如。字典的键。另一方面,列表是可变的。

问题:在 Python 中如何传递参数?按值还是按引用?

答:所有的 Python 都是一个对象,所有的变量都持有对这个对象的引用。参考值根据功能而定;因此,无法更改引用的值。

问题:Python 提供的内置类型有哪些?

回答:

可变内置类型:

  • Lists
  • Sets
  • Dictionaries

不可变的内置类型:

  • Strings
  • Tuples
  • Numbers

问题:如何在 Python 中删除文件?

答:可以通过以下任一命令删除该文件:

os.remove(filename)
os.unlink(filename)

问题:什么是 Python 模块?

答:包含 Python 代码(如函数和变量)的文件是 Python 模块。Python 模块是具有 .py 扩展名的可执行文件。

Python 具有内置模块,其中一些是:

  • os
  • sys
  • math
  • random
  • data time
  • JSON

问题:// 运算符是什么?它的用途是什么?

答: //是一个Floor Divisionoperator,用于将两个操作数相除,结果为商,显示小数点前的数字。例如,10//5 = 2 和 10.0//5.0 = 2.0。

问:split函数是干什么用的?

答案: split 函数使用定义的分隔符将字符串拆分为较短的字符串。它返回字符串中存在的所有单词的列表。

问题:解释狗桩效应。

答:缓存过期,网站同时被客户端的多个请求命中的事件。使用信号量锁可以防止狗桩效应。在这个系统中,当值过期时,第一个进程获取锁并开始生成新值。

问题:Python 中的 pass 是什么?

答:无操作Python语句指的是pass。它是复合语句中的一个占位符,在那里应该有一个空白或什么都不写。

Python常见面试题有哪些:Python 是区分大小写的语言吗?

答:是的,Python 是一种区分大小写的语言。

问题:在 Python 中定义切片。

答:切片是指从列表、元组、字符串等序列类型中选择项目范围的机制。

问题:什么是文档字符串?

答: Docstring 是 Python 文档字符串,它是一种记录 Python 函数、类和模块的方式。

问题: [::-1} 有什么用?

答案: [::-1} 反转数组或序列的顺序。但是,原始数组或列表保持不变。

import array as arr
Num_Array=arr.array('k',[1,2,3,4,5])
Num_Array[::-1]

问题:定义 Python 迭代器。

答案:可以遍历的一组元素、容器或对象。

问题:如何用 Python 编写注释?

答: Python 中的注释以 # 字符开头,也可以写在 docstring 中(三引号内的字符串)

问题:如何将字符串的第一个字母大写?

答: Capitalize() 方法将字符串的第一个字母大写,如果字母已经大写则返回原始字符串

问题:什么是,not 和 in 运算符?

答:运算符是取两个或多个值并返回相应结果的函数。

  • is:当两个操作数为真时返回真
  • not:返回布尔值的倒数
  • in:检查某个元素是否存在于某个序列中。

问题:Python 中如何删除文件?

Python面试题解析:要在 Python 中删除文件:

  1. 导入操作系统模块
  2. 使用 os.remove() 函数

问题:Python 中模块是如何导入的?

答:通过以下三种方式之一使用 import 关键字导入模块:

import array 
import array as arr
from array import *

问题:什么是monkey补丁?

答:运行时对类或模块的动态修改是指monkey补丁。

问题:Python 支持多重继承吗?

答:是的,在 Python 中,一个类可以从多个父类派生。

问题:方法 object() 有什么作用?

答案:该方法返回一个无特征的对象,该对象是所有类的基础。该方法不带任何参数。

问题:什么是pep 8?

答: Python Enhancement Proposal 或 pep 8 是一组规则,用于指定如何格式化 Python 代码以获得最大的可读性。

Python常见面试题和答案合集:Python 中的命名空间是什么?

答:用于确保名称唯一以避免命名冲突的命名系统称为命名空间。

问题:Python 中需要缩进吗?

答: Python 中需要缩进,如果没有正确完成代码将无法正确执行并且可能会抛出错误。缩进通常使用四个空格字符完成。

问题:在 Python 中定义一个函数

答:调用时执行的代码块被定义为函数。关键字 def 用于定义 Python 函数。

问题:在 Python 中定义 self

答:类或对象的实例在 Python 中是 self。它作为第一个参数包含在内。它有助于区分具有局部变量的类的方法和属性。

结论

所以,这总结了最好的 Python 面试问题列表。学习永远不会变得更容易,你需要变得更好。因此,这里有一些Python 书籍的最佳选择,可以仔细检查你的 Python 准备情况。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: