我们整理了Python面试的主要问题清单,分为7个部分:
- 基本面试问题
- OOPS面试问题
- 基本的Python程序
- Python库面试问题
- 数据分析面试题
- 选择题(MCQ)
基本的Python面试问题
Q1。Python中的列表和元组有什么区别?
LIST | TUPLES |
---|---|
列表是可变的,即可以编辑。 | 元组是 不可变的(元组是无法编辑的列表)。 |
列表比元组慢。 | 元组比列表快。 |
语法:list_1 = [10,'全栈程序员社区',20] | 语法:tup_1 =(10,'全栈程序员社区',20) |
Q2。Python的主要功能是什么?
- Python是一种解释型语言。这意味着,与C及其变种之类的语言不同,Python无需在运行前进行编译。其他解释语言包括PHP和Ruby。
- Python是动态类型的,这意味着您在声明变量或类似的东西时不需要声明变量的类型。您可以做类似的事情
x=111
,然后x="I'm mushiming"
没有错误 - Python非常适合面向对象的编程,因为它允许定义类以及组成和继承。Python没有访问说明(如C ++的
public
,private
)。 - 在Python中,函数是一流的对象。这意味着可以将它们分配给变量,从其他函数返回并传递给函数。类也是一流的对象
- 编写Python代码速度很快,但运行它通常比编译语言要慢。幸运的是,Python允许包含基于C的扩展,因此可以消除瓶颈,并且经常可以解决瓶颈。该numpy的包就是一个很好的例子,它真的相当快的,因为很多数量的运算Python实际上是不参与的。
- Python在许多领域都有使用-Web应用程序,自动化,科学建模,大数据应用程序等等。它也经常用作“胶水”代码,以使其他语言和组件发挥出色。
Q3。python是什么类型的语言?编程还是脚本?
回答: Python能够编写脚本,但从一般意义上讲,它被认为是一种通用编程语言。
Q4。Python是一种解释语言吗?
回答:解释语言是在运行时之前不在机器级别代码中的任何编程语言。因此,Python是一种解释型语言。
Q5。什么是pep 8?
回答: PEP代表Python增强建议书。这是一组规则,用于指定如何格式化Python代码以实现最大的可读性。
Q6。如何在Python中管理内存?
答:
- python中的内存管理由Python专用堆空间管理。所有Python对象和数据结构都位于私有堆中。程序员无权访问此私有堆。python解释器代替了这个。
- Python对象的堆空间分配是由Python的内存管理器完成的。核心API允许访问一些工具,以便程序员进行编码。
- Python还具有一个内置的垃圾收集器,该垃圾收集器回收所有未使用的内存,并使其可用于堆空间。
Q7。Python中的命名空间是什么?
回答:命名空间是用于确保名称唯一以避免命名冲突的命名系统。
Q8。什么是PYTHONPATH?
回答:这是一个环境变量,在导入模块时使用。每当导入模块时,都会查找PYTHONPATH以检查各个目录中是否存在导入的模块。解释器使用它来确定要加载哪个模块。
Q9。什么是python模块?命名Python中一些常用的内置模块?
回答: Python模块是包含Python代码的文件。该代码可以是函数类或变量。Python模块是包含可执行代码的.py文件。
一些常用的内置模块是:
- 操作系统-os
- 系统-sys
- 数学-math
- 随机-random
- 资料时间-data time
- JSON格式
Q10.Python中的局部变量和全局变量是什么?
全局变量:
在函数外部或全局空间中声明的变量称为全局变量。程序中的任何函数都可以访问这些变量。
局部变量:
在函数内部声明的任何变量都称为局部变量。此变量存在于局部空间而不是全局空间中。
例:
a=2
def add():
b=3
c=a+b
print(c)
add()
输出: 5
当您尝试在函数add()之外访问局部变量时,它将引发错误。
Q11。python是否区分大小写?
答:是的。Python是区分大小写的语言。
Q12。什么是Python中的类型转换?
回答:类型转换是指将一种数据类型转换为另一种数据类型。
int() –将任何数据类型转换为整数类型
float() –将任何数据类型转换为float类型
ord() –将字符转换为整数
hex()–将整数转换为十六进制
oct() –将整数转换为八进制
tuple()–此函数用于转换为元组。
set()–此函数在转换为set后返回类型。
list()– 此函数用于将任何数据类型转换为列表类型。
dict()– 此函数用于将顺序(键,值)的元组转换为字典。
str()– 用于将整数转换为字符串。
复数(实数,imag)– 此函数将实数转换为复数(实数,imag)。
Q13。如何在Windows上安装Python并设置路径变量?
回答:要在Windows上安装Python,请执行以下步骤:
- 从以下链接安装python:https : //www.python.org/downloads/
- 将其安装在您的PC上。在命令提示符下使用以下命令查找PC上PYTHON的安装位置:cmd python。
- 然后转到高级系统设置,添加一个新变量,并将其命名为PYTHON_NAME,然后粘贴复制的路径。
- 查找路径变量,选择其值,然后选择“编辑”。
- 如果该值不存在,请在该值的末尾添加分号,然后键入%PYTHON_HOME%
Q14。python是否需要缩进?
回答:缩进对于Python是必需的。它指定一个代码块。循环,类,函数等中的所有代码都在缩进块中指定。通常使用四个空格字符来完成。如果您的代码没有必要缩进,那么它将无法正确执行,并且也会引发错误。
Q15。Python数组和列表有什么区别?
回答:在Python中,数组和列表具有相同的数据存储方式。但是,数组只能容纳一个数据类型元素,而列表可以容纳任何数据类型元素。
例:
import array as arr
My_Array=arr.array('i',[1,2,3,4])
My_list=[1,'system_mush',1.20]
print(My_Array)
print(My_list)
输出:
array('i', [1, 2, 3, 4]) [1, 'system_mush', 1.2]
Q16。Python中的函数是什么?
回答:函数是仅在调用时才执行的代码块。要定义Python函数,可以使用def关键字。
例:
def Newfunc():
print("您好,欢迎关注Java架构师社区公众号")
Newfunc(); #calling the function
输出:您好,欢迎关注Java架构师社区公众号
Q17。什么是init?
回答: init是Python中的方法或构造函数。创建类的新对象/实例时,将自动调用此方法以分配内存。所有类都具有init方法。
这是一个如何使用它的例子。
class Employee:
def __init__(self, name, age,salary):
self.name = name
self.age = age
self.salary = 20000
E1 = Employee("XYZ", 23, 20000)
# E1 is the instance of class Employee.
#__init__ allocates memory for E1.
print(E1.name)
print(E1.age)
print(E1.salary)
输出:
XYZ
23
20000
Q18。什么是lambda函数?
回答:匿名函数称为lambda函数。此函数可以具有任意数量的参数,但是只能有一个语句。
例:
a = lambda x,y : x+y
print(a(5, 6))
输出: 11
Q19。Python中的Self是什么?
回答:
Self是类的实例或对象。在Python中,这明确包含为第一个参数。但是,在Java中不是这种情况,它是可选的。它有助于区分具有局部变量的类的方法和属性。
init方法中的self变量引用新创建的对象,而其他方法中的self变量引用其方法被调用的对象。
Q20。 什么是break,continue 和 pass?
Break | 当满足某些条件并将控制权转移到下一条语句时,允许循环终止。 |
---|---|
Continue | 当满足某些特定条件并将控制权转移到循环的开始时,允许跳过循环的某些部分 |
Pass | 在语法上需要一些代码块,但想跳过其执行时使用。这基本上是一个空操作。当执行此操作时,没有任何反应。 |
Q21。 [::-1}是做什么的?
回答: [::-1]用于反转数组或序列的顺序。
例如:
import array as arr
My_Array=arr.array('i',[1,2,3,4,5])
My_Array[::-1]
输出:array('i',[5,4,3,2,1])
[::-1]重印有序数据结构(如数组或列表)的反向副本。原始数组或列表保持不变。
Q22。您如何在Python中将列表项随机化?
答: 请看下面的例子:
from random import shuffle
x = ['Keep', 'The', 'Blue', 'Flag', 'Flying', 'High']
shuffle(x)
print(x)
以下代码的输出如下。
['Flying', 'Keep', 'Blue', 'High', 'The', 'Flag']
Q23。什么是python迭代器?
回答:迭代器是可以遍历或迭代的对象。
Q24。如何在Python中生成随机数?
回答: 随机模块是用于生成随机数的标准模块。该方法定义为:
import random
random.random
语句random.random()方法返回[0,1)范围内的浮点数。该函数生成随机浮点数。随机类使用的方法是隐藏实例的绑定方法。可以完成Random实例来显示创建单个线程的不同实例的多线程程序。在此使用的其他随机生成器是:
- randrange(a,b):选择一个整数并定义[a,b)之间的范围。它通过从指定范围内随机选择元素来返回元素。它不会建立范围对象。
- Uniform(a,b):选择一个在[a,b)范围内定义的浮点数。Iyt返回该浮点数
- normalvariate(mean,sdev):用于正态分布,其中mu是平均值,而sdev是用于标准差的sigma。
- 使用和实例化的Random类创建一个独立的多个随机数生成器。
Q25。range和xrange有什么区别?
回答: 就功能而言,在大多数情况下,xrange和range完全相同。它们都提供了一种生成整数列表供您使用的方法,但是您可以随意使用。唯一的区别是range返回一个Python列表对象,而x range返回一个xrange对象。
这意味着xrange在运行时实际上不会像range那样生成静态列表。它使用称为yield的特殊技术根据需要创建值。该技术与一种称为生成器的对象一起使用。这意味着,如果您的范围非常大,则想生成一个列表(例如十亿),则可以使用xrange函数。
如果您有一个真正的内存敏感系统(例如正在使用的手机),则尤其如此,因为range将使用尽可能多的内存来创建整数数组,这可能导致内存错误并使您的崩溃程序。
Q26。你如何用python写注释?
回答: Python中的注释以#字符开头。但是,有时也可以使用docstrings(用三引号引起来的字符串)进行注释。
例:
#Comments in Python start like this
print("Comments in Python start with a #")
输出: Python中的注释以#开头
Comments in Python start with a #
Q27。什么是 pickling和unpickling?
回答: Pickle模块接受任何Python对象并将其转换为字符串表示形式,并使用转储函数将其转储到文件中,此过程称为pickling。从存储的字符串表示形式检索原始Python对象的过程称为unpickling。
Q28。python中的生成器是什么?
回答:返回可迭代项目集的函数称为生成器。
Q29。您将如何大写字符串的第一个字母?
回答:在Python中,capitalize()方法将字符串的首字母大写。如果字符串开头已经由大写字母组成,那么它将返回原始字符串。
Q30。您如何将字符串转换为全部小写?
回答:要将字符串转换为小写,可以使用lower()函数。
例:
stg='ABCD'
print(stg.lower())
输出:
abcd
Q31。如何在python中注释多行?
回答:多行注释出现在多行中。所有要注释的行都以#开头。您也可以使用非常好的 快捷方式注释多行。您需要做的就是按住ctrl键,并 在要包含#个字符的任何地方单击鼠标左键,然后只键入一次#。这将注释您引入光标的所有行。
Q32。Python中的文档字符串是什么?
回答:******文档字符串实际上不是注释,但是它们是 文档字符串。这些文档字符串用三引号引起来。它们没有分配任何变量,因此有时也可以用作注释的目的。
例:
"""
Using docstring as a comment.
This code divides 2 numbers
"""
x=8
y=4
z=x/y
print(z)
输出: 2.0
Q33。操作符和操作符的目的是什么?
回答:运算符是特殊功能。它们采用一个或多个值并产生相应的结果。
is:当两个操作数为true时返回true(例如:“ a”为“ a”)
not:返回布尔值的倒数
in:检查某个元素是否以某种顺序存在
Q34。Python中help()和dir()函数的用法是什么?
回答: Help()和dir()这两个函数都可以从Python解释器访问,并用于查看内置函数的合并转储。
- Help()函数:help()函数用于显示文档字符串,还可以帮助您查看与模块,关键字,属性等有关的帮助。
- Dir()函数:dir()函数用于显示定义的符号。
Q35。每当Python退出时,为什么不取消分配所有内存?
答:
- 每当Python退出时,尤其是那些循环引用其他对象或从全局名称空间引用的对象的Python模块都不会总是被取消分配或释放。
- 不能取消分配C库保留的那些内存部分。
- 退出时,由于具有自己有效的清除机制,Python会尝试取消分配/销毁所有其他对象。
Q36。Python中的字典是什么?
回答: Python中的内置数据类型称为字典。它定义了键和值之间的一对一关系。字典包含一对键及其对应的值。字典由键索引。
让我们举个例子:
下面的示例包含一些键。国家,首都和总理。它们对应的值分别是印度,德里和莫迪。
dict={'Country':'India','Capital':'Delhi','PM':'Modi'}
print dict[Country]
输出:India
print dict[Capital]
输出:Delhi
print dict[PM]
输出:Modi
Q37。如何在python中使用三元运算符?
答案: 三元运算符是用于显示条件语句的运算符。它由true或false值以及必须对其评估的语句组成。
语法:
三元运算符将为:
[on_true]如果[expression]否则[on_false] x,y = 25,50big = x如果x <y否则
例:
该表达式的求值方式类似于x < y else y,在这种情况下,如果x < y为true,则该值以big = x返回,如果不正确,则将发送big = y。
Q38。这是什么意思: args, * kwargs?为什么我们要使用它?*
回答: 当我们不确定要向函数传递多少个参数时,或者如果要将存储的参数列表或元组传递给函数时,可以使用* args。** kwargs在我们不知道将多少个关键字参数传递给一个函数时使用,或者可用于将字典的值作为关键字参数传递。标识符args和kwargs是一个约定,您也可以使用* bob和** billy,但这并不明智。
Q39。len()是做什么的?
Ans:用于确定字符串,列表,数组等的长度。
例:
stg='ABCD'
len(stg)
Q40。解释Python中"re"模块的split(),sub(),subn()方法。
回答: 为了修改字符串,Python的“ re”模块提供了3种方法。他们是:
- split()–使用正则表达式模式将给定的字符串“拆分”为列表。
- sub()–查找所有与正则表达式模式匹配的子字符串,然后将其替换为其他字符串
- subn()–它类似于sub(),并且还返回新字符串以及no。更换。
Q41。什么是负索引,为什么要使用它们?
回答: Python中的序列已编入索引,并且由正数和负数组成。正数使用“ 0”作为第一个索引,使用“ 1”作为第二个索引,过程继续进行。
负数的索引从代表序列中最后一个索引的“ -1”开始,而倒数第二个索引则是“ -2”,并且该序列像正数一样前移。
负索引用于从字符串中删除任何换行符,并允许字符串除以S [:-1]给出的最后一个字符外。负索引还用于显示索引以正确的顺序表示字符串。
Q42。 什么是Python包?
回答: Python软件包是包含多个模块的名称空间。
Q43。如何用Python删除文件?
回答:要在Python中删除文件,您需要导入OS模块。之后,您需要使用os.remove()函数。
例:
import os
os.remove("xyz.txt")
Q44。python的内置类型是什么?
回答: Python中的内置类型如下:
- Integers
- Floating-point
- Complex numbers
- Strings
- Boolean
- Built-in functions
Q45。与(嵌套)Python列表相比,NumPy数组具有什么优势?
答:
- Python的列表是有效的通用容器。它们支持(相当)高效的插入,删除,附加和连接,并且Python的列表理解使它们易于构造和操作。
- 它们有一定的局限性:它们不支持“向量化”操作,例如逐元素加法和乘法,并且它们可以包含不同类型的对象这一事实意味着Python必须存储每个元素的类型信息,并且在操作时必须执行类型调度代码在每个元素上。
- NumPy不仅效率更高;这也更加方便。您可以免费获得许多矢量和矩阵运算,有时这可以避免不必要的工作。而且它们也得到有效实施。
- NumPy数组更快,您可以使用NumPy,FFT,卷积,快速搜索,基本统计信息,线性代数,直方图等内置大量内容。
Q46。 如何将值添加到python数组?
回答:可以使用append(), extend() 和 insert(i,x) 函数将元素添加到数组 。
例:
a=arr.array('d', [1.1 , 2.1 ,3.1] )
a.append(3.4)
print(a)
a.extend([4.5,6.3,6.8])
print(a)
a.insert(2,3.8)
print(a)
输出:
array('d',[1.1,2.1,3.1,3.4])
array('d',[1.1,2.1,3.1,3.4,4.5,6.3,6.8])
array('d',[1.1,2.1,3.8,3.1,3.4,4.5,6.3,6.8])
Q47。如何删除值到python数组?
回答:可以使用pop() 或 remove() 方法删除数组元素 。这两个函数的区别在于前者返回删除的值,而后者不返回。
例:
a=arr.array('d', [1.1, 2.2, 3.8, 3.1, 3.7, 1.2, 4.6])
print(a.pop())
print(a.pop(3))
a.remove(1.1)
print(a)
输出:
4.6
3.1
array('d',[2.2,3.8,3.7,1.2])
Q48。 Python是否具有OOps概念?
回答: Python是一种面向对象的编程语言。这意味着可以通过创建对象模型在python中解决任何程序。但是,Python既可以当作过程语言,也可以当作结构语言。
Q49。深层复制和浅层复制有什么区别?
回答: 创建新实例类型时,将使用浅表副本,并且它将复制的值保留在新实例中。浅复制用于复制参考指针,就像复制值一样。这些引用指向原始对象,并且在类的任何成员中所做的更改也会影响其原始副本。浅拷贝允许更快地执行程序,并且取决于所使用的数据大小。
深度复制用于存储已复制的值。深层复制不会将引用指针复制到对象。它引用一个对象,并存储其他对象指向的新对象。在原始副本中所做的更改不会影响使用该对象的任何其他副本。由于为每个被调用的对象制作了某些副本,因此深层复制会使程序的执行速度变慢。
Q50。如何在Python中实现多线程?
答:
- Python有一个多线程程序包,但是如果您想使用多线程来加快代码速度,那么使用它通常不是一个好主意。
- Python有一个称为全局解释器锁(GIL)的构造。GIL确保您的“线程”之一只能在任何一次执行。线程获取GIL,做一些工作,然后将GIL传递到下一个线程。
- 这发生得非常快,以至于人眼似乎您的线程正在并行执行,但实际上它们只是使用相同的CPU内核轮流执行。
- 所有这些GIL传递都会增加执行开销。这意味着,如果您想使代码运行更快,那么使用线程包通常不是一个好主意。
Q51。 在python中进行编译和链接的过程是什么?
回答: 编译和链接允许正确扩展新扩展名,而不会出现任何错误,并且只有在通过编译过程时才能进行链接。如果使用动态加载,则取决于系统提供的样式。python解释器可用于提供配置设置文件的动态加载,并将重新构建解释器。
在此所需的步骤为:
- 创建系统编译器支持的任何名称和任何语言的文件。例如file.c或file.cpp
- 将此文件放在正在使用的发行版的Modules /目录中。
- 在Modules /目录中存在的Setup.local文件中添加一行。
- 使用垃圾邮件file.o运行文件
- 成功运行此命令后,可使用顶层目录上的make命令来重建解释器。
- 如果文件被更改,则使用命令“ make Makefile”运行rebuildMakefile。
Q52。 **什么是Python库?列举几个。 **
Python库是Python软件包的集合。一些最常用的python库是– Numpy,Pandas,Matplotlib,Scikit-learn等。
Q53。 拆分的用途是什么?
split()方法用于在Python中分隔给定的字符串。
例:
a="edureka python"
print(a.split())
输出: ['edureka','python']
Q54。 如何在python中导入模块?
可以使用import 关键字导入模块。您可以通过三种方式导入模块:
例:
import array #importing using the original module name
import array as arr # importing using an alias name
from array import * #imports everything present in the array module
OOPS面试问题
Q55。用一个例子解释Python中的继承。
答案: 继承允许一个类获取另一类的所有成员(例如属性和方法)。继承提供了代码可重用性,使创建和维护应用程序变得更加容易。我们继承的类称为超类,而继承的类称为派生/子类。
它们是Python支持的不同类型的继承:
- 单一继承–派生类获取单个超类的成员。
- 多级继承-从基类base1继承的派生类d1和从base2继承的d2。
- 层次继承–从一个基类可以继承任意数量的子类
- 多重继承–派生类继承自多个基类。
Q56。如何在Python中创建类?
回答: Python中的类是使用class关键字创建的。
例:
class Employee:
def __init__(self, name):
self.name = name
E1=Employee("abc")
print(E1.name)
输出: abc
Q57。Python中的猴子补丁是什么?
回答: 在Python中,术语“猴子补丁”仅指运行时对类或模块的动态修改。
考虑以下示例:
# m.py
class MyClass:
def f(self):
print "f()"
然后我们可以像这样运行猴子补丁测试:
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()的行为进行了一些更改。
Q58。python是否支持多重继承?
回答:多重继承意味着一个类可以从多个父类派生。与Java不同,Python确实支持多重继承。
问59.什么是Python中的多态?
回答:多态性是指采取多种形式的能力。因此,例如,如果父类具有一个名为ABC的方法,则子类也可以具有一个具有相同名称和参数的ABC方法。Python允许多态。
Q60。在Python中定义封装?
回答:封装意味着将代码和数据绑定在一起。封装示例中的Python类。
Q61。您如何在Python中进行数据抽象?
回答:数据抽象仅提供所需的详细信息,并从世界中隐藏实现。这可以在Python中通过使用接口和抽象类来实现。
Q62。python是否使用访问说明符?
回答: Python不会剥夺对实例变量或函数的访问权限。Python提出了在变量,函数或方法的名称前加上单下划线或双下划线的概念,以模仿受保护和专用访问说明符的行为。
Q63。如何在Python中创建一个空类?
回答:空类是在其块内未定义任何代码的类。可以使用pass 关键字创建它 。但是,您可以在类本身之外创建此类的对象。在PYTHON中,PASS命令在执行时不执行任何操作。这是一个空语句。
例如-
class a:
pass
obj=a()
obj.name="xyz"
print("Name = ",obj.name)
输出:
名称= xyz
Q64。object()有什么作用?
回答:它返回一个无特征的对象,该对象是所有类的基础。而且,它不带任何参数。
基本的Python程序
Q65。用Python编写程序以执行冒泡排序算法。
def bs(a): # a = name of list
b=len(a)-1 # minus 1 because we always compare 2 adjacent values
for x in range(b):
for y in range(b-x):
if a[y]>a[y+1]:
a[y],a[y+1]=a[y+1],a[y]
return a
a=[32,5,3,6,7,54,87]
bs(a)
输出: [3、5、6、7、32、54、87]
Q66。用Python编写程序以生成星形三角形。
def pyfunc(r):
for x in range(r):
print(' '*(r-x-1)+'*'*(2*x+1))
pyfunc(9)
输出:
*
***
*****
*******
*********
***********
*************
***************
*****************
Q67。编写程序以用Python生成Fibonacci系列。
# Enter number of terms needed #0,1,1,2,3,5....
a=int(input("Enter the terms"))
f=0 #first element of series
s=1 #second element of series
if a<=0:
print("The requested series is
",f)
else:
print(f,s,end=" ")
for x in range(2,a):
next=f+s
print(next,end=" ")
f=s
s=next</pre>
输出:输入术语5 0 1 1 2 3
Q68。用Python编写程序以检查数字是否为质数。
a=int(input("enter number"))
if a>1:
for x in range(2,a):
if(a%x)==0:
print("not prime")
break
else:
print("Prime")
else:
print("not prime")
输出:
输入数字3
Q69。用Python编写程序以检查序列是否是回文。
a=input("enter sequence")
b=a[::-1]
if a==b:
print("palindrome")
else:
print("Not a Palindrome")
输出:
输入序列323 palindrome
Q70。编写一个单行,将计算文件中大写字母的数量。即使文件太大而无法容纳在内存中,您的代码也应该可以工作。
回答: 让我们先编写一个多行解决方案,然后将其转换为单行代码。
with open(SOME_LARGE_FILE) as fh:
count = 0
text = fh.read()
for character in text:
if character.isupper():
count += 1
现在,我们将尝试将其转换为一行。
count sum(1 for line in fh for character in line if character.isupper())
Q71。用Python为数字数据集编写排序算法。
回答: 以下代码可用于在Python中对列表进行排序:
list = ["1", "4", "0", "6", "9"]
list = [int(i) for i in list]
list.sort()
print (list)
Q72。看下面的代码,记下A0,A1,…An的最终值。
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 = {i:i*i for i in A1}
A6 = [[i,i*i] for i in A1]
print(A0,A1,A2,A3,A4,A5,A6)
回答: 以下将是A0,A1,... A6的最终输出
A0 = {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4} # the order may vary
A1 = range(0, 10)
A2 = []
A3 = [1, 2, 3, 4, 5]
A4 = [1, 2, 3, 4, 5]
A5 = {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
A6 = [[0, 0], [1, 1], [2, 4], [3, 9], [4, 16], [5, 25], [6, 36], [7, 49], [8, 64], [9, 81]]
Python库面试问题
Q73。解释一下Flask是什么及其好处?
回答: Flask是基于“ Werkzeug,Jinja2和良好意图” BSD许可证的Python Web微框架。Werkzeug和Jinja2是其两个依赖项。这意味着它将几乎不依赖外部库。它使框架变得轻巧,同时几乎没有更新依赖性,并且安全漏洞更少。
会话基本上使您能够记住从一个请求到另一个请求的信息。在烧瓶中,会话使用签名的cookie,因此用户可以查看会话内容并进行修改。如果只有会话具有密钥Flask.secret_key,则用户可以修改会话。
Q74。Django比Flask好吗?
回答: Django和Flask将在网络浏览器中键入的URL或地址映射为Python中的函数。
与Django相比,Flask简单得多,但是Flask并没有为您做很多事情,这意味着您需要指定详细信息,而Django为您做了很多工作,其中您不需要做很多工作。Django由预编写的代码组成,用户需要对其进行分析,而Flask则允许用户创建自己的代码,因此使理解代码变得更加简单。从技术上讲,两者都同样好,并且都有各自的优缺点。
Q75。提及Django,Pyramid和Flask之间的差异。
答:
- Flask是一种“微框架”,主要用于具有更简单要求的小型应用程序。在flask中,您必须使用外部库。烧瓶可以使用了。
- 金字塔是为较大的应用程序而构建的。它提供了灵活性,并允许开发人员为他们的项目使用正确的工具。开发人员可以选择数据库,URL结构,模板样式等。金字塔是可配置的。
- Django也可以像金字塔一样用于更大的应用程序。它包括一个ORM。
Q76 。讨论Django体系结构。
答案: Django MVT模式:
开发人员提供模型,视图和模板,然后将其映射到URL,而Django发挥了神奇的作用将其提供给用户。
Q77。说明如何在Django中设置数据库。
回答: 您可以使用命令edit mysite / setting.py,它是一个普通的python模块,模块级别表示Django设置。
Django默认使用SQLite。对于Django用户而言,这很容易,因为它不需要任何其他类型的安装。如果您的数据库选择不同,则必须与DATABASE“默认”项中的以下键相匹配才能匹配数据库连接设置。
- 引擎:您可以使用'django.db.backends.sqlite3','django.db.backeneds.mysql','django.db.backends.postgresql_psycopg2','django.db.backends.oracle'等更改数据库上
- 名称:数据库的名称。如果您使用SQLite作为数据库,则数据库将是计算机上的文件,名称应为完整的绝对路径,包括该文件的文件名。
- 如果您未选择SQLite作为数据库,则必须添加密码,主机,用户等设置。
Django使用SQLite作为默认数据库,它将数据作为单个文件存储在文件系统中。如果您确实有数据库服务器-PostgreSQL,MySQL,Oracle,MSSQL-并希望使用它而不是SQLite,请使用数据库的管理工具为Django项目创建一个新数据库。无论哪种方式,在您拥有(空)数据库之后,剩下的就是告诉Django如何使用它。这是项目的settings.py文件进入的位置。
我们将以下代码行添加到setting.py文件:
DATABASES = {
'default': {
'ENGINE' : 'django.db.backends.sqlite3',
'NAME' : os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
Q78。举例说明如何在Django中编写VIEW?
答: 这就是我们可以在Django中使用的视图视图:
from django.http import HttpResponse
import datetime
def Current_datetime(request):
now = datetime.datetime.now()
html = "<html><body>It is now %s</body></html> % now
return HttpResponse(html)
以HTML文档形式返回当前日期和时间
Q79。提及Django模板的组成。
回答: 模板是一个简单的文本文件。它可以创建任何基于文本的格式,如XML,CSV,HTML等。模板包含在评估模板时将变量替换为值的变量,以及用于控制模板逻辑的标签(%tag%)。
Q80。解释Django框架中会话的使用?
回答: Django提供了一个会话,使您可以基于每个站点访问者存储和检索数据。Django通过将会话ID cookie放置在客户端并将所有相关数据存储在服务器端来抽象化发送和接收cookie的过程。
因此数据本身不存储在客户端。从安全角度来看,这很好。
Q81。 列出Django中的继承样式。
回答: 在Django中,有三种可能的继承样式:
- 抽象基类:当您只希望父类的类保留您不想为每个子模型键入的信息时,使用此样式。
- 多表继承:如果要对现有模型进行子类化并且需要每个模型都有自己的数据库表,则使用此样式。
- 代理模型:如果只想修改模型的Python级别行为,而不更改模型的字段,则可以使用此模型。
Web Scraping-Python面试问题
Q82。如何使用我已经知道URL地址的Python在本地保存图像?
回答: 我们将使用以下代码从URL地址本地保存图片
import urllib.request
urllib.request.urlretrieve("URL", "local-filename.jpg")
Q83。如何获取任何URL或网页的Google缓存年龄?
回答: 请使用以下网址格式:
http://webcache.googleusercontent.com/search?q=cache:URLGOESHERE
确保将“ URLGOESHERE”替换为要检索其缓存并查看时间的页面或站点的正确网址。例如,要检查edureka.co的Google Webcache年龄,您可以使用以下URL:
http://webcache.googleusercontent.com/search?q=cache:edureka.co
Q84。您需要从IMDb的前250个电影页面中抓取数据。它只能包含电影名称,年份和等级字段。
答: 我们将使用以下代码行:
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)
上面的代码将帮助从IMDb的前250名列表中删除数据
数据分析– Python面试问题
Q85。Python中的地图功能是什么?
回答: map函数在作为第二参数给出的iterable的所有元素上执行作为第一参数给出的功能。如果给定的函数接受多个参数,那么将给出许多可迭代的变量。#关注链接以了解更多类似功能。
Q86。python numpy是否比列表更好?
回答: 由于以下三个原因,我们使用python numpy数组而不是列表:
- Less Memory
- Fast
- Convenient
Q87。如何获取NumPy数组中N个最大值的索引?
回答: 我们可以使用以下代码在NumPy数组中获得N个最大值的索引:
import numpy as np
arr = np.array([1, 3, 2, 4, 5])
print(arr.argsort()[-3:][::-1])
输出量
[ 4 3 1 ]
Q88。如何使用Python / NumPy计算百分位数?
答: 我们可以使用以下代码计算百分位数
import numpy as np
a = np.array([1,2,3,4,5])
p = np.percentile(a, 50) #Returns 50th percentile, e.g. median
print(p)
输出量
3
Q89。NumPy和SciPy有什么区别?
答:
- 在理想情况下,NumPy除了数组数据类型和最基本的操作外,将不包含任何内容:索引,排序,重塑,基本的元素函数等。
- 所有数字代码都将驻留在SciPy中。但是,NumPy的重要目标之一是兼容性,因此NumPy尝试保留其前任任一个所支持的所有功能。
- 因此,NumPy包含一些线性代数函数,即使这些函数更恰当地属于SciPy。无论如何,SciPy都包含线性代数模块的更多全功能版本,以及许多其他数值算法。
- 如果您正在使用python进行科学计算,则可能应该同时安装NumPy和SciPy。大多数新功能属于SciPy,而不是NumPy。
Q90。您如何使用NumPy / SciPy制作3D图/可视化图像?
回答: 与2D绘图一样,3D图形也超出了NumPy和SciPy的范围,但就像在2D情况下一样,存在与NumPy集成的软件包。Matplotlib在mplot3d子软件包中提供了基本的3D绘图,而Mayavi利用强大的VTK引擎提供了多种高质量的3D可视化功能。
选择题(MCQ)
Q91。以下哪个语句创建字典?(可能有多个正确答案)
a) d = {}
b) d = {“john”:40, “peter”:45}
c) d = {40:”john”, 45:”peter”}
d) d = (40:”john”, 45:”50”)
答案: b,c和d。
通过指定键和值来创建字典。
Q92。地板分隔是哪一个?
a)/ b)// c)% d)没有提及
答案: b)//
当两个操作数均为整数时,python会切掉小数部分并为您提供四舍五入值,以使用下位除法获得准确的答案。例如,5/2 = 2.5,但是两个操作数都是整数,因此python中此表达式的答案为2。要获得2.5作为答案,请使用//进行下限除法。所以5 // 2 = 2.5
Q93。标识符的最大可能长度是多少?
a)31个字符 b)63个字符 c)79个字符 d)以上都不是
答案: d)以上都不是
标识符可以是任何长度。
Q94。为什么不鼓励使用下划线开头的局部变量名?
a)它们用于指示类的私有变量 b)它们使解释器混乱 c)它们用于指示全局变量 d)它们减慢了执行速度
答: a)它们用于指示类的私有变量
由于Python没有专用变量的概念,因此前导下划线用于指示不得从类外部访问的变量。
Q95。以下哪项是无效的陈述?
a)abc = 1,000,000 b)abc = 1000 2000 3000 c)a,b,c = 1000,2000,3000 d)a_b_c = 1,000,000
答案: b)abc = 1000 2000 3000
变量名称中不允许使用空格。
Q96。以下内容的输出是什么?
try:
if '1' != 1:
raise "someError"
else:
print("someError has not occured")
except "someError":
print ("someError has occured")
a)发生了一些错误 b)尚未发生了一些错误 c)无效的代码 d)以上都不是
答案: c)无效代码
一个新的异常类必须继承自BaseException。这里没有这样的继承。
Q97。假设list1是[2,33,222,14,25],那么list1 [-1]是什么?
a)错误 b)无 c)25 d)2
答案: c)25
索引-1对应于列表中的最后一个索引。
Q98。要打开文件c:scores.txt进行写入,我们使用
a)outfile =打开(“ c:scores.txt”,“ r”) b)outfile =打开(“ c:scores.txt”,“ w”) c)outfile =打开(file =“ c:scores.txt” ”,“ r”) d)outfile =打开(文件=“ c:scores.txt”,“ o”)
答案: b)该位置包含双斜杠(),并且w用于指示正在写入文件。
Q99。以下内容的输出是什么?
f = None
for i in range (5):
with open("data.txt", "w") as f:
if i > 2:
break
print f.closed
a)是 b)错误 c)无 d)错误
答案: a)正确
与打开文件一起使用时,WITH语句可确保在with块退出时关闭文件对象。
Q100。try-except-else的else部分何时执行?
a)总是 b)发生异常时 c)没有异常发生时 d)except块中发生异常时
答案: c)没有异常发生时
else部分在没有异常发生时执行。
我希望这套Python面试问题能帮助您准备面试。祝一切顺利!