2026年腾讯软件开发工程师笔试题集_第1页
2026年腾讯软件开发工程师笔试题集_第2页
2026年腾讯软件开发工程师笔试题集_第3页
2026年腾讯软件开发工程师笔试题集_第4页
2026年腾讯软件开发工程师笔试题集_第5页
已阅读5页,还剩10页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026年腾讯软件开发工程师笔试题集一、编程基础(共5题,每题8分,总分40分)1.选择题:数据结构与算法基础题目:已知一个无重复元素的数组`arr`,现需找出其中和最大的三个数的乘积。以下哪种方法最符合时间复杂度要求?A.先排序,再计算前三个数的乘积和后三个数的乘积,取最大值B.使用快速选择算法找到第三大的数,计算乘积C.使用堆结构,维护前三个最大数,遍历一次数组D.使用暴力枚举,计算所有三元组的乘积答案:C解析:选项A的时间复杂度为O(nlogn),选项B为O(n);选项C使用最小堆或优先队列维护三个最大数,时间复杂度为O(n);选项D为O(n^3)。堆结构方法最为高效。2.选择题:字符串处理题目:给定两个字符串`s1`和`s2`,判断`s1`是否可以通过若干次插入操作得到`s2`(插入操作可以是任意字符)。以下哪个方法是正确的?A.比较两个字符串的字符频率是否一致B.使用动态规划,定义dp[i][j]表示`s1`前i个字符和`s2`前j个字符的匹配状态C.检查`s2`是否是`s1`的子序列D.使用KMP算法判断`s1`是否为`s2`的子串答案:B解析:动态规划方法可以准确判断插入关系。例如,dp[i][j]=1表示`s1`前i个字符可以转化为`s2`前j个字符。若dp[m][n]为1,则`s1`可通过插入得到`s2`。其他选项均无法准确处理插入操作。3.选择题:二叉树遍历题目:给定一个二叉树,要求返回其“锯齿形”层序遍历(即第一层从左到右,第二层从右到左,以此类推)。以下哪个方法正确?A.先普通层序遍历,再反转偶数层B.使用两个栈交替遍历左右子树C.使用一个栈,每次遍历时记录当前层方向D.使用递归,判断当前深度决定遍历方向答案:A解析:普通层序遍历后反转偶数层即可。其他方法要么无法正确处理方向变化,要么效率较低。例如,选项B需要额外栈管理方向,较为复杂。4.选择题:位运算题目:如何判断一个整数是否为2的幂(即`n&(n-1)`为0且`n>0`)?以下哪个条件不成立?A.`n&(n-1)==0`B.`n&(~n)==n`C.`n`的二进制表示中只有1个1D.`n`能被所有小于它的2的幂整除答案:D解析:前三个条件均为判断2的幂的正确方法,而选项D不成立,因为例如`n=4`不能被`2`整除。5.选择题:贪心算法题目:给定一系列区间,要求选择最多的不相交区间。以下哪个方法正确?A.按右端点升序排序,每次选择右端点最小的区间B.按左端点升序排序,每次选择左端点最大的区间C.按区间长度升序排序,每次选择第一个区间D.使用动态规划计算最大重叠数答案:A解析:按右端点升序贪心选择,可以确保每次选择的区间不影响后续选择。其他方法无法保证最优解。二、编程实现(共3题,每题15分,总分45分)1.编程题:滑动窗口最大值题目:给定一个数组`nums`和一个窗口大小`k`,返回每个窗口的滑动最大值。例如:输入:`nums=[1,3,-1,-3,5,3,6,7]`,`k=3`输出:`[3,3,5,5,6,7]`要求:-不能使用排序,时间复杂度要求O(n)-可使用辅助数据结构参考代码(Python):pythonfromcollectionsimportdequedefmaxSlidingWindow(nums,k):q=deque()result=[]foriinrange(len(nums)):移除窗口外的元素ifqandq[0]<i-k+1:q.popleft()移除窗口内小于当前元素的元素whileqandnums[q[-1]]<nums[i]:q.pop()q.append(i)窗口形成后记录最大值ifi>=k-1:result.append(nums[q[0]])returnresult2.编程题:LRU缓存机制题目:设计LRU(LeastRecentlyUsed)缓存机制,支持`get`和`put`操作。LRU缓存最多容纳`capacity`个元素,超出时删除最久未使用的元素。要求:-`get(key)`返回键对应的值,若不存在返回-1-`put(key,value)`插入或更新键值对,若超出容量则删除最久未使用元素-可使用哈希表+双向链表实现参考代码(Python):pythonclassListNode:def__init__(self,key=0,value=0):self.key=keyself.value=valueself.prev=Noneself.next=NoneclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.head=ListNode()self.tail=ListNode()self.head.next=self.tailself.tail.prev=self.headdefget(self,key:int)->int:ifkeynotinself.cache:return-1node=self.cache[key]self._move_to_head(node)returnnode.valuedefput(self,key:int,value:int)->None:ifkeyinself.cache:node=self.cache[key]node.value=valueself._move_to_head(node)else:node=ListNode(key,value)self.cache[key]=nodeself._add_node(node)iflen(self.cache)>self.capacity:tail=self._pop_tail()delself.cache[tail.key]def_move_to_head(self,node):self._remove_node(node)self._add_node(node)def_add_node(self,node):node.prev=self.headnode.next=self.head.nextself.head.next.prev=nodeself.head.next=nodedef_remove_node(self,node):prev_node=node.prevnext_node=node.nextprev_node.next=next_nodenext_node.prev=prev_nodedef_pop_tail(self):tail=self.tail.prevself._remove_node(tail)returntail3.编程题:二叉树遍历的应用题目:给定一个二叉树,返回其“锯齿形”层序遍历(第一层从左到右,第二层从右到左,以此类推)。要求:-使用递归或迭代方法实现-可使用栈或队列辅助参考代码(Python):pythonfromcollectionsimportdequeclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdefzigzagLevelOrder(root):ifnotroot:return[]result=[]queue=deque([root])left_to_right=Truewhilequeue:level_size=len(queue)level=[]for_inrange(level_size):node=queue.popleft()ifleft_to_right:level.append(node.val)else:level.insert(0,node.val)ifnode.left:queue.append(node.left)ifnode.right:queue.append(node.right)result.append(level)left_to_right=notleft_to_rightreturnresult三、系统设计(共2题,每题20分,总分40分)1.系统设计题:短链接生成服务题目:设计一个短链接生成服务,要求:-输入长链接,输出固定长度的短链接(如6位随机字母数字组合)-支持短链接到长链接的反向解析-高并发场景下性能要求高要求:-描述核心数据结构和算法-说明如何解决高并发问题-可考虑分布式部署方案参考答案:核心数据结构:-使用哈希表(如Redis)存储短链接到长链接的映射-短链接使用自增ID或Base62编码(如`a-zA-Z0-9`)映射为短字符串算法:1.输入长链接时,生成唯一ID(如UUID),编码为短字符串(如`123abc`)2.将`{短链接:长链接}`存入Redis(设置过期时间)3.反向解析时,直接查Redis返回长链接高并发方案:-使用Redis集群分片存储数据-对短链接请求使用限流策略(如令牌桶算法)-可用消息队列(如Kafka)异步处理请求分布式部署:-短链接生成服务可用多个实例,负载均衡-Redis集群保证数据一致性2.系统设计题:实时推荐系统题目:设计一个实时推荐系统,用户打开App时需在100ms内返回个性化推荐列表(如商品、新闻)。要求:-支持用户行为实时更新(如点击、收藏)-推荐算法需兼顾准确性和实时性-高并发场景下需保证低延迟要求:-描述推荐算法逻辑-说明如何实现实时性-可考虑数据存储和计算架构参考答案:推荐算法:-使用协同过滤+内容特征的混合推荐-协同过滤:基于用户历史行为计算相似用户,取相似用户喜欢的商品-内容特征:结合商品属性和用户画像进行匹配-实时性优

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论