- 0
- 0
- 约5.21千字
- 约 16页
- 2026-02-03 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年金融行业软件开发工程师面试全攻略及答案
一、编程能力测试(共5题,每题10分,总分50分)
1.题目:
请实现一个函数,输入一个整数数组,返回数组中所有可能的三元组,使得三元组的和等于给定的目标值。要求不重复的三元组,并返回所有唯一的组合。
答案:
python
defthree_sum(nums,target):
nums.sort()
result=[]
n=len(nums)
foriinrange(n-2):
ifi0andnums[i]==nums[i-1]:
continue
left,right=i+1,n-1
whileleftright:
total=nums[i]+nums[left]+nums[right]
iftotal==target:
result.append([nums[i],nums[left],nums[right]])
whileleftrightandnums[left]==nums[left+1]:
left+=1
whileleftrightandnums[right]==nums[right-1]:
right-=1
left+=1
right-=1
eliftotaltarget:
left+=1
else:
right-=1
returnresult
解析:
首先对数组进行排序,避免重复的三元组。使用固定指针法,固定第一个数,然后用双指针遍历剩余部分,找到和为目标值的三元组。注意跳过重复的数字,避免结果重复。
2.题目:
请实现一个LRU(LeastRecentlyUsed)缓存机制,支持get和put操作。LRU缓存有限制容量,当缓存满时,最久未使用的缓存将被移除。
答案:
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_key=self.order.pop(0)
delself.cache[oldest_key]
self.cache[key]=value
self.order.append(key)
解析:
使用哈希表存储键值对,维护一个双向链表记录访问顺序。get操作将键移动到链表末尾,put操作在键存在时移动键,不存在时判断是否需要删除最久未使用的键。
3.题目:
请实现一个二叉树的最大深度计算函数,输入二叉树的根节点,返回二叉树的最大深度。
答案:
python
classTreeNode:
def__init__(self,val=0,left=None,right=None):
self.val=val
self.left=left
self.right=right
defmax_depth(root:TreeNode)-int:
ifnotroot:
return0
return1+max(max_depth(root.left),max_depth(root.right))
解析:
使用递归计算左右子树的最大深度,取较大值加1即为当前节点的深度。
4.题目:
请实现一个字符串转换整数(atoi)函数,将非负整数字符串转换为整数。忽略前导空格,处理正负号,遇到非数字字符停止转换。
答案:
python
defmy_atoi(s:str)-int:
s=s.strip()
ifnots:
return0
sign=1
i=0
ifs[0]==-:
sign=-1
i=1
elifs[0]==+:
i=1
result=0
whileilen(s)ands[i].isdigit():
result=result10+i
原创力文档

文档评论(0)