金融行业软件开发工程师面试全攻略及答案.docxVIP

  • 0
  • 0
  • 约5.21千字
  • 约 16页
  • 2026-02-03 发布于福建
  • 举报

金融行业软件开发工程师面试全攻略及答案.docx

第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)

1亿VIP精品文档

相关文档