腾讯高级测试工程师面试常见问题.docxVIP

  • 0
  • 0
  • 约4.9千字
  • 约 14页
  • 2026-02-09 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年腾讯高级测试工程师面试常见问题

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

1.题目:

请实现一个函数,输入一个非负整数`n`,返回`n`的二进制表示中`1`的个数。例如,输入`11`,返回`3`(因为`11`的二进制表示为`1011`,有`3`个`1`)。

答案:

cpp

intcountOnes(intn){

intcount=0;

while(n!=0){

count+=n1;

n=1;

}

returncount;

}

解析:

-使用位运算优化性能。每次右移一位,统计最低位的`1`的数量。

-时间复杂度:`O(logn)`,空间复杂度:`O(1)`。

2.题目:

给定一个字符串`s`,判断其是否是一个有效的括号组合(只包含`()`、`[]`、`{}`)。例如,输入`(())[]`,返回`true`;输入`({)]`,返回`false`。

答案:

cpp

boolisValidParentheses(strings){

stackcharst;

unordered_mapchar,charmapping={{),(},{],[},{},{}};

for(charc:s){

if(mapping.count(c)){

if(st.empty()||st.top()!=mapping[c])returnfalse;

st.pop();

}else{

st.push(c);

}

}

returnst.empty();

}

解析:

-使用栈结构匹配括号。遍历字符串,左括号入栈,右括号匹配栈顶。

-时间复杂度:`O(n)`,空间复杂度:`O(n)`。

3.题目:

实现快速排序算法,输入一个整数数组,返回排序后的数组。例如,输入`[3,1,2,4]`,返回`[1,2,3,4]`。

答案:

cpp

voidquickSort(vectorintnums,intleft,intright){

if(left=right)return;

intpivot=nums[left+(right-left)/2];

intl=left,r=right;

while(l=r){

while(l=rnums[l]pivot)l++;

while(l=rnums[r]pivot)r--;

if(l=r)swap(nums[l++],nums[r--]);

}

quickSort(nums,left,r);

quickSort(nums,l,right);

}

解析:

-快速排序是分治算法,选择基准值(pivot)分割数组。

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

4.题目:

给定一个无重复元素的数组`nums`和一个目标值`target`,返回所有相加等于`target`的`nums`的组合。例如,输入`nums=[2,3,6,7]`,`target=7`,返回`[[2,5],[7]]`(假设允许重复使用数字)。

答案:

cpp

vectorvectorintcombinationSum(vectorintnums,inttarget){

vectorvectorintres;

vectorintpath;

sort(nums.begin(),nums.end());

functionvoid(int,int)backtrack=[](intstart,inttarget){

if(target==0){

res.emplace_back(path);

return;

}

for(inti=start;inums.size()nums[i]=target;++i){

path.push_back(nums[i]);

backtrack(i,target-nums[i]);

path.pop_back();

}

};

backtrack(0,target);

returnres;

}

解析:

-回溯算法实现组合总和。排序后去重,避免重复组合。

-时间复杂度:`O(2^n)`,空间复杂度:`O(n)`。

5.题目:

实现一个LRU(最近最少使用)缓存,支持`get`和`put`操作。例如,容量为`2`,`put(1,1)`,`put(2,2)`,`g

文档评论(0)

1亿VIP精品文档

相关文档