60道Python面试题&答案精选!找工作前必看
需要Word/ PDF版本的同学可以在实验楼微信公众号回复关键词“面试题”获取。
1. Python 的特点和优点是什么?
答案:略。
2. 什么是lambda函数?它有什么好处?
lambda 函数是一个可以接收任意多个参数(包括可选参数)并且返回单个表达式值的函数。 lambda 函数不能包含命令,它们所包含的表达式不能超过一个。不要试图向lambda函数中塞入太多的东西;如果你需要更复杂的东西,应该定义一个普通函数,然后想让它多长就多长。
lambda函数可以接受任意个参数,包括可选参数,但是表达式只有一个:
>>> g = lambda x, y: xy*
>>> g(3,4)
12
>>> g = lambda x, y=0, z=0: x+y+z
>>> g(1)
1
>>> g(3, 4, 7)
14
也能够直接使用lambda函数,不把它赋值给变量:
>>> (lambdax,y=0,z=0:x+y+z)(3,5,6)
14
如果你的函数非常简单,只有一个表达式,不包含命令,可以考虑lambda函数。否则,你还是定义函数才对,毕竟函数没有这么多限制。
3. 深拷贝和浅拷贝的区别是什么?
深拷贝是将对象本身复制给另一个对象。这意味着如果对对象的副本进行更改时不会影响原对象。在 Python 中,我们使用 deepcopy()函数进行深拷贝,使用方法如下:
>>> import copy
>>> b=copy.deepcopy(a)
浅拷贝是将对象的引用复制给另一个对象。因此,如果我们在副本中进行更改,则会影响原对象。使用 copy()函数进行浅拷贝,使用方法如下:
>>> b=copy.copy(a)
4. 列表和元组有什么不同?
try…except…except…[else…][finally…]
执行try下的语句,如果引发异常,则执行过程会跳到except语句。对每个except分支顺序尝试执行,如果引发的异常与except中的异常组匹配,执行相应的语句。如果所有的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。
try下的语句正常执行,则执行else块代码。如果发生异常,就不会执行;如果存在finally语句,最后总是会执行。
5. Python里面如何生成随机数?
答:random模块
随机整数:random.randint(a,b):返回随机整数x,a<=x<=b
random.randrange(start,stop,[,step]):返回一个范围在(start,stop,step)之间的随机整数,不包括结束值。
随机实数:random.random( ):返回0到1之间的浮点数
random.uniform(a,b):返回指定范围内的浮点数
6. 如何在Python中实现多线程?
**a. **Python有一个multi-threading包,但是如果你想让multi-thread加速你的代码,那么使用它通常不是一个好主意。
**b. **Python有一个名为GlobalInterpreter Lock(GIL)的结构。 GIL确保只有一个“线程”可以在任何时候执行。一个线程获取GIL,做一点工作,然后将GIL传递到下一个线程。
**c. **这种情况很快发生,因此对于人眼看来,您的线程似乎并行执行,但它们实际上只是轮流使用相同的CPU核心。
**d. **所有这些GIL传递都增加了执行的开销。这意味着如果您想让代码运行得更快,那么使用线程包通常不是一个好主意。
7. 如何在python中使用三元运算符?
三元运算符是用于显示条件语句的运算符。这包含用于评估为true或false值的语句。
句法:三元操作符语法如下,
[on_true] if [expression] else [on_false]
例:
x,y = 25,50*
big = x if x < y else y*
如果x <y为真,则返回值为big= x,如果不正确则返回big = y作为结果。
8. 用一个例子解释Python中的继承。
继承允许一个类获得另一个类的所有成员(比如属性和方法)。继承提供代码可重用性,使创建和维护应用程序变得更容易。我们继承的类称为super-class,继承的类称为派生/子类。
以下是Python支持的不同类型的继承:
**a. **单一继承 - 派生类获取单个超类的成员。
b. Multi-level继承 - 从基类base1继承的派生类d1,d2继承自base2。
c. 分层继承 - 从一个基类可以继承任意数量的子类
d. 多重继承 - 派生类从多个基类继承。
9. 解释Flask是什么及其好处?
Flask是基于“Werkzeug,Jinja2和良好意图”BSD许可证的Python网络微框架。 Werkzeug和Jinja2是它的两个依赖项。这意味着它对外部库几乎没有依赖性。它使框架变得轻盈,只是少量依赖于更新和更少的安全性错误。
会话基本上允许您记住从一个请求到另一个请求的信息。在flask中,会话使用签名的cookie,以便用户可以查看会话内容并进行修改。当且仅当有密钥Flask.secret_key,用户可以修改会话。
10. Python中的字典是什么?
Python中的内置数据类型称为字典。它定义了键和值之间的one-to-one关系。字典包含一对键及其对应的值。字典由键来索引。
我们来举个例子:
以下示例包含一些键,Country, Capital & PM,它们的相应值分别是印度,德里和莫迪。
dict={'Country':'India','Capital':'Delhi','PM':'Modi'}
print dict[Country]
India
print dict[Capital]
Delhi
print dict[PM]
Modi
11. 什么是负指数,为什么使用它们?
Python中的序列是索引的,它由正数和负数组成。正的数字使用'0'作为第一个索引,'1'作为第二个索引,以此类推。
负数的索引从'-1'开始,表示序列中的最后一个索引,' - 2'作为倒数第二个索引,依次类推。
12. 如何用Python来进行查询和替换一个文本字符串?
可以使用sub()方法来进行查询和替换,sub方法的格式为:
a. sub(replacement, string[,count=0])
**b. **replacement是被替换成的文本
**c. **string是需要被替换的文本
**d. **count是一个可选参数,指最大被替换的数量
13. 解释一下python的and-or语法
与C表达式 bool ? a : b类似,但是bool and a or b,当 a 为假时,不会象C表达式 bool ? a : b 一样工作
应该将 and-or 技巧封装成一个函数:
defchoose(bool, a,b):return(booland[a]or[b])[0]
因为 [a] 是一个非空列表,它永远不会为假。甚至 a 是 0 或 '' 或其它假值,列表[a]为真,因为它有一个元素。
14. 请写出一段Python代码实现删除一个list里面的重复元素
1,使用set函数,set(list)
2,使用字典函数,
>>>a=[1,2,4,2,4,5,6,5,7,8,9,0]
>>> b={}
>>>b=b.fromkeys(a)
>>>c=list(b.keys())
>>> c
15. 单引号,双引号,三引号的区别?
单引号和双引号是等效的,如果要换行,需要符号(),三引号则可以直接换行,并且可以包含注释
如果要表示Let’s go 这个字符串
单引号:s4 = ‘Let\’s go’
双引号:s5 = “Let’s go”
s6 = ‘I realy like“python”!’
这就是单引号和双引号都可以表示字符串的原因了。
16. 当退出 Python 时是否释放所有内存分配?
答案是否定的。那些具有对象循环引用或者全局命名空间引用的变量,在 Python 退出是往往不会被释放
另外不会释放 C 库保留的部分内容。
17. Python里面search()和match()的区别?
match()函数只检测RE是不是在string的开始位置匹配,search()会扫描整个string查找匹配, 也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none 。
18. 如何在Python中随机化列表中的项目?
考虑下面显示的示例:
from random import shuffle
x = ['Keep', 'The', 'Blue', 'Flag','Flying', 'High']
shuffle(x)
print(x)
以下代码的输出如下。
['Flying', 'Keep', 'Blue', 'High', 'The','Flag']
19. 在python中编译和链接的过程是什么?
编译和链接允许正确编译新扩展而不会出现任何错误,并且只有在通过编译过程时才能进行链接。如果使用动态加载,则它取决于系统提供的样式。 python解释器可用于提供配置设置文件的动态加载,并将重建解释器。
这需要的步骤如下:
a. 使用任何名称以及系统编译器支持的任何语言创建文件。例如file.c或file.cpp
b. 将此文件放在正在使用的发行版的Modules /目录中。
c. 在Modules /目录中存在的Setup.local文件中添加一行。
d. 使用spam file.o运行该文件
e. 成功运行此重建解释程序后,在top-level目录中使用make命令。
f. 如果文件已更改,则使用命令“make Makefile”运行rebuildMakefile。
20. Python解释“re”模块的split(), sub(), subn()方法。
要修改字符串,Python的“re”模块提供了3种方法。他们是:
split() - 使用正则表达式将“split”给定字符串放入列表中。
**sub() **- 查找正则表达式模式匹配的所有子字符串,然后用不同的字符串替换它们
**subn() **- 它类似于 sub(),并且还返回新字符串和替换的序号。
21. range和xrange之间有什么区别?
在大多数情况下,xrange和range在功能方面完全相同,它们都提供了一种生成整数列表供您使用的方法。唯一的区别是range返回一个Python列表对象,xrange返回一个xrange对象。
这意味着xrange实际上并不像run-time那样生成静态列表。它使用称为yielding的特殊技术根据需要创建值。该技术与一种称为生成器的对象一起使用。这意味着,如果你有一个非常巨大的范围,你想生成一个列表,比如10亿,xrange就是要使用的功能。
如果你有一个真正的内存敏感系统,例如你正在使用的手机,尤其如此,因为range将使用尽可能多的内存来创建整数数组,这可能导致内存错误并导致崩溃程序。
22. Django,Pyramid和Flask之间的差异。
Flask是“microframework”,主要用于具有更简单要求的小型应用程序。在Flask中,您必须使用外部库。
Pyramid适用于大型应用程序。它提供了灵活性,并允许开发人员为他们的项目使用正确的工具。开发人员可以选择数据库,URL结构,模板样式等。
Django也可以像Pyramid一样用于更大的应用程序。
23. 列出Django中的继承样式。
在Django中,有三种可能的继承样式:
抽象基类:当您只希望父类包含您不想为每个子模型键入的信息时,使用此样式。
Multi-table继承:使用此样式如果您是sub-classing现有模型并且需要每个模型都有自己的数据库表。
代理模型:您可以使用此模型,如果您只想修改模型的Python级别行为,而无需更改模型的字段。
24. 什么是Python monkey补丁?
在Python中,术语monkey补丁仅指run-time上的类或模块的动态修改。
考虑以下示例:
# m.py
class MyClass:
def f(self):
print "f()"
然后我们可以像这样运行monkey-patch测试:
import m
def monkey_f(self):
print "monkey_f()"
m.MyClass.f = monkey_f
obj = m.MyClass()
obj.f()
输出如下:
monkey_f()
我们可以看到,在模块之外,我们确实对函数f()的行为做了一些改变,实际执行的是函数monkey_f(),。
25. 有两个序列a,b,大小都为n,序列元素的值任意整形数,无序?
要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。
1. 将两序列合并为一个序列,并排序,为序列Source
2. 拿出最大元素Big,次大的元素Small
3. 在余下的序列S[:-2]进行平分,得到序列max,min
4. 将Small加到max序列,将Big加大min序列,重新计算新序列和,和大的为max,小的为min。
26. 如何用Python来发送邮件?
可以使用smtplib标准库。
以下代码可以在支持SMTP监听器的服务器上执行。
import sys, smtplib
fromaddr =raw_input(“From: “)
toaddrs = raw_input(“To: “).split(‘,’)
print “Enter message, end with ^D:”
msg = ”
while 1:
line = sys.stdin.readline()
if not line:
break
msg = msg + line
发送邮件部分
server = smtplib.SMTP(‘localhost’)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()
27. 请写一个Python逻辑,计算一个文件中的大写字母数量.
>>> import os
>>>os.chdir('C:\Users\lifei\Desktop')
>>> with open('Today.txt') astoday:
count=0*
for i in today.read()
60道Python面试题&答案精选!找工作前必看的更多相关文章
- 315道Python面试题答案
目录 Python基础篇 1:为什么学习Python 2:通过什么途径学习Python 3:谈谈对Python和其他语言的区别 Python的优势: 4:简述解释型和编译型编程语言 5:Python的 ...
- 千万不要错过这几道Python面试题,Python面试题No16
第1题: python下多线程的限制以及多进程中传递参数的方式? python多线程有个全局解释器锁(global interpreter lock),简称GIL,这个GIL并不是python的特性, ...
- 百道Python面试题实现,搞定Python编程就靠它
对于一般的机器学习求职者而言,最基础的就是掌握 Python 编程技巧,随后才是相关算法或知识点的掌握.在这篇文章中,我们将介绍一个 Python 练习题项目,它从算法练习题到机试实战题提供了众多问题 ...
- 50道python面试题
1.大数据的文件读取 ① 利用生成器generator ②迭代器进行迭代遍历:for line in file 2.迭代器和生成器的区别 1)迭代器是一个更抽象的概念,任何对象,如果它的类有next方 ...
- 正在找工作的同学看过来,zozo最新的java面试题总会,学会月薪3万起!!!
引言 为正在找工作的同学提供些许帮助,话不多说直接上题. 关注后私信我[资料]即可免费获取! 关注后私信我[资料]即可免费获取! 关注后私信我[资料]即可免费获取! 关注后私信我[资料]即可免费获取! ...
- 315道python面试题(参考答案)
第一部分 Python基础篇 1:为什么学习Python 家里有在这个IT圈子里面,也想让我接触这个圈子,然后给我建议学的Python, 然后自己通过百度和向有学过Python的同学了解了Python ...
- 明天找python工作,看看这几道Python面试题吧,Python面试题No14
第1题: 如何解决验证码的问题,用什么模块,听过哪些人工打码平台? PIL.pytesser.tesseract模块 平台的话有:(打码平台特殊,不保证时效性) 云打码 挣码 斐斐打码 若快打码 超级 ...
- 总结2020最新50道Python面试题集锦(附答案)
Python是目前编程领域最受欢迎的语言.在本文中,我将总结Python面试中最常见的50个问题.每道题都提供参考答案,希望能够帮助你在2019年求职面试中脱颖而出,找到一份高薪工作.这些面试题涉及P ...
- 给你准备好了——50道Python面试题集锦(附答案)
Python是目前编程领域最受欢迎的语言.在本文中,我将总结Python面试中最常见的50个问题.每道题都提供参考答案,希望能够帮助你在2019年求职面试中脱颖而出,找到一份高薪工作.这些面试题涉及P ...
随机推荐
- [转] 微信小程序页面间通信的5种方式
微信小程序页面间通的5种方式 PageModel(页面模型)对小程序而言是很重要的一个概念,从app.json中也可以看到,小程序就是由一个个页面组成的. 如上图,这是一个常见结构的小程序:首页是一个 ...
- 设计模式学习之享元模式(Flyweight,结构型模式)(20)
转:http://terrylee.cnblogs.com/archive/2006/03/29/361767.html 摘要:面向对象的思想很好地解决了抽象性的问题,一般也不会出现性能上的问题.但是 ...
- .net core 2.x - 日志 - to elasticsearch - (2)
你可能会有疑惑,怎么又来一偏,,,其实我也好奇,因为我已经忘记哪个能跑起来了,,,记忆中,这个好像是没问题的. 1.使用到的资源 关于es(elasticseach)在.net中的访问,可以参考es的 ...
- Linux中的 openssl-opensslv
问题 在安装内核模块系统突然出现以下错误 寻找问题 一开始我以为是openssl没有安装,故先进行openssl的检查: 输入yum info openssl 从图中可知,openssl是已经安装过了 ...
- C# 集合已修改 可能无法执行枚举操作 zz
今天编写程序时 修改了list集合 在foreach时报 “集合已修改:可能无法执行枚举操作.”错误. 首先想到的是没有锁定集合对象. 增加了 private readonly object sync ...
- django——form组件
1.html表单概述 Django开发的是动态Web服务,而非单纯提供静态页面.动态服务的本质在于和用户进行互动,接收用户的输入,根据输入的不同,返回不同的内容给用户.返回数据是我们服务器后端做的,而 ...
- 17使用systemd方式开机自动启动Home Assistant服务
2018-03-20 15:48:36 转移自网易博客! 首先使用编写文件hass@homeassistant.service,文件内容如下 # 这个文件用于systemd方式自动启动hass服务.# ...
- SDOI2018:原题识别
题解: https://files.cnblogs.com/files/clrs97/old-solution.pdf Code: #include<cstdio> #include< ...
- [LeetCode] Number of Matching Subsequences 匹配的子序列的个数
Given string S and a dictionary of words words, find the number of words[i] that is a subsequence of ...
- Python基础之列表深浅复制和列表推导式
一.列表深浅复制: 浅拷贝内存图如下: 深拷贝内存图如下: 二.列表推导式: 实例: """ 列表推导式 练习:exercise01 """ ...