腾讯技术面试题库及解析.docxVIP

  • 0
  • 0
  • 约7.47千字
  • 约 24页
  • 2026-01-26 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年腾讯技术面试题库及解析

一、编程基础(共5题,每题10分)

题目1:

请用C++实现一个函数,输入一个正整数`n`,返回`n`的阶乘。要求考虑大数问题,不能直接使用内置的大数库。

答案:

cpp

includeiostream

includestring

includevector

std::stringmultiply(std::stringnum1,charnum2){

intcarry=0;

std::stringresult;

for(inti=num1.size()-1;i=0;--i){

inttemp=(num1[i]-0)(num2-0)+carry;

carry=temp/10;

result.push_back(temp%10+0);

}

if(carry)result.push_back(carry+0);

std::reverse(result.begin(),result.end());

returnresult;

}

std::stringfactorial(intn){

if(n==0)return1;

std::stringresult=1;

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

result=multiply(result,std::to_string(i));

}

returnresult;

}

intmain(){

intn;

std::coutEntern:;

std::cinn;

std::coutFactorialofnisfactorial(n)std::endl;

return0;

}

解析:

-大数阶乘无法直接用`longlong`存储,需用字符串表示每一位。

-逐位相乘并处理进位,确保结果正确。

-时间复杂度O(nm),m为数字的位数,适合`n`在1000以内。

题目2:

请用Python实现快速排序算法,并分析其时间复杂度。

答案:

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)

示例

arr=[3,6,8,10,1,2,1]

print(quick_sort(arr))

解析:

-快速排序基于分治思想,时间复杂度平均O(nlogn),最坏O(n2)。

-实现中用列表生成式分割数组,效率较低,可优化为原地分割。

题目3:

请用Java实现一个二叉树的前序遍历(根-左-右),要求使用递归和非递归两种方法。

答案:

java

classTreeNode{

intval;

TreeNodeleft;

TreeNoderight;

TreeNode(intx){val=x;}

}

//递归方法

publicListIntegerpreorderTraversal(TreeNoderoot){

ListIntegerres=newArrayList();

helper(root,res);

returnres;

}

voidhelper(TreeNodenode,ListIntegerres){

if(node==null)return;

res.add(node.val);

helper(node.left,res);

helper(node.right,res);

}

//非递归方法

publicListIntegerpreorderTraversalIterative(TreeNoderoot){

ListIntegerres=newArrayList();

if(root==null)returnres;

StackTreeNodestack=newStack();

stack.push(root);

while(!stack.isEmpty()){

TreeNodenode=stack.pop();

res.add(node.val);

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档