python常见面试题
面试自动化会遇到的面试题,分享一波,就不排版了,多多见谅。
先上几道编程题
001 求数值以内的质数,合数及个数
#质数 def zhishu(number): num=0 for i in range(2,number+1): k=True for j in range(2,i): if i==j: continue if(i%j==0): k=False break if(k==True): print("%d"%i) num=num+1 print("素数个数%d"%num) # 合数 def heshu(number): num = [] for i in range(2,number+1): for j in range(2,i): if i==j: continue if i%j==0: print(i) num.append(i) break print(f'{number}以内合数个数:{len(num)}')
002 九九乘法表
#九九乘法表1 for i in range(1,10): for j in range(1,i+1): print('%d*%d=%d'%(i,j,i*j)+'\t',end='') #常用格式化方式#d,%s print(f'{i}*{j}={i*j}\t',end='') #f-string量格式化字符串 print() #九九乘法表2 n = 1 while n<=9: i=1 while i<=n: print(f'{i}*{n}={i*n}',end=' ') i=i+1 n=n+1 print()
003 x,y由人为输入的整数,求x的y次方,不允许使用**
x = int(input('请输入X:')) y = int(input('请输入Y:')) res = x for i in range(y-1): res *=x print(res)
004 裴波那契数列(这个我遇到N次)
# 方法1,递归对性能要求较大 def func(x): if x==0 or x ==1: return 1 else: return func(x-1)+func(x-2) for i in range(10): print(func(i)) # 方法2,循环方式 def loop(n): a,b= 1,1 while n>0: a,b= b,a+b n-=1 return a for i in range(10): print(loop(i))
005 冒泡排序
ef new_sort(arr): for i in range(len(arr)): for j in range(0,len(arr)-i-1): if arr[j]>arr[j+1]: arr[j],arr[j+1] = arr[j+1],arr[j] list1 = [64, 34, 25, 12, 22, 11, 90] new_sort(list1)
006 水仙花数(水仙花数指153=1**3+5**3+3**3,位数立方之和等于该数)
for i in range(100,1000): a = i//100 b = (i-a*100)//10 c = (i-a*100-b*10) if i == pow(a,3)+pow(b,3)+pow(c,3): print(i)
以下20道题型是基础题。
1,python有哪几种数据类型?
数字(number),字符串(string),列表即数组(list),元组(tuple),字典(dict),集合(set)
2,列表和元组的区别?
list是可变的数据类型,可用于修改,删除等,元组是不可变类型,元组中的元素不可修改,所以元组多用作查询,性能较好
3,Python里面如何拷贝一个对象?deepcopy 和 copy的区别?
copy与deepcopy均可复制对象,copy 仅拷贝对象本身,而不拷贝对象中引用的其它对象。deepcopy 除拷贝对象本身,而且拷贝对象中引用的其它对象。
4,python中如何取随机数?
使用random库,random.randint(),random.choice()等
5,什么是lambda函数?
编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。
6,python中的*args与**kwargs是什么?
*args与**kwargs均是指python中的不定长参数,*args是参数以元组形式传入,**kwargs是参数以键值对形式传入。
7,re.complie的方法是做什么用的?
re.compile是将正则表达式编译成一个对象,提升查询速度,并重复使用
8,try...except...else/finally的用法
try..except..else如果没有捕获到异常,那么就执行else语句,try..except..finally不管是否捕获到异常,都执行finally语句
9,如何在Python中删除文件?
要在Python中删除文件,您需要导入OS模块。使用os.remove()函数。
10,python数据格式是否可以转换
可以强制转换,例如str(int),这样一个int类型的数据,就转为了字符串
11,如何实现列表去重?
使用set集合去重,在转换为列表,举例:
list1 = [1,2,3,1,4,1]
list2 = list(set(list1))
12,is和==的区别?
is:判断内存地址是否相等;==:判断数值是否相等
13、ascii,unicode,utf-8,gbk几种编码的区别?
-
ASCII码:使用一个字节编码,所以它的范围基本是只有英文字母、数字和一些特殊符号,只有256个字符。
-
Unicode:能够表示全世界所有的字节
-
GBK:是只用来编码汉字的,GBK全称《汉字内码扩展规范》,使用双字节编码。
-
UTF-8:是一种针对Unicode的可变长度字符编码,用的最多,支持中文。
14,字符串的分割怎么用?
使用split()方法,举例:
str1 = 'abcdefg' print(str1.split('b',2)) # 从元素b开始分为两部分
15,python中的zip函数是用来做什么的,怎么使用?
zip()函数是将可迭代对象打包转换为对应的一个个元组,然后返回这些元组所组成的数组,python3中是组成了一个迭代器对象。举例:
a = '123' b = '456' zipped = zip(a,b) for i in zipped: print(i) >>>('1', '4') >>>('2', '5') >>>('3', '6')
16,如何使用zip和dict结合创建字典?
dict1 = dict(zip(('a','b','c'),('1','2','3'))) >>>{'a': 1, 'b': 2, 'c': 3}
17,Python的可变类型和不可变类型?
可变类型:list、dict、set
不可变类型:string、int、float、tuple
18,常用字符串格式化哪几种?
print('%s今年5岁'%('小明')) # 方法1 print('{}今年5岁'.format('小明')) # 方法2 a = '小明' print(f'{a}今年5岁') # 方法3
19,面向对象中__new__、__init__的含义
__init__:为对象定制自己独有的特征,__new__:用来将类实例化的
20,filter、map、reduce的作用?
-
filter(function,iterable)过滤函数
-
map(function,iterable)循环函数
-
reduce(function, iterable)累积函数