python面试题
注意:只有必答题部分计算分值,补充题不计算分值。
第一部分 必答题(每题2分)
-
简述列举了解的编程语言及语言间的区别?
编译型:一次性翻译 (C)
优点:运行速度快
缺点:翻译时间长
解释型:一行一行翻译(Python)
优点:开发效率高(翻译时间短)
缺点:运行速度慢 -
列举Python2和Python3的区别?
- Python2:
- 源码不统一,源码重复
- input接受到的是数据本身
- 整除返回的是整数(向下取整)
- 打印range(10) 是一个列表,内容是[0-9]
- 整形型,长整型
- 默认编码是ascll,不支持中文名
- Python3:
- 源码统一,源码不重复
- input接收到的是字符串
- 整除返回的是浮点数(小数)
- 打印range(10)就是本身
- 全是整型
- 默认编码是Unicode,支持中文
- Python2:
-
看代码写结果
v1 = 1 or 2
v2 = 3 and 7 or 9 and 0v1 = 1
v2 = 0 -
比较以下值有什么不同?
v1 = [1,2,3]
v2 = [(1),(2),(3)]
v3 = [(1,),(2,),(3,)]- v1和v2都是一个列表里面有3个元素
- v3是一个列表里面有三个元组
-
用一行代码实现数值交换。
a = 1
b = 2
a,b=b,a -
Python中单引号、双引号、三引号的区别?
python中单双引号可以互相包含,避免转义,
而三引号有两种作用 长字符串的换行,以及注释 -
is和==的区别?is 是判断内存地址是否一致 == 是判断两个对象的值是否相等
-
python里如何实现tuple和list的转化?
tuple(list)
list(tuple) -
如何实现字符串
name='老男孩'的反转? name = "老男孩" name = name[::-1] -
两个set如何获取交集、并集、差集?
交集:set1 & set2
并集: set1 | set2
差集: set1 -set2
-
那些情况下, y != x - (x-y)会成立? x,y是两个不相等的非空集合
-
Python中如何拷贝一个对象?
copy.copy
copy.deepcopy -
赋值:将多个变量指向同一个内存地址 浅拷贝:只拷贝第一层元素地址,只有修改第一层元素时不受影响 深拷贝:不可变数据类型内存地址共用,可变数据类型重新开辟空间 -
pass的作用?
pass占位符
pass的作用是位了保证程序结构的完整性,否则会报错 -
阅读代码写结果。
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]
-
用Python实现9 * 9 乘法表。
for a in range(1,10):
for b in range(a,10):
print(f'{a}*{b}={a*b}',end='')
print() -
用Python显示一个斐波那契数列。
-
如何删除列表中重复的值?
a= []
a= list(set(a))
print(a) -
一个大小为100G的文件etl_log.txt, 要读取文件中的内容, 写出具体过程代码?
with open('./etl_log.txt','r',encoding='utf-8') as f:
for i in f:
print(i) -
a = dict(zip(("a","b","c","d","e"),(1,2,3,4,5))) 请问a是什么?
a = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5} -
lambda关键字的作用?
定义一个匿名函数
-
*arg和**kwarg作用?*args 接收多余的位置参数 **kwargs 接收多余的关键字参数 -
如何在函数中设置一个全局变量 ?
global name
-
filter、map、reduce的作用?
filter 过滤
map 映射
reduce 累计算 -
什么是匿名函数?匿名函数有什么作用?
lambda函数就是匿名函数
作用:配合高阶函数进行使用,简化代码 -
Python递归的最大层数?
官方1000 实际994-998
-
什么是迭代器?什么是可迭代对象?
具有__iter__()和__next__()方法的就是迭代器
具有__iter__()方法的就是可迭代对象 -
什么是生成器?
生成器的本质就是迭代器,具有yield关键子就是生成器
-
什么是装饰器及应用场景?
装饰器本质闭包,不修改源代码及调用方式下,额外增加功能
登录验证
类 -
什么是反射及应用场景?
通过字符串操作对象的方法和属性
应用场景:
用户输入,判断选择 -
写一个普通的装饰器。
ef warpper(func): def inner(): print("111") func() print("222") return inner @warpper def func(): print("被装饰的函数") -
写一个带参数的装饰器。
def warpper(func): def inner(*args,**kwargs): print("我是装饰器,装饰你了啊") ret = func(*args,**kwargs) return ret return inner @func_z def func_b(*args,**kwargs): print("我是被装饰的函数") -
求结果
def num():
return [lambda x:i*x for i in range(4)]
print([m(2) for m in num()])[6, 6, 6, 6] -
def(a, b=[])这种写法有什么陷阱?
默认参数是可变数据类型,闭包
-
看代码写结果
def func(a,b=[]):
b.append(a)
return b
v1 = func(1)
v2 = func(2,[10,20])
v3 = func(3)
print(v1,v2,v3)[1, 3] [10, 20, 2] [1, 3] -
看代码写结果
def func(a,b=[]):
b.append(a)
return b
v1 = func(1)
print(v1)
v2 = func(2,[10,20])
print(v2)
v3 = func(3)
print(v3)[1]
[10, 20, 2]
[1, 3] -
请编写一个函数实现将IP地址转换成一个整数。
如 10.3.9.12 转换规则为:
10 00001010
3 00000011
9 00001001
12 00001100
再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ? -
请查找一个目录下的所有文件(可能存在文件嵌套)。
import os os.listdir() -
求结果
import math
print (math.floor(5.5))5
-
是否使用过functools中的函数?其作用是什么? reduce 累计算
-
re的match和search区别?
match 从开头进行匹配,匹配一个就停止
serach 从任意位置进行匹配,匹配一个就停止 -
用Python匹配HTML tag的时候,<.>和<.?>有什么区别?
. 贪婪匹配,匹配多个任意字符
.*?非贪婪,只匹配一次 -
如何生成一个随机数?
import random
random.random() -
super的作用?
按照mro的顺序进行继承
-
双下划线和单下划线的区别?
__a = 1 强制私有
_b = 2 程序员约定俗成的一个私有方法 -
@staticmethod和@classmethod的区别?
一个是静态方法 ,普通函数
一个是类方法 -
实现一个单例模式(加锁)。
-
栈和队列的区别?
栈 先进后出
队列 先进先出 -
以下代码输出是什么? 请给出答案并解释。
class Parent(object):
x = 1
class Child1(Parent):
pass
class Child2(Parent):
pass
print Parent.x, Child1.x, Child2.x
Child1.x = 2
print Parent.x, Child1.x, Child2.x
Parent.x = 3
print Parent.x, Child1.x, Child2.x -
参考下面代码片段
class Context:
pass
with Content() as ctx:
ctx.do_something()
请在Context类下添加代码完成该类的实现
第二部分 可选题
-
如何获取列表中第二大的值?
-
简述Python内存管理机制。
-
简述Python的垃圾回收机制。
-
请用两个队列来实现一个栈。
-
请用Python实现一个链表。
-
请用Python实现链表的逆转。
-

浙公网安备 33010602011771号