- 0
- 0
- 约5.25千字
- 约 14页
- 2026-02-03 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年人工智能工程师面试问题与答案解析
一、编程能力测试(共5题,每题10分,总分50分)
地域针对性:国内互联网大厂(如阿里巴巴、腾讯、字节跳动)技术栈以Python为主,需考察算法与工程实践能力。
1.题目(10分):
请用Python实现一个函数,输入一个字符串列表,返回所有包含至少3个连续数字的字符串,并按数字出现的位置从左到右排序。例如:
输入:`[abc123,xyz,a1b2c3d4,hello]`
输出:`[a1b2c3d4]`
答案:
python
importre
deffind_consecutive_numbers(strings):
result=[]
forsinstrings:
matches=re.finditer(r\d+,s)
formatchinmatches:
start,end=match.span()
ifend-start=3:
result.append(s)
break
returnsorted(result,key=lambdax:next(re.finditer(r\d+,x).span()[0]))
示例调用
print(find_consecutive_numbers([abc123,xyz,a1b2c3d4,hello]))#输出:[a1b2c3d4]
解析:
-使用正则表达式`re.finditer(r\d+,s)`查找字符串中的数字序列。
-判断数字序列长度是否≥3,若是则加入结果列表。
-最终按数字首次出现的位置排序,避免重复。
2.题目(10分):
给定一个未排序的整数数组,实现快速排序算法,并要求输出每轮分区后的数组状态。例如:
输入:`[3,1,4,1,5,9,2,6]`
输出:
初始数组:[3,1,4,1,5,9,2,6]
第一轮分区后:[1,1,2,3,5,9,4,6]
第二轮分区后:[1,1,2,3,4,9,5,6]
...
最终排序:[1,1,2,3,4,5,6,9]
答案:
python
defquick_sort(arr,step=1):
print(f第{step}轮分区后:{arr})
iflen(arr)=1:
returnarr
pivot=arr[-1]
left=[xforxinarr[:-1]ifx=pivot]
right=[xforxinarr[:-1]ifxpivot]
returnquick_sort(left,step+1)+[pivot]+quick_sort(right,step+1)
示例调用
quick_sort([3,1,4,1,5,9,2,6])
解析:
-快速排序核心是分区操作,每次选择末尾元素作为基准值(pivot)。
-将数组分为小于等于基准值和大于基准值的两部分,递归排序。
-每轮输出分区后的数组,展示递归过程。
3.题目(10分):
实现一个LRU(最近最少使用)缓存,支持`get`和`put`操作,要求用哈希表+双向链表实现。
答案:
python
classNode:
def__init__(self,key,value):
self.key=key
self.value=value
self.prev=None
self.next=None
classLRUCache:
def__init__(self,capacity:int):
self.capacity=capacity
self.cache={}
self.head,self.tail=Node(0,0),Node(0,0)
self.head.next=self.tail
self.tail.prev=self.head
defget(self,key:int)-int:
ifkeyinself.cache:
node=self.cache[key]
self._remove(node)
self._add(node)
returnnode.value
return-1
defput(self,key:int,value:int)-None:
ifkeyinself.cache:
self._remove(self.cache[key])
node=Node(key,value)
self.cache[key]=nod
原创力文档

文档评论(0)