2026年技术精英面试宝典常见问题与答案.docxVIP

  • 0
  • 0
  • 约9.55千字
  • 约 30页
  • 2026-01-07 发布于福建
  • 举报

2026年技术精英面试宝典常见问题与答案.docx

第PAGE页共NUMPAGES页

2026年技术精英面试宝典:常见问题与答案

一、编程语言与基础算法(15题,共60分)

1.题1(10分):

题目:

请用Python实现一个函数,输入一个正整数`n`,输出所有小于等于`n`的素数,要求时间复杂度尽可能低。

答案:

python

defsieve_of_eratosthenes(n):

ifn2:

return[]

is_prime=[True](n+1)

is_prime[0]=is_prime[1]=False

foriinrange(2,int(n0.5)+1):

ifis_prime[i]:

forjinrange(ii,n+1,i):

is_prime[j]=False

return[ifori,primeinenumerate(is_prime)ifprime]

解析:

使用埃拉托斯特尼筛法(SieveofEratosthenes),时间复杂度为O(nloglogn),优于暴力枚举法(O(n√n))。通过标记非素数来筛选出所有素数,空间复杂度为O(n)。

2.题2(5分):

题目:

解释什么是“时间复杂度”和“空间复杂度”,并举例说明O(1)、O(n)、O(logn)的时间复杂度分别适用于哪些场景。

答案:

时间复杂度描述算法执行时间随输入规模增长的变化趋势,常用大O表示法。

-O(1):常数时间,如数组访问`arr[i]`,适用于每次操作固定时间完成的场景。

-O(n):线性时间,如遍历数组,适用于单次遍历即可完成任务的场景。

-O(logn):对数时间,如二分查找,适用于可通过分治法快速减少搜索范围的场景。

空间复杂度描述算法内存占用随输入规模增长的变化趋势。

例如:

-O(1):原地算法(如快速排序原地分区)。

-O(n):需要额外存储空间(如哈希表)。

-O(logn):递归调用栈空间(如二分查找)。

3.题3(10分):

题目:

请用C++实现一个函数,输入一个字符串,返回该字符串中最长回文子串的长度。

答案:

cpp

includestring

usingnamespacestd;

intlongest_palindrome(conststrings){

if(s.empty())return0;

intstart=0,end=0;

for(inti=0;is.size();++i){

intlen1=expand_from_center(s,i,i);//奇数长度回文

intlen2=expand_from_center(s,i,i+1);//偶数长度回文

intmax_len=max(len1,len2);

if(max_lenend-start){

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

end=i+max_len/2;

}

}

returnend-start+1;

}

intexpand_from_center(conststrings,intleft,intright){

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

--left;

++right;

}

returnright-left-1;

}

解析:

通过双指针扩展中心点,分别处理奇数和偶数长度回文。时间复杂度为O(n2),空间复杂度为O(1)。可优化为O(n)的Manacher算法,但此处采用更直观的解法。

4.题4(5分):

题目:

解释“递归”与“迭代”的区别,并说明递归的局限性有哪些?

答案:

递归通过函数调用自身解决问题,适用于具有自相似结构的场景(如树的遍历)。

迭代使用循环控制流程,通常更节省内存(无调用栈开销)。

递归的局限性:

1.栈溢出:深度过大时会导致调用栈满。

2.性能开销:函数调用比循环慢(参数传递、返回值)。

3.重复计算:若未优化(如记忆化),可能导致大量冗余计算。

5.题5(10分):

题目:

请用Java实现一个函数,输入一个链表,返回其反转后的链表。

答案:

java

classListNode{

intval;

ListNodenext;

ListNode(){}

ListNode(intval){this.val=val;}

ListNode(intval,ListNodenext){this.val=val;this.ne

文档评论(0)

1亿VIP精品文档

相关文档