2024年最新python面试题汇总(史上最全),2024年最新程序员去大公司面试

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

            def CountAndSay(n):     ans = "1"     n -= 1     while n > 0:         res = ""         pre = ans[0]         count = 1 
    for i in range(1, len(ans)):             if pre == ans[i]:                 count += 1             else: 
            res += str(count) + pre                 pre = ans[i]                 count = 1         res += str(count) + pre         ans = res 

     
                    n -= 1     return ans 

题14:不使用sqrt



        函数,试编写squareRoot()函数,输入一个正数,输出它的平方根的整

数部分  
 难度:★★★★☆ 【参考答案】



def squareRoot(x): result = 1.0
while abs(result * result - x) > 0.1: result = (result + x / result) / 2
return int(result)


三、 正则表达式(4题)  
 题15:请写出匹配中国大陆手机号且结尾不是4和7的正则表达式。  
 难度:★☆☆☆☆ 【参考答案】



        import re 

tels = [“159\*\*\*\*\*\*\*\*”, “14456781234”, “12345678987”, “11444777”] for tel in tels:  
 print(“Valid”) if (re.match(r"1\d{9}[0-3,5-6,8-9]", tel) != None) else print(“Invalid”)  
 题16:请写出以下代码的运行结果。  
 难度:★★☆☆☆



import re

str = ‘

中国

res = re.findall(r’
(.*?)
',str) print(res)



        结果如下: 【参考答案】 

['中国 ']  
 题17:请写出以下代码的运行结果。  
 难度:★★★☆☆



import re

            match = re.compile('www\....?').match("www.baidu.com") if match: 
print(match.group()) else:                                
                print("NO MATCH") 

【参考答案】  
 www.bai  
 题18:请写出以下代码的运行结果。  
 难度:★★☆☆☆



import re
example = “

test1
test2
” Result = re.compile(“
.*”).search(example)

            print("Result = %s" % Result.group()) 

【参考答案】  
 Result = 



 test1 


 test2 



        四、 列表、字典、元组、数组、矩阵(9题) 

题19:使用递推式将矩阵转换为一维向量。  
 难度:★☆☆☆☆ 使用递推式将 [[ 1, 2 ], [ 3, 4 ], [ 5, 6 ]]  
 转换为



         [1, 2, 3, 4, 5, 6]。 【参考答案】 
        a = [[1, 2], [3, 4], [5, 6]] print([j for i in a for j in i]) 

题20:写出以下代码的运行结果。  
 难度:★★★★☆



def testFun():

                temp = [lambda x : i\*x for i in range(5)]  
        
            
        
                return temp 

for everyLambda in testFun(): print (everyLambda(3))


结果如下: 【参考答案】



        12 12 12 12 12 

题21:编写Python程序,打印星号金字塔。  
 难度:★★★☆☆  
 编写尽量短的Python程序,实现打印星号金字塔。例如n=5时输出以下金字塔图形:



             * 
    
        
    
            ***    *****   *******  ********* 

参考代码如下: 【参考答案】



            n = 5 

for i in range(1,n+1):
print(’ ‘*(n-(i-1))+’*'*(2*i-1))


题22:获取数组的支配点。  
 难度:★★★☆☆  
 支配数是指数组中某个元素出现的次数大于数组元素总数的一半时就成为支配数,其所在下标称为支配点。编写Python



        函数FindPivot(li),输入数组,输出其中的支配点和支配数,若数组中不存在支配数,输出None。 

例如:[3,3,1,2,2,1,2,2,4,2,2,1,2,3,2,2,2,2,2,4,1,3,3]中共有23个元素,其中元素2出现了12次,其支配点和支配数组合是(18, 2)。 【参考答案】



def FindPivot(li): mid = len(li)/2 for l in li: count = 0 i = 0 mark = 0 while True: if l == li[i]: count += 1 temp = i i += 1
if count > mid: mark = temp
return (mark, li[mark]) if i > len(li) - 1: break


题23:将函数按照执行效率高低排序  
 难度:★★★☆☆  
 有如下三个函数,请将它们按照执行效率高低排序。



def S1(L_in):
l1 = sorted(L_in)
l2 = [i for i in l1 if i<0.5] return [i*i for i in l2]

            def S2(L_in): 
l1 = [i for i in L_in if i<0.5]     l2 = sorted(l1) 
return [i\*i for i in l2]  

def S3(L_in):
l1 = [i*i for i in L_in] l2 = sorted(l1)
return [i for i in l2 if i<(0.5*0.5)]


【参考答案】  
 使用cProfile库即可测试三个函数的执行效率:



import random import cProfile
L_in = [random.random() for i in range(1000000)]
cProfile.run(‘S1(L_in)’) cProfile.run(‘S2(L_in)’) cProfile.run(‘S3(L_in)’)


从结果可知,执行效率从高到低依次是S2、S1、S3。  
 题24:螺旋式返回矩阵的元素  
 难度:★★★★★  
 给定m×n个元素的矩阵(m行,n列),编写Python



        函数spiralOrder(matrix),以螺旋顺序返回矩阵的所有元素。 

例如,给定以下矩阵: [[ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]  
 应该返回[1,2,3,6,9,8,7,4,5]  
 【参考答案】



def spiralOrder(matrix):
if len(matrix) == 0 or len(matrix[0]) == 0: return [] ans = []
left, up, down, right = 0, 0, len(matrix) - 1, len(matrix[0]) - 1 while left <= right and up <= down: for i in range(left, right + 1): ans += matrix[up][i], up += 1
for i in range(up, down + 1): ans += matrix[i][right], right -= 1
for i in reversed(range(left, right + 1)): ans += matrix[down][i], down -= 1
for i in reversed(range(up, down + 1)): ans += matrix[i][left], left += 1
return ans[:(len(matrix) * len(matrix[0]))]


题25:矩阵重整  
 难度:★★★★☆



        对于一个给定的二维数组表示的矩阵,以及两个正整数r和c,分别表示所需重新整形矩阵的行数和列数。reshape函数生成一个新的矩阵,并且将原矩阵的所有元素以与原矩阵相同的行遍历顺序填充进去,将该矩阵重新整形为一个不同大小的矩阵但保留其原始数据。对于给定矩阵和参数的reshape操作是可以完成且合法的,则输出新的矩阵;否则,输出原始矩阵。请使用Python语言实现reshape函数。 例如: 

    
        
    
        输入 

r, c 输出


说明


nums = [[1,2], [3,4]] r = 1,c =  
 4 [[1,2,3,4]]  
 行遍历的是[1,2,3,4]。新的重新形状矩阵是1 \* 4矩阵,使用前面的列表逐行填充。  
 nums = [[1,2], [3,4]]  
 r = 2,c =  
 4  
 [[1,2], [3,4]]  
 无法将2 \* 2矩阵重新整形为2 \* 4矩阵。所以输出原始矩阵。  
 注意:给定矩阵的高度和宽度在[1,100]范围内。给定的r和c都是正数。  
 【参考答案】



def matrixReshape(nums, r, c): “”"
if r * c != len(nums) * len(nums[0]): return nums m = len(nums) n = len(nums[0])
ans = [[0] * c for _ in range®] for i in range(r * c):
ans[i / c][i % c] = nums[i / n][i % n] return ans


题26:查找矩阵中第k个最小元素。  
 难度:★★★★☆  
 给定n×n矩阵,其中每行每列元素均按升序排列,试编写Python函数kthSmallest(matrix, k),找到矩阵中的第k个最小元素。  
 注意:查找的是排序顺序中的第k个最小元素,而不是第k个不同元素。 例如: 矩阵= [[1,5,9], [10,11,13], [12,13,15]] k = 8,应返回13。



        【参考答案】 


import heapq
def kthSmallest(matrix, k): visited = {(0, 0)}
heap = [(matrix[0][0], (0, 0))]

while heap: 
    val, (i, j) = heapq.heappop(heap)         k -= 1         if k == 0:             return val 
                if i + 1 < len(matrix) and (i + 1, j) not in visited: 

                        heapq.heappush(heap, (matrix[i + 1][j], (i + 1, j)))             visited.add((i + 1, j)) 
    if j + 1 < len(matrix) and (i, j + 1) not in visited:             heapq.heappush(heap, (matrix[i][j + 1], (i, j + 1)))             visited.add((i, j + 1)) 

题27࿱
  • 22
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在2023年的Python面试中,你可能会遇到很多不同类型的问。这些问涵盖了Python的基础知识、编程技巧、数据分析以及Python函数库等多个方面。一些常见的问可能包括: 1. Python中的GIL是什么?如何解决GIL的问?\[2\] 2. 什么是装饰器?在Python中如何使用装饰器?\[3\] 3. 请解释Python中的列表推导式是什么,并给出一个例子。 4. 什么是Python中的虚拟环境?如何创建和激活虚拟环境? 5. 请解释Python中的异常处理机制,并给出一个使用try-except语句的例子。 6. 请解释Python中的迭代器和生成器的区别,并给出一个使用生成器的例子。 7. 请解释Python中的多重继承是什么,并给出一个使用多重继承的例子。 8. 请解释Python中的Lambda函数是什么,并给出一个使用Lambda函数的例子。 9. 请解释Python中的递归函数是什么,并给出一个使用递归函数的例子。 10. 请解释Python中的模块和包的区别,并给出一个使用模块和包的例子。 这些问只是面试中可能遇到的一小部分。为了在面试中脱颖而出,建议你对Python的各个方面进行深入学习和准备,并通过实践项目来加深对Python的理解和应用能力。祝你在2023年的Python面试中取得好成绩! #### 引用[.reference_title] - *1* [2023年Python面试(220附答案)](https://blog.csdn.net/python03014/article/details/129875848)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [2023年Python面试(真)【进阶】](https://blog.csdn.net/qq_37275405/article/details/128775788)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值