2026年软件开发工程师面试题目及答案详解.docxVIP

  • 1
  • 0
  • 约4.76千字
  • 约 13页
  • 2026-02-06 发布于福建
  • 举报

2026年软件开发工程师面试题目及答案详解.docx

第PAGE页共NUMPAGES页

2026年软件开发工程师面试题目及答案详解

一、编程题(3题,每题10分,共30分)

背景说明:本题考察编程基础、算法实现及代码规范性。要求使用Java或Python语言完成,注意代码效率和可读性。

题目1(10分):

编写一个函数,输入一个正整数`n`,返回`n`的阶乘值。要求使用递归或迭代方式实现,不得使用内置库函数。

示例输入:`n=5`

示例输出:`120`

答案与解析:

java

publicclassFactorial{

publicstaticlongfactorial(intn){

if(n==0)return1;

longresult=1;

for(inti=1;i=n;i++){

result=i;

}

returnresult;

}

//递归实现

publicstaticlongfactorialRecursive(intn){

if(n==0)return1;

returnnfactorialRecursive(n-1);

}

publicstaticvoidmain(String[]args){

System.out.println(factorial(5));//输出120

System.out.println(factorialRecursive(5));//输出120

}

}

解析:

-迭代实现通过循环从`1`乘到`n`,时间复杂度为`O(n)`。

-递归实现简洁但可能导致栈溢出(如`n`过大时),时间复杂度同样为`O(n)`。

-阶乘计算需注意大数问题,若`n`超过20,结果可能超出`long`范围,需使用`BigInteger`。

题目2(10分):

给定一个字符串`s`,判断其是否为回文串(即正读反读相同)。例如,`madam`是回文串,`hello`不是。

示例输入:`s=racecar`

示例输出:`true`

答案与解析:

python

defis_palindrome(s:str)-bool:

left,right=0,len(s)-1

whileleftright:

ifs[left]!=s[right]:

returnFalse

left+=1

right-=1

returnTrue

递归实现

defis_palindrome_recursive(s:str)-bool:

iflen(s)=1:

returnTrue

ifs[0]!=s[-1]:

returnFalse

returnis_palindrome_recursive(s[1:-1])

print(is_palindrome(racecar))#输出True

print(is_palindrome_recursive(hello))#输出False

解析:

-双指针法从两端向中间遍历,时间复杂度为`O(n)`,空间复杂度为`O(1)`。

-递归法通过去掉首尾字符递归判断,时间复杂度为`O(n)`,空间复杂度为`O(n)`(栈空间)。

-注意:需忽略大小写和空格,可增加预处理步骤。

题目3(10分):

实现一个`TopK`类,支持动态添加元素,并能在`O(1)`时间内返回当前元素中最大的`k`个值。

示例输入:

python

topk=TopK(3)

topk.add(3)

topk.add(1)

topk.add(4)

topk.add(1)

topk.top()#返回[4,3,1]

答案与解析:

python

importheapq

classTopK:

def__init__(self,k:int):

self.k=k

self.heap=[]

defadd(self,val:int):

iflen(self.heap)self.k:

heapq.heappush(self.heap,val)

else:

ifvalself.heap[0]:

heapq.heapreplace(self.heap,val)

deftop(self):

returnsorted(self.heap,reverse=True)

示例用法

topk=TopK(3)

topk.add(3)

topk.add(1)

topk.add(4)

topk.add(1)

print(topk.top())#输出[4,3,1]

解析:

-使用最小堆维护`k`个最大值,堆大小为`k`,每次添加时若堆未满则直接入堆

文档评论(0)

1亿VIP精品文档

相关文档