Python面试重点(基础篇)

1.编程语言的区别

解释性语言和编译型语言

编译型语言比解释性语言运行速度快

2.python3和python2区别

      python2     python3
除法     返回整数    返回小数
input    数据本身    str
int     整形和long    整形
默认编码  ascii       unicode


3.

v1 = 1 or 2  :1
v2 = 3 and 7 or 9 and 0   :7

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

6python 中单引号、双引号、三引号的区别

都是字符串和具有转义的功能 三引号可已显示多行

7.is和==区别

==是判断的两端的值是否相等

is是判断两侧的地址是否一致

8.python实现tuple和list的转化

list(tuple)

tuple(list)

9.字符串翻转

name="老男孩儿"

name[::-1]

10.set交集、并集、差集

交集:set1 & set2

并集:set1 | set2

差集:set1 - set2


11.y!=x-(x-y)成立
x和y是两个不相等的非空集合

12如何拷贝一个对象
a[:]
a.copy()


13
赋值:将多个变量指向同一个内存地址
浅拷贝:只拷贝第一层元素的地址,只有修改数据第一层的时候源数据不受影响,给可变数据类型进行添
加的时候源数据会受影响
深拷贝:不可变数据类型内存地址共用,可变数据类型新开辟一个地址

14
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(a) # [1,2,4,5,["b","c","d"],5]
print(c) # [1,2,4,5,["b","c","d"]]
print(b) # [1,2,4,5,["b","c","d"],5]

16. 99 乘法表

for i in range(1,9):
for j in range(1,i+1):
print(str(i) + "*" + str(i) + "=" + str(i*j),end=" ")
print("")

17.斐波那契
lst = []
for i in range(20):
if i == 0 or i == 1:
lst.append(1)
else:
lst.append(lst[i-2] + lst[i-1])
print(lst)

18.删除列表重复值
list(tuple(list))

19.读取100g文件
with open(etl_log.txt,mode="r",encoding=utf-8"") as f:
for i in f:
print(i)


20 a = dict(zip(("a","b","c","d","e"),(1,2,3,4,5)))
{a:1,b:2,c:3,d:4,e:5}

21
lamdba 匿名函数

22
*args聚合参数
**kwargs聚合关键字参数

23 如何在函数中设置一个全局变量
global


24filter,map,reduce的作用
filter : 过滤
map : 映射 每个原色都执行方法
reduce : 累计算

25.什么是匿名函数.作用
lambda
作为内置函数的参数传递

26.Python递归的最大层数?
1000

27.什么是迭代器?什么是可迭代对象?
具有iter()和next()方法就是一个迭代器
只要具有__iter__() 方法就是一个迭代对象

28.什么是生成器
生成器程序员自己写的一种迭代器

29.什么是装饰器及应用场景?
不修改源代码及原调用方式的前提下,额外增加新功能

30.什么是反射及应用场景?
通过字符串操作对象的属性和方法

31.写一个普通的装饰器
def wrapper(f):
def inner(*args,**kwargs):
print(2)
f(*args,**kwargs)
return inner

@wrapper
def func():
print(1)
func()


32.写一个带参数的装饰器。
def auth(argv):
def wrapper(f):
def inner(*args,**kwargs):
print(2)
f(*args,**kwargs)
return inner
return wrapper

@auth("...")
def func():
print(1)
func()


33.求结果
def num():
return [lambda x:i*x for i in range(4)]
print([m(2) for m in num()])
[6,6,6,6]


34.def(a, b=[])这种写法有什么陷阱?
b=[]地址共用

35.看代码写结果

def func(a,b=[]):
b.append(a)
return b

v1 = func(1)
v2 = func(2,[10,20])
v3 = func(3)
print(v1,v2,v3)

v1 = [1,3]
v2 = [10,20,2]
v3 = [1,3]

36.看代码写结果
def func(a,b=[]):
b.append(a)
return b

v1 = func(1)
print(v1) :[1]
v2 = func(2,[10,20])
print(v2) :[10,20,2]
v3 = func(3)
print(v3) :[1,3]

37.请编写一个函数实现将IP地址转换成一个整数。


def func(a):
return int(a, 2)
func("00001010")

38.请查找一个目录下的所有文件(可能存在文件嵌套)。


os.listdir()


39.求结果

import math
print (math.floor(5.5))
5

40.是否使用过functools中的函数?其作用是什么?

functools用于高阶函数:指那些作用于函数或者返回其他函数的函数。

41.re的match和search区别?

match:从头开始匹配
search:从任意位置开始查找

42.用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别?
贪婪模式和懒惰模式

43.如何生成一个随机数?
import random
random.random()

44.super的作用?
按照mro的查找顺序进行查找,从当前mro中查找类名的下一个类

45.双下划线和单下划线的区别?
单下划线:(程序员之间约定俗成)类私有的属性
双下划线:(程序级别)类私有的属性


46.@staticmethod和@classmethod的区别?
@staticmethod : 不依赖对象和类 就是一个普通的函数
@classmethod : 依赖类 被classmethod装饰器装饰的方法参数是cls


47.实现一个单例模式(加锁)。

import threading
import time
class Singleton:
instance = None
lock = threading.RLock()

def __init__(self,name):
self.name = name
def __new__(cls,*args,**kwargs):

if cls.instance:
return cls.instance
with cls.lock:
if cls.instance:
return cls.instance
time.sleep(0.1)
cls.instance = obj.__new__(cls)
return cls.instance


48.栈和队列的区别?

栈:后进先出
队列:先进先出

49.以下代码输出是什么? 请给出答案并解释。

class Parent(object):
x = 1

class Child1(Parent):
pass

class Child2(Parent):
pass

print Parent.x, Child1.x, Child2.x
1 1 1
Child1.x = 2
print Parent.x, Child1.x, Child2.x
1 2 1
Parent.x = 3
print Parent.x, Child1.x, Child2.x
3 2 3


50.参考下面代码片段
class Context:
pass

with Content() as ctx:
ctx.do_something()
请在Context类下添加代码完成该类的实现
class Context:
def __init__(self,file,mode,encoding='utf-8'):
self.file = file
self.mode = mode
self.encoding = encoding
def __enter__(self):
self.f = open(self.file,self.mode,encoding=self.encoding)
return self.f
def __exit__(self,exc_type, exc_val, exc_tb):
print(exc_type, exc_val, exc_tb)
self.f.close()

with Context("0","r") as ctx:
ctx.do_something()


1.如何获取列表中第二大的值?
lst = [1,4,3,8,1,5]
lst.sort()
lst[-2]

猜你喜欢

转载自www.cnblogs.com/Ndfour/p/12366104.html
今日推荐