软件工程师面试题集及参考答案指南.docxVIP

  • 1
  • 0
  • 约4.86千字
  • 约 14页
  • 2026-02-18 发布于福建
  • 举报

软件工程师面试题集及参考答案指南.docx

第PAGE页共NUMPAGES页

2026年软件工程师面试题集及参考答案指南

一、编程基础与算法(5题,每题10分,共50分)

1.题目:

请实现一个函数,输入一个非负整数`n`,返回`n`的字符串形式中所有`0`变成`8`的结果。例如,输入`1024`,输出`1888`。

参考答案:

python

defreplace_zero_with_eight(n):

returnint(str(n).replace(0,8))

示例

print(replace_zero_with_eight(1024))#输出:1888

解析:

-将数字转换为字符串,使用`replace`方法替换`0`为`8`,再转换回整数。

-时间复杂度:O(n),其中n为数字的位数。

2.题目:

给定一个排序数组,返回数组中缺失的第一个正整数。例如,输入`[1,2,3,5]`,输出`4`。

参考答案:

python

deffirst_missing_positive(nums):

n=len(nums)

foriinrange(n):

ifnums[i]=0ornums[i]n:

continue

ifnums[i]==i+1:

continue

ifnums[nums[i]-1]!=nums[i]:

nums[nums[i]-1],nums[i]=nums[i],nums[nums[i]-1]

foriinrange(n):

ifnums[i]!=i+1:

returni+1

returnn+1

示例

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

解析:

-利用原地哈希法,将数字放到其对应的索引位置(如`1`在索引`0`),然后遍历数组查找第一个不匹配的位置。

-时间复杂度:O(n),空间复杂度:O(1)。

3.题目:

请实现快速排序算法,对任意列表进行排序。

参考答案:

python

defquick_sort(arr):

iflen(arr)=1:

returnarr

pivot=arr[len(arr)//2]

left=[xforxinarrifxpivot]

middle=[xforxinarrifx==pivot]

right=[xforxinarrifxpivot]

returnquick_sort(left)+middle+quick_sort(right)

示例

print(quick_sort([3,6,8,10,1,2,1]))#输出:[1,1,2,3,6,8,10]

解析:

-选择基准值(pivot),将数组分为小于、等于、大于三部分,递归排序左右子数组。

-平均时间复杂度:O(nlogn),最坏:O(n2)。

4.题目:

给定一个字符串`s`,判断它是否是有效的括号字符串(仅包含`(`和`)`),且括号匹配。

参考答案:

python

defisValid(s):

stack=[]

forcharins:

ifchar==(:

stack.append(char)

elifchar==):

ifnotstack:

returnFalse

stack.pop()

returnnotstack

示例

print(isValid(()))#输出:True

print(isValid((()))#输出:False

解析:

-使用栈结构,遇到`(`入栈,`)`出栈,若栈为空则匹配。

-时间复杂度:O(n),空间复杂度:O(n)。

5.题目:

实现一个LRU(最近最少使用)缓存,支持`get`和`put`操作。

参考答案:

python

classLRUCache:

def__init__(self,capacity:int):

self.cache={}

self.capacity=capacity

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(ke

文档评论(0)

1亿VIP精品文档

相关文档