当前位置 > CPDA数据分析师 > “数”业专攻 > Python在面试所遇的问题及答案

Python在面试所遇的问题及答案

来源:数据分析师 CPDA | 时间:2018-12-10 | 作者:admin

1.比较Java和Python

标准 Java 蟒蛇
便于使用 很好
编码速度 平均 优秀
数据类型 静态打字 动态输入
数据科学和机器学习应用 平均 很好

 

2.什么是Python

Python是一种高级,解释,交互式和面向对象的脚本语言。Python的设计具有高可读性。它经常使用英语关键词,而其他语言使用标点符号,并且它的语法结构比其他语言少。

 

  1. PYTHONPATH环境变量的目的是什么?

PYTHONPATH - 它的作用类似于PATH。此变量告诉Python解释器在何处找到导入程序的模块文件。它应该包括Python源库目录和包含Python源代码的目录。PYTHONPATH有时由Python安装程序预设

 

  1. PYTHONSTARTUPPYTHONCASEOKPYTHONHOMEPYTHONSTARTUP环境变量的目的是什么?

PYTHONSTARTUP - 它包含包含Python源代码的初始化文件的路径。每次启动解释器时都会执行它。它在Unix中命名为.pythonrc.py,它包含加载实用程序或修改PYTHONPATH的命令

PYTHONCASEOK - 在Windows中用于指示Python在import语句中查找第一个不区分大小写的匹配项。将此变量设置为任何值以激活它。

PYTHONHOME - 它是另一种模块搜索路径。它通常嵌入在PYTHONSTARTUP或PYTHONPATH目录中,以便于切换模块库。

 

  1. Python中支持的数据类型是什么?

Python有五种标准数据类型 -

  • 数字
  • 名单
  • 元组
  • 字典

 

6.列表和元组有什么区别?

LIST TUPLES
列表是可变的,即可以编辑它们。 元组是不可变的(元组是无法编辑的列表)。
列表比元组慢。 元组比列表更快。
语法:list_1 = [10,'Chelsea',20] 语法:tup_1 =(10,'Chelsea',20)

 

7.如何在Python中管理内存?

  1. Python内存由Python私有堆空间管理。所有Python对象和数据结构都位于私有堆中。程序员无权访问此私有堆,解释器负责处理此私有堆。
  2. Python对象的Python堆空间分配由Python内存管理器完成。核心API提供了一些程序员编写代码的工具。
  3. Python还有一个内置的垃圾收集器,它可以回收所有未使用的内存并释放内存并使其可用于堆空间。

 

8.用一个例子解释Python中的继承。

继承允许一个类获得另一个类的所有成员(比如属性和方法)。继承提供代码可重用性,使创建和维护应用程序变得更容易。我们继承的类称为超类,继承的类称为派生/子类。

它们是Python支持的不同类型的继承:

  1. 单一继承 - 派生类获取单个超类的成员。
  2. 多级继承 - 从基类base1继承的派生类d1,d2继承自base2。
  3. 分层继承 - 从一个基类可以继承任意数量的子类
  4. 多重继承 - 派生类从多个基类继承。

 

9.每当Python退出时,为什么不是所有的内存都被解除分配?

  1. 每当Python退出时,尤其是那些对其他对象具有循环引用的Python模块或者从全局名称空间引用的对象并不总是被解除分配或释放。
  2. 无法解除分配C库保留的那些内存部分。
  3. 退出时,由于拥有自己的高效清理机制,Python会尝试取消分配/销毁其他所有对象。

 

  1. Python中的字典是什么?

Python中的内置数据类型称为字典。它定义了键和值之间的一对一关系。字典包含一对键及其对应的值。字典由键索引。

我们来举个例子:

以下示例包含一些键。国家,资本和下午。它们的相应值分别是印度,德里和莫迪。

字典= { '国家': '印度', '资本': '德里', 'PM': '莫迪'}

打印字典[国家]

 

11.写一个单行,用于计算文件中大写字母的数量。即使文件太大而无法放入内存,您的代码也应该可以正常工作。

我们先写一个多行解决方案,然后将其转换为一个班轮代码。

1打开(SOME_LARGE_FILE)为fh:

2 count = 0
3 text = fh.read()
4表示文本中的字符:
5 if character.isupper():
6 count + = 1

 

12.Python中为数值数据集编写排序算法。

以下代码可用于在Python中对列表进行排序:

list = [“1”,“4”,“0”,“6”,“9”]

list = [int(i)for i in list]

list.sort()

打印(列表)

 

13.你将如何扭转名单?

list.reverse() - 反转列表对象。

 

14.如何从列表中删除最后一个对象?

list.pop(obj = list [-1]) - 从列表中删除并返回最后一个对象或obj。

 

15.什么是负指数,为什么使用它们?

Python中的序列是索引的,它由正数和负数组成。积极的数字使用'0'作为第一个索引,'1'作为第二个索引,过程继续进行。

负数的索引从'-1'开始,表示序列中的最后一个索引,' - 2'作为倒数第二个索引,序列像正数一样前进。

负索引用于从字符串中删除任何换行符,并允许该字符串除了作为S [: - 1]给出的最后一个字符。负索引还用于显示索引以正确的顺序表示字符串。

 

16.解释Python“re”模块的split(),sub(),subn()方法。

为了修改字符串,Python的“re”模块提供了3种方法。他们是:

  • split() - 使用正则表达式模式将给定字符串“拆分”到列表中。
  • sub() - 查找正则表达式模式匹配的所有子字符串,然后用不同的字符串替换它们
  • subn() - 它类似于sub(),并且还返回新字符串和no。替换。

 

  1. rangexrange有什么区别?

在大多数情况下,xrange和range在功能方面完全相同。它们都提供了一种生成整数列表供您使用的方法,但是您可以随意使用。唯一的区别是range返回一个Python列表对象,x range返回一个xrange对象。

这意味着xrange实际上并不像运行时那样在运行时生成静态列表。它使用称为yielding的特殊技术根据需要创建值。该技术与一种称为生成器的对象一起使用。这意味着,如果你有一个非常巨大的范围,你想生成一个列表,比如10亿,xrange就是要使用的功能。

如果你有一个真正的内存敏感系统,例如你正在使用的手机,尤其如此,因为范围将使用尽可能多的内存来创建整数数组,这可能导致内存错误并导致崩溃程序。这是一个记忆饥饿的野兽。

 

18.什么是酸洗和去除?

Pickle模块接受任何Python对象并将其转换为字符串表示形式,并使用dump函数将其转储到文件中,此过程称为pickling。从存储的字符串表示中检索原始Python对象的过程称为unpickling。

 

  1. Python中的map函数是什么?

map函数执行作为第一个参数给出的函数,作为第二个参数给出的iterable的所有元素。如果给定的函数包含多于1个参数,则给出了许多迭代。#Tollow链接以了解更多类似的功能

 

20.如何在NumPy数组中获得N个最大值的索引?

我们可以使用以下代码获取NumPy数组中N个最大值的索引:
import numpy as np

arr = np.array([1,3,2,4,5])

打印(arr.argsort()[ - 3:] [:: - 1])

 

21.什么是Python模块?

模块是一个Python脚本,通常包含import语句,函数,类和变量定义,以及Python可运行代码,它“生活”文件的扩展名为“.py”。zip文件和DLL文件也可以是模块。在模块中,您可以将模块名称称为存储在全局变量名称中的字符串。

 

22.Python中命名与文件相关的模块?

Python为库/模块提供了一些函数,使您可以在文件系统上操作文本文件和二进制文件。使用它们,您可以创建文件,更新其内容,复制和删除文件。这些库是:os,os.path和shutil。

这里,os和os.path - 模块包括用于访问文件系统的函数

shutil - module使您可以复制和删除文件。

 

23.解释使用with声明?

在python中,通常“with”语句用于打开文件,处理文件中存在的数据,还可以在不调用close()方法的情况下关闭文件。“with”语句通过提供清理活动使异常处理更简单。

一般形式:

使用open(“filename”,“mode”)作为file-var:

处理声明

注意:无需通过在file-var.close()上调用close()来关闭文件

 

24.解释Python支持的所有文件处理模式?

Python允许您以三种模式之一打开文件。他们是:

通过分别指定标志“r”,“w”,“rw”,“a”,只读模式,只写模式,读写模式和附加模式。

通过指定选项“t”,可以在上述任何一种模式中打开文本文件

“r”,“w”,“rw”和“a”,以便前面的模式变为“rt”,“wt”,“rwt”和“at”。二进制文件可以在任何一个中打开上述模式通过指定选项“b”以及“r”,“w”,“rw”和“a”使得前面的模式变为“rb”,“wb”,“rwb”,“ab” 。

 

  1. Python支持多少种序列?这些是什么?

Python支持7种序列类型。它们是str,list,tuple,unicode,byte array,xrange和buffer。其中xrange在python 3.5.X中已弃用。

 

26.你如何在Python中执行模式匹配?说明

正则表达式/ RE /正则表达式使我们能够指定可以匹配给定字符串的特定“部分”的表达式。例如,我们可以定义一个正则表达式来匹配单个字符或数字,电话号码或电子邮件地址等.Python的“re”模块提供正则表达式模式,并从Python 2.5的更高版本中引入。“re”模块提供搜索文本字符串的方法,或者替换文本字符串以及基于定义的模式拆分文本字符串的方法。

 

27.如何以相反的顺序显示文本文件的内容?

  1. 将给定文件转换为列表。
  2. 使用reversed()反转列表
  3. 例如:for reverse in reverse(list(open(“file-name”,“r”))):
  4. 打印(行)

 

  1. NumPySciPy有什么区别?
  2. 在理想的世界中,NumPy只包含数组数据类型和最基本的操作:索引,排序,整形,基本元素智能函数等。
  3. 所有数字代码都将驻留在SciPy中。但是,NumPy的一个重要目标是兼容性,因此NumPy试图保留其前任任何一个支持的所有功能。
  4. 因此,NumPy包含一些线性代数函数,即使它们更恰当地属于SciPy。无论如何,SciPy包含更多全功能版本的线性代数模块,以及许多其他数值算法。
  5. 如果你使用python进行科学计算,你应该安装NumPy和SciPy。大多数新功能属于SciPy而非NumPy。

 

29.以下哪项是无效陈述?

aabc = 1,000,000

babc = 1000 2000 3000

cabc = 1000,2000,3000

da_b_c = 1,000,000

答案:b

 

30.以下产出是什么?尝试:如果'1'= 1:加注

a)发生了一些错误

b)没有发生一些错误

c)无效代码

d)以上都不是

答案:C

 

31.假设list1[2,33,222,14,25],什么是list1 [-1]

25

 

32.要打开文件c\ scores.txt进行写入?

fileWriter = open(“c:\\ scores.txt”,“w”)

 

33.为统计,数值和科学计算命名一些Python模块?

numPy - 此模块提供数组/矩阵类型,它对在数组上进行计算很有用。scipy - 这个模块提供了进行数值积分,求解微分方程等的方法.pylab是一个用于生成和保存图的模块

 

34.什么是TkInter

TkInter是Python库。它是GUI开发的工具包。它为GUI应用程序中使用的各种GUI工具或小部件(如按钮,标签,文本框,单选按钮等)提供支持。它们的共同属性包括尺寸,颜色,字体,光标等。

 

  1. Python面向对象吗?什么是面向对象编程?

是。Python是面向对象的编程语言。OOP是基于类和被称为对象的类的实例的编程范例。OOP的特点是:

封装,数据抽象,继承,多态。

 

36.什么是多线程?举个例子。

这意味着通过调用多个线程同时运行多个不同的程序。进程中的多个线程使用主线程引用数据空间,并且它们可以相互通信以更容易地共享信息。线程是轻量级进程并且具有较少的内存开销。线程可以仅用于快速任务,如计算结果,也可以在主程序运行时在后台运行其他进程。

 

  1. Python是否支持Java中的接口?讨论。

Python不提供Java中的接口。抽象基类(ABC)及其功能由Python的“abc”模块提供。抽象基类是一种机制,用于指定其实现子类必须实现哪些方法。ABC'c的使用提供了一种关于方法及其预期行为的“理解”。该模块从Python 2.7版本开始提供。

 

38.什么是Accessormutators@ property

访问器和变换器通常被称为“Java”之类的语言中的getter和setter。例如,如果x是用户定义的类的属性,则该类将具有名为setX()和getX()的方法。Python有一个@property“装饰器”,允许你使用ad getters和setter来访问类的属性。

 

39.区分append()和extend()方法。

append()和extend()方法都是list的方法。这些方法用于添加列表末尾的元素。

append(element) - 在调用此方法的列表末尾添加给定元素。

extend(another-list) - 在列表的末尾添加另一个列表的元素,称为extend方法。

 

40.列举一些用于在Python中实现面向功能的编程的方法?

Python支持方法(在Python3中称为迭代器),例如filter(),map()和reduce(),当您需要迭代列表中的项目,创建字典或提取子集时,它们非常有用。一个列表。

filter() - 使您能够基于条件逻辑提取值的子集。

map() - 它是一个内置函数,它将函数应用于iterable中的每个项目。

reduce() - 重复执行序列的成对减少,直到计算出单个值。

 

41.以下产出是什么?

x = ['ab''cd'] 
print
lenmaplistx)))

由于map没有len(),因此发生TypeError。

 

42.以下内容的输出是什么?

x = ['ab''cd'] 
print
lenlistmaplistx))))

说明:每个字符串的长度为2。

 

43.以下哪项不是创建集合的正确语法?

  1. a)设置([[1,2][3,4]]
  2. b)设置([1,2,2,3,4]
  3. c)设置((1,2,3,4))
  4. d{1,2,3,4}

答案:a

Explanation:为set设置的参数必须是可迭代的。

 

44.解释一些在Python中实现面向功能的编程的方法。

有时,当我们想要遍历列表时,一些方法会派上用场。

  1. 过滤()

过滤器允许我们根据条件逻辑过滤一些值。

>>> list(filter(lambda x:x> 5,range(8)))

[6,7]

  1. 地图()

Map将函数应用于iterable中的每个元素。

>>> list(map(lambda x:x ** 2,range(8)))

[0,1,4,9,16,25,36,49]

  1. 降低()

在我们达到单个值之前,Reduce会反复减少序列顺序

>>>来自functools import reduce

>>> reduce(lambda x,y:xy,[1,2,3,4,5])

-13

 

45.解释Python Flask中的数据库连接?

Flask支持数据库驱动的应用程序(RDBS)。这样的系统需要创建一个模式,这需要将shema.sql文件传递给sqlite3命令。因此,您需要安装sqlite3命令才能在Flask中创建或启动数据库。

Flask允许以三种方式请求数据库

  • before_request():在请求之前调用它们并且不传递任何参数
  • after_request():在请求后调用它们并传递将发送到客户端的响应
  • teardown_request():在引发异常时调用它们,并且不保证响应。在构建响应之后调用它们。不允许它们修改请求,并忽略它们的值。

 

46.编写一个Python函数来检查传递的字符串是否是回文结构?注意:回文是一个单词,短语或序列,向前读取相同的内容,例如,女士或护士。

def isPalindrome(string):
left_pos = 0
right_pos = len(string) - 1

而right_pos> = left_pos:
if if string [left_pos] == string [right_pos]:
return False
left_pos + = 1
right_pos - = 1
return
print print(isPalindrome('aza'))

 

47.编写一个Python程序来计算数字列表的总和。

def list_sum(num_List):
如果len(num_List)== 1:
return num_List [0]
else:
return num_List [0] + list_sum(num_List [1:])

print(list_sum([2,4,5,6,7]))

样本输出:

24

 

48.如何通过Python代码从MySQL数据库中的表中检索数据?说明。

  1. 将MySQLdb模块导入为:import MySQLdb
  2. 建立与数据库的连接。
  3. db = MySQLdb.connect(“host”=“local host”,“database-user”=“user-name”,“password”=“password”,“database-name”=“database”)
  4. 在建立的连接上初始化游标变量:c1 = db.cursor()
  5. 通过定义所需的查询字符串来检索信息。s =“选择*来自dept”
  6. 使用fetch()方法获取数据并打印它。data = c1.fetch(s)
  7. 关闭数据库连接。close()

 

49.编写一个Python程序来读取文件中的随机行。

import random
def random_line(fname):
lines = open(fname).read()。splitlines()
return random.choice(lines)
print(random_line('test.txt'))

 

50.编写一个Python程序来计算文本文件中的行数。

def file_lengthy(fname):
open(fname)为f:
for i,l in enumerate(f):
pass
return i + 1
print(“file of lines:”,file_lengthy(“test.txt”))