返回顶部

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.权限的校验,在函数外层套上权限校验的代码,实现权限校验;
'''

30.什么是反射及应用场景?

31.写一个普通的装饰器。

32.写一个带参数的装饰器。

33.求结果

def numO:

return [1ambda x:i*x for i in range(4)]

print([m(2) for m in num(O])

34. delf(a, b=D)这种写法有什么陷阱?

35.看代码写结果

posted @ 2020-02-26 12:07  永亮  阅读(221)  评论(0)    收藏  举报