2026年Python开发工程师面试要点与参考答案.docxVIP

  • 0
  • 0
  • 约7.05千字
  • 约 19页
  • 2026-01-19 发布于福建
  • 举报

2026年Python开发工程师面试要点与参考答案.docx

第PAGE页共NUMPAGES页

2026年Python开发工程师面试要点与参考答案

一、编程能力测试(共5题,每题10分,总分50分)

1.题目(10分):

编写一个Python函数,接收一个正整数列表,返回列表中所有偶数的平方和。例如,输入`[1,2,3,4,5]`,输出`20`(即`22+42=4+16`)。要求使用列表推导式实现,并考虑输入为空列表或非整数的情况。

参考答案:

python

defsum_of_even_squares(nums):

ifnotnumsornotall(isinstance(x,int)forxinnums):

return0

returnsum(x2forxinnumsifx%2==0)

测试用例

print(sum_of_even_squares([1,2,3,4,5]))#输出:20

print(sum_of_even_squares([]))#输出:0

print(sum_of_even_squares([1,2,a]))#输出:0

解析:

-首先检查输入列表是否为空或包含非整数元素,若不合法则返回0。

-使用列表推导式筛选偶数并计算平方,最后求和。

-列表推导式简化了代码,提高可读性。

2.题目(10分):

实现一个简单的LRU(最近最少使用)缓存,支持`get`和`put`操作。缓存容量为3,当新元素加入且缓存已满时,需淘汰最久未使用的元素。要求使用Python字典和双向链表实现(可使用`collections.OrderedDict`简化)。

参考答案:

python

fromcollectionsimportOrderedDict

classLRUCache:

def__init__(self,capacity:int):

self.cache=OrderedDict()

self.capacity=capacity

defget(self,key:int)-int:

ifkeynotinself.cache:

return-1

self.cache.move_to_end(key)

returnself.cache[key]

defput(self,key:int,value:int)-None:

ifkeyinself.cache:

self.cache.move_to_end(key)

self.cache[key]=value

iflen(self.cache)self.capacity:

self.cache.popitem(last=False)

测试用例

lru=LRUCache(3)

lru.put(1,1)

lru.put(2,2)

lru.put(3,3)

print(lru.get(1))#输出:1

lru.put(4,4)#去除key=2

print(lru.get(2))#输出:-1

解析:

-`OrderedDict`保留插入顺序,通过`move_to_end`实现访问时移动元素到末尾。

-`popitem(last=False)`淘汰最久未使用的元素(即字典的第一个键值对)。

-此实现适用于小容量缓存,大容量场景需手动实现双向链表。

3.题目(10分):

编写一个函数,将一个嵌套的字典(如`{a:{b:{c:1}}}`)的键值对顺序反转,即输出`{c:{b:{a:1}}}`。要求递归处理,并处理空字典或非字典输入。

参考答案:

python

definvert_nested_dict(d):

ifnotisinstance(d,dict):

returnNone

inverted={}

forkey,valueind.items():

ifisinstance(value,dict):

inverted[key]=invert_nested_dict(value)

else:

inverted[key]=value

returninverted

测试用例

nested_dict={a:{b:{c:1}}}

print(invert_nested_dict(nested_dict))#输出:{c:{b:{a:1}}}

print(invert_nested_dict({}))#输出:{}

print(invert_nested_dict([1,2,3]))

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档