腾讯后端技术面试题集.docxVIP

  • 0
  • 0
  • 约5.25千字
  • 约 15页
  • 2026-02-12 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年腾讯后端技术面试题集

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

1.题目:

实现一个函数,输入一个正整数`n`,返回`n`的阶乘。要求使用递归和迭代两种方式实现,并比较两种方法的优缺点。

答案与解析:

python

递归方式

deffactorial_recursive(n):

ifn==0:

return1

returnnfactorial_recursive(n-1)

迭代方式

deffactorial_iterative(n):

result=1

foriinrange(1,n+1):

result=i

returnresult

解析:

-递归方式代码简洁,但栈深度有限,大数可能导致栈溢出。

-迭代方式更高效,适用于大数计算,但代码稍复杂。

2.题目:

给定一个字符串`s`,判断它是否是回文串。例如,`abba`是回文串,`abc`不是。

答案与解析:

python

defis_palindrome(s):

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

whileleftright:

ifs[left]!=s[right]:

returnFalse

left+=1

right-=1

returnTrue

解析:

双指针法从两端向中间遍历,时间复杂度`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)

解析:

-时间复杂度:平均`O(nlogn)`,最坏`O(n^2)`(全有序)。

-稳定性:不稳定排序,相同元素可能交换位置。

4.题目:

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

答案与解析:

python

classLRUCache:

def__init__(self,capacity:int):

self.capacity=capacity

self.cache={}

self.order=[]

defget(self,key:str)-int:

ifkeyinself.cache:

self.order.remove(key)

self.order.append(key)

returnself.cache[key]

return-1

defput(self,key:str,value:int):

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`均`O(1)`。

5.题目:

实现二叉树的深度优先遍历(前序、中序、后序)。

答案与解析:

python

前序遍历(递归)

defpreorder_recursive(root):

ifnotroot:

return[]

return[root.val]+preorder_recursive(root.left)+preorder_recursive(root.right)

中序遍历(递归)

definorder_recursive(root):

ifnotroot:

return[]

returninorder_recursive(root.left)+[root.val]+inorder_recursive(root.right)

后序遍历(递归)

defpostorder_recursive(root):

ifnotroot:

return[]

returnpostorder_recursive(root.left)

文档评论(0)

1亿VIP精品文档

相关文档