Python面试题
第一部分必答题(每题2分)
1.简述列举了解的编程语言及语言间的区别?
'''
Python, Java, C, C++, PHP, C#等编程语言。
在使用方面:Linux原装Python,其他语言没有;Python的类库齐全并且使用简洁,比如要实现相同的功能,
Python10行代码可以解决的,C可能就需要100行甚至更多;
速度方面:Python的运行速度相比较C是慢了一点。
C和Python、Java、C#等语言,都是代码编译到的机器码,机器码在处理器上直接执行,每一条指令控制CPU工作。
'''
2.列举Python2和Python3的区别?
'''
1、Python2没有nonlocal关键字,要修改临时变量时只能将其改为可变数据类型。
2、Python3中print()函数代替了Python2中的print语句。
3、Python3中加入了Unicode字符串,用于编码存储字符串。
4、Python3中没有long类型,但新增了bytes。
5、Python3整数之间做除法可以得到浮点数的结果,不需要进行数据格式转换。Python2中整数之间除法结果为把
运算结果去尾的整数。
6、Python2中的xrange() 在Python3中改为range()。
7、Python2中的不等于好可以是!= 或者<> ,Python3中只能是!=。
8、Python2中raw_input() 用来输入字符串,而Python3中使用input()来输入字符串。
9、Python3源码统一,简单;Python2源码不统一,复杂。
'''
3.看代码写结果
'''
v1=1or2
结果为 v1 = 1
V2=3and7or9and0
结果为 v2 = 0
'''
4.比较以下值有什么不同?
'''
V1 = [1,2,3]
v2 = [(1),(2),(3)]
v3 = [(1,),(2,),(3,)]
不同: V1,v2列表中存放的是数值型数据
v3列表中存放的是元组型数据
'''
5.用一行代码实现数值交换。
'''
a=1
b =2
a, b = b, a
'''
6. Python中单引号、 双引号、三引号的区别?
'''
Python中的单双引号都表示字符型数据,三引号表示注释。
'''
7. is和==的区别?
'''
is是比较两个对象的id是否相同
==是比较两个对象的值是否相同
'''
8. python里如何实现tuple和List的转化?
'''
tuple转化为list: 使用list关键字强制转换,
list转化为tuple: 使用tuple关键字强制转换。
'''
9.如何实现字符串name= '老男孩'的反转?
'''
name = '老男孩'
lis = []
for i in name:
lis.append(i)
lis.reverse()
name = ''.join(lis)
print(name)
'''
10.两个set如何获取交集、并集、差集?
'''
交集 : $
并集 : |
差集 : -
'''
11.那些情况下,y!=x- (x-y)会成立?
'''
x,y是两个非空的不相等的集合时, y!= x - (x-y)会成立。
'''
12. Python中如何拷贝一个对象?
'''
(1) 赋值(=),就是创键了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。
(2) 浅拷贝,创建一个新的对象,但它包含的是对原始对象中包含项的引用。
(3) 深拷贝,创建一个新的对象,并且递归的复制它所包含的对象(修改其中一个,另外一个不会改变)。
'''
13. 简述赋值、浅拷贝、深拷贝的区别?
'''
(1) 赋值(=),就是创键了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。
(2) 浅拷贝,创建一个新的对象,但它包含的是对原始对象中包含项的引用。
(3) 深拷贝,创建一个新的对象,并且递归的复制它所包含的对象(修改其中一个,另外一个不会改变)。
'''
14. pass的作用?
'''
pass的作用通常用来标记一个还未写的代码的位置,pass不做任何事情,一般用来做占位语句,保持程序结构的完整性。
'''
15.阅读代码写结果。
'''
import copy
a = [1,2,4,5,['b','c']]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)
a.append(5)
a[4].append('d')
print(b)
print(c)
print(a)
运行结果为:
[1,2,4,5,['b','c','d'],5]
[1,2,4,5,['b','c','d']]
[1,2,4,5,['b','c','d'],5]
'''
16.用Python实现9 * 9乘法表。
'''
for i in range(1,10):
for j in range(1, i+1):
print('{}{}={}'.format(i,j,ij),end=' ')
print()
'''
17.用Python显示一个斐波那契数列。
'''
lis = []
for i in range(10):
if len(lis) < 2:
lis.append(i)
continue
lis.append(lis[-1] + lis[-2])
print(lis)
'''
18.如何删除列表中重复的值?
'''
使用集合的去重功能,先将列表转换为集合,在将集合转换为列表。
'''
19.一个大小为100G的文件etl_log.txt,要读取文件中的内容,写出具体过程代码?
'''
with open('etl_log.txt', 'r', encoding='utf-8') as f:
file = f.read()
'''
20. a = dict(zip(("a","b","c",'d","e"),(1,2,3.4,5)))请问a是什么?
'''
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
'''
21. lambda关键字的作用?
'''
lambda函数让代码更加简洁直观。
'''
22.*arg和**kwarg作用?
'''
函数调用里的arg和kwarg: *arg:元组或列表“出现”,kwarg:字典“出没”,分割参数
函数定义时传的arg /**kwarg: 接收参数
'''
23.如何在函数中设置-个全局变量?
'''
globals()
'''
24. filter, map, reduce的作用?
'''
filter: 筛选数据,筛选出其中满足某些条件的数据
map: 映射,用同样的方法把所有的数据都改成别的
reduce: 用某种方法依次把所有的数据进行处理得到一个结果
'''
25.什么是匿名函数?匿名函数有什么作用?
'''
用lambda表示的函数称为匿名函数,匿名函数使得代码更加简洁直观。
'''
26. Python递归的最大层数?
'''
Python递归最大的层数是998
'''
27.什么是迭代器?什么是可迭代对象?
'''
迭代器: 具有__iter__和__next__方法的就是迭代器
可迭代对象:能够被for in 遍历的对象
'''
28.什么是生成器?
'''
如果函数中有yield,就是生成器
'''
29.什么是装饰器及应用场景?
'''
装饰器: 在不改变函数的源代码及调用方式的情况下,对函数进行功能的添加。
应用场景:1.可以在外层函数加上时间计算函数,计算函数运行时间;
2.计算函数运行次数;
3.可以用在框架的路由传参;
4.插入日志,作为函数的运行日志;
5.事务处理,可以让函数实现事务的一致性,让函数要么一起运行成功,要么一起运行失败;
6.缓存,实现缓存处理;
7.权限的校验,在函数外层套上权限校验的代码,实现权限校验;
'''

浙公网安备 33010602011771号