- 0
- 0
- 约8.14千字
- 约 24页
- 2026-03-05 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年软件研发工程师面试常见问题集
一、编程能力测试(共5题,每题10分,总分50分)
1.基础算法题(10分)
题目:
请实现一个函数,输入一个非负整数`n`,返回`n`的阶乘。要求使用递归方式实现,并考虑大数问题。
答案:
python
deffactorial(n):
ifn==0:
return1
else:
returnnfactorial(n-1)
解析:
递归实现阶乘是最基础的问题,考察候选人对递归的理解。大数问题可以通过字符串拼接或专门的大数库解决,但此处未要求。递归深度需要注意,Python默认最大递归深度为1000,对于大数可能需要优化。
2.数据结构题(10分)
题目:
请实现一个LRU(最近最少使用)缓存,支持get和put操作。要求时间复杂度为O(1)。
答案:
python
classLRUCache:
def__init__(self,capacity:int):
self.capacity=capacity
self.cache={}
self.order=[]
defget(self,key:int)-int:
ifkeyinself.cache:
self.order.remove(key)
self.order.append(key)
returnself.cache[key]
return-1
defput(self,key:int,value:int)-None:
ifkeyinself.cache:
self.order.remove(key)
eliflen(self.cache)=self.capacity:
oldest=self.order.pop(0)
delself.cache[oldest]
self.cache[key]=value
self.order.append(key)
解析:
LRU缓存的核心是双向链表+哈希表的结构。哈希表实现O(1)的查找,双向链表实现O(1)的删除和添加。题目要求时间复杂度为O(1),因此不能使用排序数组或列表模拟。
3.字符串处理题(10分)
题目:
请实现一个函数,判断一个字符串是否是有效的括号组合。例如输入()[]{}返回True,输入([)]返回False。
答案:
python
defisValid(s:str)-bool:
stack=[]
mapping={):(,]:[,}:{}
forcharins:
ifcharinmapping:
top_element=stack.pop()ifstackelse#
ifmapping[char]!=top_element:
returnFalse
else:
stack.append(char)
returnnotstack
解析:
栈的应用经典问题。通过哈希表映射括号对应关系,遇到闭括号时检查栈顶元素是否匹配。如果栈为空则直接返回False,最后确保栈为空。
4.链表操作题(10分)
题目:
给定一个链表,删除其中的重复元素,使得每个元素只出现一次。返回处理后的链表。
答案:
python
classListNode:
def__init__(self,val=0,next=None):
self.val=val
self.next=next
defdeleteDuplicates(head:ListNode)-ListNode:
current=head
whilecurrentandcurrent.next:
ifcurrent.val==current.next.val:
current.next=current.next.next
else:
current=current.next
returnhead
解析:
双指针法解决链表问题。当前节点与下一个节点值相同则删除下一个节点,否则移动当前节点指针。需要考虑链表为空或只有一个节点的情况。
5.排序算法题(10分)
题目:
请实现快速排序算法,并分析其时间复杂度。
答案:
python
defquick_sort(arr):
iflen(arr)=1:
returnarr
pivot=arr[len(arr)//2]
left=[xforxinarrifxpivot]
middle=[xforxinarrifx==pivot]
right=[xforxinarrifxpivot]
re
原创力文档

文档评论(0)