专业编程基础技术教程

网站首页 > 基础教程 正文

爆肝整理!大牛总结出的13道经典Python面试题,你都会吗?

ccvgpt 2024-12-13 12:09:38 基础教程 26 ℃

六七月份可谓是求职的黄金期,跳槽的朋友,毕业找工作的小伙伴们已经非常躁动了。Python作为编程界的网红,我相信不少朋友都将此作为自己的跳板,不管是当做附加技能,还是当作饭碗,下面这份整理的Python面试合集务必看完,牢记!话不多说,来看看面试官们都会问些神马问题吧!

试题NO1 : Python下多线程的限制以及多进程中传递参数的方式?

爆肝整理!大牛总结出的13道经典Python面试题,你都会吗?

答: Python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时间只能有一个线程使用解释器,跟单cpu跑多个程序一个意思,大家都是轮着用的,这叫"并发",不是"并行"

多进程间共享数据可以使用multiprocessing.Value和multiprocessing.Array

试题NO2: Python是如何进行内存管理的?

答:一、对象的引用计数机制。

Python内部使用引用计数,来保持追踪内存中的对象,所有对象都有引用计数。

二、垃圾回收

1,当一个对象的引用计数归零时,它将被垃圾收集机制处理掉。2,当两个对象a和b相互引用时,del语句可以减少a和b的引用计数,并销毁用于引用底层对象的名称。

三、内存池机制

Python提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统。

试题NO3:求数值以内的质数,合数及个数

#质数
def zhishu(number):
num=0
for i in range(2,number+1):
k=Truefor 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)}')

试题No4:九九乘法表

#九九乘法表 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()

试题NO5:裴波那契数列

# 方法1,递归对性能要求较大
def func(x):if x==0 or x ==1:return 1else:
return func(x-1)+func(x-2)
for i in range(10):
print(func(i))

# 方法2,循环方式
def loop(n):
a,b= 1,1while n>0:
a,b= b,a+b
n-=1return a
for i in range(10):
print(loop(i))

试题NO6: 解释一下python的and-or语法

答:与c表达式bool ? a: b类似,但是bool and a or b,当a为假时,不会像C表达式bool ?a: b一样工作

应该将and-or技功封装成一个函数:

defchoose(bool, a, b):return(booland[a]or[b])[0]

因为[a]是一个非空列表它永远不会为假。甚至a是o或"或其他价值,列表[a]为真,因为它有一个元素。

试题NO7: how do l iterate over a sequence inreverse order?

for x in reversed(sequence) :
... # do something with x..

如果不是list,最通用但是稍慢的解决方案是:

for i in range(len( sequence)-1,-1,-1):2

x = sequence[i]

<do something with x>

试题NO8: Python是如何进行类型转换的?

函数     描述

 int(x [,base ]) 将x转换为一个整数

long(x [,base ]) 将x转换为一个长整数

 float(x ) 将x转换到一个浮点数

 complex(real [,imag ]) 创建一个复数

 str(x ) 将对象×转换为字符串

 repr(x ) 将对象×转换为表达式字符串

 eval(str ) 用来计算在字符串中的有效Python表达式,并返回一个对象

 tuple(s ) 将序列s转换为一个元组

list(s ) 将序列s转换为一个列表

 chr(x ) 将一个整数转换为一个字符

 unichr(x ) 将一个整数转换为Unicode字符

ord(x ) 将一个字符转换为它的整数值

 hex(x ) 将一个整数转换为一个十六进制字符串知乎

 oct(x )  将一个整数转换为一个八进制字符串

试题NO9: Python里面如何实现tuple和list的转换?

>>> 1 = tuple(iplist)
>>> print l
( '217.169.209.2:6666', '192.227.139.106:7808', '110.4.12.170:83','69.197.132.80:7808', '205.164.41.101:3128','63.141.249.37:8089','27.34.142.47:9090')
 >>>t = list(1)
 >>>print t
[ '217.169.209.2:6666', '192.227.139.106:7808', '110.4.12.170:83','69,A.97。 172-.-B0.7808', '205.164.41.101:3128', '63.141.249.37:8089', '27.34.142.47:9090']

试题NO10:请写出一段Python代码实现删除一个list里面的重复元素?

>>>l =[1,1,2,3,4,5,4]
 >>> list(set(1))
 [1,2,3,4,,5]
或者
 d = { }
 for x in mylist:
 d[X]=1
 mylist = list(a.keys())

试题NO11:冒泡排序

def 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)

试题NO12: Python里面如何拷贝一个对象?

答:标准库中的copy模块提供了两个方法来实现拷贝一个方法是copy,它返回和参数包含内容一样的对象.

使用deepcopy方法对象中的属性也被复制

试题NO13:x,y 由人为输入的整数,求 x 的 y 次方,不允许使用**

x = int(input('请输入 X:'))
y = int(input('请输入 Y:'))
res = x
for i in range(y-1):
res *=x
print(res)

我是小鱼~带给大家更多Python干货和小技巧!

Tags:

最近发表
标签列表