研发部面试题库及答案解析.docxVIP

  • 0
  • 0
  • 约6.92千字
  • 约 21页
  • 2025-12-31 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年研发部面试题库及答案解析

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

1.题目:

请用Python实现一个函数,输入一个正整数n,返回其所有质因子的列表。例如,输入12,返回[2,2,3]。

答案:

python

defprime_factors(n):

factors=[]

divisor=2

whiledivisordivisor=n:

whilen%divisor==0:

factors.append(divisor)

n//=divisor

divisor+=1

ifn1:

factors.append(n)

returnfactors

解析:

通过试除法,从最小的质数2开始,不断除以n,直到除不尽时增加除数。当除数平方大于n时,剩余的n一定是质数,直接加入结果。这种方法的时间复杂度为O(√n)。

2.题目:

请用Java实现快速排序算法,并说明其时间复杂度。

答案:

java

publicclassQuickSort{

publicstaticvoidquickSort(int[]arr,intlow,inthigh){

if(lowhigh){

intpivotIndex=partition(arr,low,high);

quickSort(arr,low,pivotIndex-1);

quickSort(arr,pivotIndex+1,high);

}

}

privatestaticintpartition(int[]arr,intlow,inthigh){

intpivot=arr[high];

inti=low-1;

for(intj=low;jhigh;j++){

if(arr[j]pivot){

i++;

swap(arr,i,j);

}

}

swap(arr,i+1,high);

returni+1;

}

privatestaticvoidswap(int[]arr,inti,intj){

inttemp=arr[i];

arr[i]=arr[j];

arr[j]=temp;

}

}

解析:

快速排序通过分治法将数组分成两部分,选择一个基准值(pivot),将小于基准的放在左边,大于基准的放在右边,然后递归对左右部分排序。平均时间复杂度为O(nlogn),最坏情况为O(n2)(当基准值选择不均匀时)。

3.题目:

请解释什么是“大O表示法”,并举例说明如何计算一个算法的复杂度。

答案:

大O表示法用于描述算法的时间或空间复杂度,关注的是当输入规模n趋近于无穷时,算法执行时间的增长趋势。例如:

-列表遍历:`foriinrange(n):`时间复杂度为O(n)。

-二维数组遍历:`foriinrange(n):forjinrange(n):`时间复杂度为O(n2)。

解析:

忽略常数项和低阶项,只保留最高阶项。例如,`3n2+5n+2`的复杂度为O(n2)。

4.题目:

请用C++实现一个函数,输入一个字符串,返回其最长回文子串的长度。例如,输入“babad”,返回3(“bab”或“aba”)。

答案:

cpp

includestring

includealgorithm

usingnamespacestd;

intlongestPalindrome(strings){

if(s.empty())return0;

intn=s.length();

intstart=0,maxLen=1;

for(inti=0;in;++i){

intlen1=expandAroundCenter(s,i,i);//奇数长度

intlen2=expandAroundCenter(s,i,i+1);//偶数长度

intlen=max(len1,len2);

if(lenmaxLen){

maxLen=len;

start=i-(len-1)/2;

}

}

returnmaxLen;

}

intexpandAroundCenter(conststrings,intleft,intright){

while(left=0rights.length()s[left]==s[right]){

--left;

++right;

}

return

文档评论(0)

1亿VIP精品文档

相关文档