注意:只有必答题部分计算分值,补充题不计算分值。
第一部分 必答题(每题2分)
-
简述列举了解的编程语言及语言间的区别?
编译型和解释型
编译型:c,java
特点是只一次编译
执行效率高,开发效率慢
解释型:python
多次编译,一行两行就可以编译一次
执行效率低,开发效率高
-
列举Python2和Python3的区别?
py2没中文
py2中print加引号
py3中print加括号
py2中整数相除没有浮点数
如果小数相除他会保一位小数
py3整数相除也保留浮点数
py2xrange和py3的range一样是个生成器
py2的range是个列表,
py3没xrange
py2中二进制不用加前缀0b
py3中必须加前缀
py2中<>是不等于,py3没了
-
看代码写结果
v1 = 1 or 2 1v2 = 3 and 7 or 9 and 0 3
-
比较以下值有什么不同?
v1 = [1,2,3] 数字v2 = [(1),(2),(3)] 数字v3 = [(1,),(2,),(3,)] 元组
-
用一行代码实现数值交换。
a = 1 a,b=b,ab = 2
-
Python中单引号、双引号、三引号的区别?
单双都是表示字符串
三是注释
-
is和==的区别?
is是内存和内容都要一样
==是内容一样
-
python里如何实现tuple和list的转化?
set()
list()
-
如何实现字符串
name='老男孩'
的反转?a='老男孩'b=a[::-1]print(b)
-
两个set如何获取交集、并集、差集?
$
|
-
-
那些情况下, y != x - (x-y)会成立?
两个不同的集合
-
Python中如何拷贝一个对象?
深浅拷贝
-
简述 赋值、浅拷贝、深拷贝的区别?
赋值,同一内存地址,多个名字
浅拷贝:只拷贝第一层元素,不可变的没关系,可变的除非你改变内部东西,否则整体替换的话不影响浅拷贝
深拷贝:不可变元素共用,可变元素都有自己的地址
-
pass的作用?
占位,不作任何处理
-
阅读代码写结果。
import copya = [1,2,4,5,['b','c']]b = ac = copy.copy(a)d = copy.deepcopy(a)a.append(5)a[4].append('d')print(b) [1,2,4,5,['b','c','d'],5]print(c) [1,2,4,5,['b','c','d']]print(a) [1,2,4,5,['b','c','d'],5]
-
用Python实现9 * 9 乘法表。
for i in range(1, 10): for j in range(1, i+1): print(f'{j}x{i}={i*j}',end=' ') print() 1x1=1 1x2=2 2x2=4 1x3=3 2x3=6 3x3=9 1x4=4 2x4=8 3x4=12 4x4=16 1x5=5 2x5=10 3x5=15 4x5=20 5x5=25 1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36 1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49 1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64 1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
-
用Python显示一个斐波那契数列。
输出前n项x=input("写几个斐波那契:")def m(): a=0 b=1 while 1: a,b=b,a+b yield afor i in range(int(x)): print(next(m()))输出你要的第几项 q=input("输入你要的第几项:")q=int(q)def f(n): if n ==0 or n==1: return 1 else: return f(n-1)+f(n-2)print(f(q))
-
如何删除列表中重复的值?
set()变成集合
-
一个大小为100G的文件etl_log.txt, 要读取文件中的内容, 写出具体过程代码?
-
a = dict(zip(("a","b","c","d","e"),(1,2,3,4,5))) 请问a是什么?
-
lambda关键字的作用?
-
*arg
和**kwarg
作用?在形参时
*args接收位置参数,并将它们写到元组里输出出来
**kwargs接收关键字参数,并将他们写到字典中输出出来
在print时
args输出元组
kwargs输出字典
*kwargs取关键字,而不是值,就是字典的键
*args会将原来的元组打散
-
如何在函数中设置一个全局变量 ?
global a=1
-
filter、map、reduce的作用?
filter() # 过滤 把可迭代对象进行迭代,把每一项数据都传给前面的函数,根据函数返回的True或者False来决定元素是否保留.
map() # 对象映射 把可迭代对象中每一项函数传递给前面的函数,函数的执行结果作为整个运算的结果
reduce 累计算,索引1和索引2计算,结果相加索引3再计算
-
什么是匿名函数?匿名函数有什么作用?
lambda写法简便
-
Python递归的最大层数?
1000
-
什么是迭代器?什么是可迭代对象?
既有__iter__又有__next__就是迭代器有__iter__方法就是可迭代对象
-
什么是生成器?
函数中有yield
-
什么是装饰器及应用场景?
不改动源代码,在源代码执行之前加一些操作
-
什么是反射及应用场景?
用字符串去调用类中的方法
-
写一个普通的装饰器。
def func(f): def inner(): print("函数调用之前") f() print("函数调用之后") return inner@func @func等于c=func(c)def c(): print("调用函数中")c()
-
写一个带参数的装饰器。
def wrapper(a): def func(f): def inner(k): print(a) print(type(a)) b=int(a) if b: ret = f(k) return ret+2 else: print("sdfg") return 123 return inner return func@wrapper(int(input(">>>")))def foo(b): return bprint(foo(3)+2)
-
求结果
def num(): return [lambda x:i*x for i in range(4)]print([m(2) for m in num()])6666
-
def(a, b=[])这种写法有什么陷阱?
深浅拷贝
-
看代码写结果
def func(a,b=[]): b.append(a) return bv1 = 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 bv1 = 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 = ?a='10.3.9.12'def c(n): a,b,c,d=n.split(".") a=format(int(a),'08b') b=format(int(b),'08b') c=format(int(c),'08b') d=format(int(d),'08b') return a,b,c,dprint(c(a))
-
请查找一个目录下的所有文件(可能存在文件嵌套)。
-
求结果
import mathprint (math.floor(5.5))5
-
是否使用过functools中的函数?其作用是什么?
-
re的match和search区别?
match找一个就停了
search一直找
-
用Python匹配HTML tag的时候,<.>和<.?>有什么区别?
-
如何生成一个随机数?
import randomprint(random.random()) # 0 ~ 1 0~1随机浮点数print(random.uniform(1,10)) # 1 ~ 10 随机浮点数print(random.randint(1,50)) # 1 ~ 50(闭区间) 随机整数print(random.randrange(1,5,2)) # randrange(起始,终止,步长) 递增集合中的随机一个数print(random.choice([1,2,3,4,5,])) # 选择一个元素print(random.choices([1,2,3,4,5,],k=2)) # 选择两(根k值有关)个元素,会有重复print(random.sample((1,2,3,4,5),k=2)) # 选择两个元素,不会有重复(除非只有两个)
-
super的作用?
-
双下划线和单下划线的区别?
-
@staticmethod和@classmethod的区别?
静态方法,与类无关直接调用函数一样去调用该方法
类方法,只能有类去调用的方法
-
实现一个单例模式(加锁)。
import timeimport threadingclass Singleton(object): instance = None lock = threading.RLock() #锁放类里面当属性 def __new__(cls, *arg, **kwargs): if cls.instance: return cls.instance with cls.lock: #用类去调用锁 if not cls.instance: cls.instance = object.__new__(cls) return cls.instance def task(): obj = Singleton() print(obj)for i in range(10): t = threading.Thread(target=task) t.start()
-
栈和队列的区别?
队列先进先出,栈先进后出。
-
以下代码输出是什么? 请给出答案并解释。
class Parent(object): x = 1class Child1(Parent): passclass Child2(Parent): passprint Parent.x, Child1.x, Child2.xChild1.x = 2print Parent.x, Child1.x, Child2.xParent.x = 3print Parent.x, Child1.x, Child2.x1 1 11 2 13 2 3
-
参考下面代码片段
class Context: passwith Content() as ctx: ctx.do_something()请在Context类下添加代码完成该类的实现
第二部分 可选题
-
如何获取列表中第二大的值?
-
-
简述Python的垃圾回收机制。
-
请用两个队列来实现一个栈。
-
请用Python实现一个链表。
-
请用Python实现链表的逆转。
-
来源:https://www.cnblogs.com/shengjunqiye/p/12365997.html