Python面试重点(基础篇)
Python面试重点(基础篇)
注意:只有必答题部分计算分值,补充题不计算分值。
第一部分 必答题(每题2分)
-
简述列举了解的编程语言及语言间的区别?
分为解释性和编译性语言
-
列举Python2和Python3的区别?
python2 long整数类型 xrange和range print ('lili')或print 'lili' 必须继承object,才是新式类
python3 int表示 统一使用range 必须加括号 默认就是新式类
-
看代码写结果
v1 = 1 or 2 v1 = 1 v2 = 3 and 7 or 9 and 0 v2 = 7 -
比较以下值有什么不同?
v1 = [1,2,3] 列表 v2 = [(1),(2),(3)] 列表 v3 = [(1,),(2,),(3,)] 元组 -
用一行代码实现数值交换。
a = 1 a,b = b,a b = 2 -
Python中单引号、双引号、三引号的区别?
单引号用来定义一个字符串
双引号用来定义一个字符串
三引号表示注释
-
is和==的区别?
is比较的是两个对象的id值是否相等
== 比较的是两个对象的内容是否相等
-
python里如何实现tuple和list的转化?
lis=[1,2,3,4,5,6] x=tuple(lis) print(type(x),x)
tup=(1,2,3,4,5,6) y=list(tup) print(type(y),y)
-
如何实现字符串
name='老男孩'的反转?newname = name[ : : -1] print(newname)
-
两个set如何获取交集、并集、差集?
a | b 求并集 a& b 求交集 a - b 求差集
-
那些情况下, y != x - (x-y)会成立?
x y 是非空集合 x,y有交集
-
Python中如何拷贝一个对象?
可以用copy.copy()或者copy.deepcopy()
-
简述 赋值、浅拷贝、深拷贝的区别?
在 Python 中,对象的赋值就是简单的对象引用
浅拷贝会创建新对象,其内容非原对象本身的引用,而是原对象内第一层对象的引用。
深拷贝和浅拷贝对应,深拷贝拷贝了对象的所有元素,包括多层嵌套的元素。
-
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) [1,2,4,5,['b','c'],5] print(c) [1,2,4,5,['b','c'],5] print(a) [1,2,4,5,['b','c'],5] -
用Python实现9 * 9 乘法表。
l=1 i=0 while l<10: i=1 while i<=l: if i==l: print(i,'*',l,'=',l*i) else: print(i,'*',l,'=',l*i,end=' ') i += 1 l += 1 -
用Python显示一个斐波那契数列。
def fib_loop_while(max): a, b = 0, 1 while max > 0: a, b = b, a + b max -= 1 yield a for i in fib_loop_while(10): print(i) -
如何删除列表中重复的值?
set()列表
-
一个大小为100G的文件etl_log.txt, 要读取文件中的内容, 写出具体过程代码?
-
a = dict(zip(("a","b","c","d","e"),(1,2,3,4,5))) 请问a是什么?
字典
-
lambda关键字的作用?
匿名函数
-
*arg和**kwarg作用?位置参数和关键字参数
-
如何在函数中设置一个全局变量 ?
通过global声明
-
filter、map、reduce的作用?
filter() 作用:过滤 map()作用:遍历 reduce() 作用:对数组中的元素进行汇总
-
什么是匿名函数?匿名函数有什么作用?
lambda 能够简化代码 作为参数传递
-
Python递归的最大层数?
1000
-
什么是迭代器?什么是可迭代对象?
具有__iter__方法的都是可迭代对象 判断是不是可以迭代,用Iterable
迭代器一定是可迭代对象,但是可迭代对象不一定是迭代器。
-
什么是生成器?
是一种特殊的迭代器 可以通过括号或者yeild产生,不占用内存
-
什么是装饰器及应用场景?
装饰器本质上是⼀个python函数,它可以在让其他函数在不需要做任何代码的变动的前提下增加额外的功能。
应用场景:可以用在框架的路由传参上;
插入日志,作为函数的运行日志;
事务处理,可以让函数实现事务的一致性。
-
什么是反射及应用场景?
-
写一个普通的装饰器。
def log(func): def wrapper(*args,**kw): print ('begin call') func(*args,**kw) print ('end call') return wrapper -
写一个带参数的装饰器。
def log(func): def wrapper(*args,**kw): print ('begin call') func(*args,**kw) print ('end call') return wrapper @log def f(): print ('this is a app!') -
求结果
def num(): return [lambda x:i*x for i in range(4)] print([m(2) for m in num()]) -
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) -
看代码写结果
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) -
请编写一个函数实现将IP地址转换成一个整数。
如 10.3.9.12 转换规则为: 10 00001010 3 00000011 9 00001001 12 00001100 再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ? -
请查找一个目录下的所有文件(可能存在文件嵌套)。
-
求结果
import math print (math.floor(5.5)) -
是否使用过functools中的函数?其作用是什么?
-
re的match和search区别?
-
用Python匹配HTML tag的时候,<.>和<.?>有什么区别?
-
如何生成一个随机数?
-
super的作用?
-
双下划线和单下划线的区别?
-
@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内部记录了对象有多少个引用,即引用计数,当对象被创建时就创建了一个引用计数,当对象不再需要时,这个对象的引用计数为0时,它被垃圾回收。所有这些都是自动完成,不需要像C一样,人工干预,从而提高了程序员的效率和程序的健壮性。 -
简述Python的垃圾回收机制。
-
请用两个队列来实现一个栈。
-
请用Python实现一个链表。
-
请用Python实现链表的逆转。
未完 待续.....
浙公网安备 33010602011771号