腾讯IT岗位面试技巧与答案.docxVIP

  • 0
  • 0
  • 约5.29千字
  • 约 17页
  • 2026-02-11 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年腾讯IT岗位面试技巧与答案

一、编程能力测试(共5题,每题10分,总分50分)

1.题目:

请实现一个函数,输入一个正整数n,返回其对应的二进制表示中1的个数。例如,输入5(二进制为101),返回2。

答案:

python

defcount_bits(n):

count=0

whilen:

count+=n1

n=1

returncount

测试

print(count_bits(5))#输出:2

解析:

使用位运算优化效率,每次右移一位并判断最低位是否为1,时间复杂度为O(logn)。

2.题目:

给定一个无重复元素的数组nums和一个目标值target,请找出所有相加等于target的不重复三元组。例如,输入[-1,0,1,2],target为0,返回[[-1,0,1]]。

答案:

python

defthree_sum(nums,target):

nums.sort()

result=[]

n=len(nums)

foriinrange(n):

ifi0andnums[i]==nums[i-1]:

continue

left,right=i+1,n-1

whileleftright:

s=nums[i]+nums[left]+nums[right]

ifs==target:

result.append([nums[i],nums[left],nums[right]])

whileleftrightandnums[left]==nums[left+1]:

left+=1

whileleftrightandnums[right]==nums[right-1]:

right-=1

left+=1

right-=1

elifstarget:

left+=1

else:

right-=1

returnresult

测试

print(three_sum([-1,0,1,2],0))#输出:[[-1,0,1]]

解析:

先排序,使用双指针法遍历数组,避免重复解。时间复杂度O(n2)。

3.题目:

请实现一个LRU(最近最少使用)缓存,支持get和put操作。缓存容量为capacity。

答案:

python

classLRUCache:

def__init__(self,capacity:int):

self.capacity=capacity

self.cache={}

self.order=[]

defget(self,key:int)-int:

ifkeyinself.cache:

self.order.remove(key)

self.order.append(key)

returnself.cache[key]

return-1

defput(self,key:int,value:int)-None:

ifkeyinself.cache:

self.order.remove(key)

eliflen(self.cache)==self.capacity:

oldest=self.order.pop(0)

delself.cache[oldest]

self.cache[key]=value

self.order.append(key)

测试

lru=LRUCache(2)

lru.put(1,1)

lru.put(2,2)

print(lru.get(1))#输出:1

lru.put(3,3)#去除键2

print(lru.get(2))#输出:-1

解析:

使用哈希表记录键值,双向链表维护使用顺序。get时移动到尾部,put时先删除最久未使用项(若满)。

4.题目:

给定一个二叉树,请判断其是否对称(即镜像对称)。

答案:

python

classTreeNode:

def__init__(self,val=0,left=None,right=None):

self.val=val

self.left=left

self.right=right

defis_symmetric(root:TreeNode)-bool:

defcheck(left,right):

ifnotleftandnotright:

returnTrue

ifnotleftornotright:

returnFalse

return(l

文档评论(0)

1亿VIP精品文档

相关文档