注意:只有必答题部分计算分值,补充题不计算分值。
第一部分 必答题(每题2分)
-
简述列举了解的编程语言及语言间的区别?
python
-
列举Python2和Python3的区别?
python2除法时返回的是整数,python3除法时返回的是小数
python2整形,长整型,python3全是整形
python2中的input获取的就是数据本身,python3中的input获取字符串
-
看代码写结果
v1 = 1 or 2v2 = 3 and 7 or 9 and 0
v1=1 v2=7
-
比较以下值有什么不同?
v1 = [1,2,3]v2 = [(1),(2),(3)]v3 = [(1,),(2,),(3,)]
列表 列表里为集合 列表里元素为元祖
-
用一行代码实现数值交换。
a = 1b = 2
b=a
-
Python中单引号、双引号、三引号的区别?
单引号表示的字符串里可包含双引号,当然不能包含单引号
双引号表示的字符串里可以包含单引号,字符串都只能有一行
三个引号能包含多行字符串,同时常常出现在函数的声明的下一行,来注释函数的功能
-
is和==的区别?
is判断是否为同一内存地址,==赋值
-
python里如何实现tuple和list的转化?
print(list(tuple))
-
如何实现字符串
name='老男孩'
的反转?name[::-1]
-
两个set如何获取交集、并集、差集?
& | -
-
那些情况下, y != x - (x-y)会成立?
x,y是两个非空集合
-
Python中如何拷贝一个对象?
赋值 copy
-
简述 赋值、浅拷贝、深拷贝的区别?
赋值(=),就是创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个
浅拷贝:创建一个新的对象,但它包含的是对原始对象中包含项的引用
深拷贝:创建一个新的对象,并且递归的复制它所包含的对象,修改其中一个,另外一个不会改变
-
pass的作用?
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)print(c)print(a)
-
用Python实现9 * 9 乘法表。
for i in range(1,10):for m in range(1,10):print('%s×%s=%s'%(i,m,i*m))
-
用Python显示一个斐波那契数列。
def fib_loop(n):a, b = 0, 1for i in range(n+1): a, b = b, a+b return afori in range(20):print(fib_loop(i), end='')
-
如何删除列表中重复的值?
a = [1,2,3,4,1,2,6,7,1,9]b = []for i in a:if i not in b:b.append(i)print(b)
-
一个大小为100G的文件etl_log.txt, 要读取文件中的内容, 写出具体过程代码?
-
a = dict(zip(("a","b","c","d","e"),(1,2,3,4,5))) 请问a是什么?
字典
-
lambda关键字的作用?
匿名函数 lambda x :x # x是普通函数的形参(位置,关键字...)可以不接受参数(冒号前面的x可以不写,后面的x必须写):后边x是普通函数的返回值(只能返回一个数据类型)
-
*arg
和**kwarg
作用?*args将元组中的元素进行打散
**kwargs将字典的键获取
-
如何在函数中设置一个全局变量 ?
顶头写
-
filter、map、reduce的作用?
map用可迭代的每个值执行一组语句,返回修改值
filter从可迭代对象中提取值的子集,筛选值
reduce将多个值缩减为一个
-
什么是匿名函数?匿名函数有什么作用?
一行函数
常规函数def,必须通过其定义的函数名进行调用,在调用之前必须先定义,
而lambda只是一个表达式,返回的函数对象就不需要名字
-
Python递归的最大层数?
官方1000
-
什么是迭代器?什么是可迭代对象?
迭代器指的是迭代取值的工具,迭代是指一个重复的过程,每一次重复都是基于
上一次结果而来迭代提供了一种通用的不依赖索引的迭代取值方式
只要有__ iter() __方法的就是可迭代对象
-
什么是生成器?
生成器的本质就是一个迭代器
-
什么是装饰器及应用场景?
装饰器是python的重要组成部分,它们是修改其他函数功能的函数
在一个web应用终端中, 帮助检查某人是否被授权使用
-
什么是反射及应用场景?
通过字符串操作对象的属性和方法
反编译
-
写一个普通的装饰器。
def foo(): print("a")def warpper(func): def inner(): print("b") func() print("c") return innerfoo = warpper(foo)foo()
-
写一个带参数的装饰器。
def warpper(f): def inner(): print("111") f() print("222") return inner@warpper # func = warpper(func)def func(): print("被装饰的函数1")@warpper # index = warpper(index)def index(): print("被装饰的函数2")func()index()
-
求结果
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=[])这种写法有什么陷阱?
如果使用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] [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] [3]
-
请编写一个函数实现将IP地址转换成一个整数。
如 10.3.9.12 转换规则为: 10 00001010 3 00000011 9 00001001 12 00001100 再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ?
-
请查找一个目录下的所有文件(可能存在文件嵌套)。
import osprint(os.listdir('.'))
-
求结果
import mathprint (math.floor(5.5))
5.0
-
是否使用过functools中的函数?其作用是什么?
functools用于高阶函数:指那些作用于函数或者返回其他函数的函数。通常
情况下,只要是可以被当做函数调用的对象就是这个模块的目标
functools提供了partial的方法,通过这种方法生成一个固定参数的新函数
-
re的match和search区别?
match().group() 从头开始查找,没有返回None
search().group() 从任意位置开始查找
-
用Python匹配HTML tag的时候,<. * >和<. * ?>有什么区别?
贪婪匹配,非贪婪匹配
-
如何生成一个随机数?
rabdom
-
super的作用?
在子类中调用父类的初始化方法
-
双下划线和单下划线的区别?
_xxx 不能用于'from module import *' 以单下划线开头的表示的是protected
类型的变量,即保护类型只能允许其本身与子类进行访问
双下划线的表示的是私有类型的变量,只能是允许这个类本身进行访问了,连
子类也不可以
双下划线定义的是特列方法
-
@staticmethod和@classmethod的区别?
装饰类方法 装饰静态方法
-
实现一个单例模式(加锁)。
import threadingimport timeclass 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 = object.__new__(cls) return cls.instancedef task(): obj = Singleton('x') print(obj)for i in range(10): t = threading.Thread(target=task) t.start()data = Singleton('asdfasdf')print(data)
-
栈和队列的区别?
队列先进先出,栈先进后出
-
以下代码输出是什么? 请给出答案并解释。
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.x
-
参考下面代码片段
class Context: passwith Content() as ctx: ctx.do_something()请在Context类下添加代码完成该类的实现
第二部分 可选题
-
如何获取列表中第二大的值?
-
简述Python内存管理机制。
-
简述Python的垃圾回收机制。
引用计数、标记清除、分代回收
-
请用两个队列来实现一个栈。
-
请用Python实现一个链表。
-
请用Python实现链表的逆转。
来源:https://www.cnblogs.com/sunqichao01/p/12366058.html