版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年腾讯公司技术部面试题集编程能力测试(共5题,每题20分)1.题目:实现一个函数,输入一个非负整数`n`,返回`n`的二进制表示中`1`的个数。例如:`countBits(5)`返回`2`,因为`5`的二进制表示为`101`,有`2`个`1`。要求:时间复杂度不超过O(logn)。2.题目:编写一个函数`merge`,将两个有序链表合并为一个新的有序链表,并返回合并后的链表的头节点。链表节点定义如下:pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=next示例:输入:`l1=[1,2,4]`,`l2=[1,3,4]`输出:`[1,1,2,3,4,4]`3.题目:给定一个字符串`s`,找到其中最长的回文子串。例如:`longestPalindrome("babad")`可以返回`"bab"`或`"aba"`。要求:时间复杂度不超过O(n²)。4.题目:实现一个LRU(最近最少使用)缓存,支持`get`和`put`操作。缓存容量为`capacity`。示例:pythonlru=LRUCache(2)lru.put(1,1)lru.put(2,2)lru.get(1)//返回1lru.put(3,3)//去除键2lru.get(2)//返回-1(未找到)5.题目:编写一个函数,判断一个字符串是否是另一个字符串的子序列。例如:`isSubsequence("abc","ahbgdc")`返回`True`,因为`"abc"`是`"ahbgdc"`的子序列。要求:时间复杂度不超过O(n)。算法设计测试(共4题,每题25分)1.题目:设计一个算法,找到无序数组中第三大的数。如果数组中少于三个元素,返回最大的数。例如:`thirdMax([1,2,-2147483648])`返回`1`。要求:时间复杂度不超过O(n)。2.题目:给定一个`mxn`的矩阵,每一行和每一列都按升序排列。实现一个函数,返回矩阵中第`k`小的元素。例如:pythonmatrix=[[1,5,9],[10,11,13],[12,13,15]]k=8//返回13要求:时间复杂度不超过O(mn)。3.题目:设计一个算法,将一个无重复元素的数组分成两个子数组,使得两个子数组的和的差的绝对值最小。例如:`splitArray([1,2,3,4,5])`可以分成`[1,2,3]`和`[4,5]`,和的差为`3`。要求:时间复杂度不超过O(n²)。4.题目:给定一个包含`n`个整数的数组`nums`,判断该数组是否可以划分为至少`k`个连续的整数序列。例如:`nums=[1,2,3,3,4,5]`,`k=3`,可以划分为`[1,2,3]`,`[3,4,5]`,返回`True`。要求:时间复杂度不超过O(nlogn)。系统设计测试(共3题,每题30分)1.题目:设计一个高并发的短链接生成系统。要求:-链接长度不超过6位;-支持高并发访问;-链接唯一且可快速解析回原始URL。要求:说明设计思路、数据结构、存储方案及高并发处理方式。2.题目:设计一个实时推荐系统,输入用户的行为日志(如点击、购买等),实时推荐用户可能感兴趣的商品。要求:-支持实时更新;-推荐结果需考虑用户历史行为和实时行为;-高可用、可扩展。要求:说明系统架构、数据存储方案、推荐算法及高可用设计。3.题目:设计一个分布式消息队列(如Kafka),要求:-支持高吞吐量;-保证消息的顺序性;-可靠性(不丢失消息);-支持分区和扩展。要求:说明系统架构、数据一致性保证机制、分区策略及可扩展性设计。答案与解析编程能力测试1.答案:pythondefcountBits(n):count=0whilen:count+=n&1n>>=1returncount解析:使用位运算,每次将`n`右移一位,统计最低位的`1`的个数。时间复杂度为O(logn)。2.答案:pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextdefmerge(l1,l2):dummy=ListNode(0)current=dummywhilel1andl2:ifl1.val<l2.val:current.next=l1l1=l1.nextelse:current.next=l2l2=l2.nextcurrent=current.nextcurrent.next=l1orl2returndummy.next解析:使用虚拟头节点,比较两个链表的当前节点,逐个合并到新链表中。时间复杂度为O(m+n)。3.答案:pythondeflongestPalindrome(s):ifnots:return""start,end=0,0foriinrange(len(s)):len1=expandAroundCenter(s,i,i)len2=expandAroundCenter(s,i,i+1)max_len=max(len1,len2)ifmax_len>end-start:start=i-(max_len-1)//2end=i+max_len//2returns[start:end+1]defexpandAroundCenter(s,left,right):whileleft>=0andright<len(s)ands[left]==s[right]:left-=1right+=1returnright-left-1解析:双指针法,遍历每个字符,以该字符为中心向两边扩展,记录最长回文子串。时间复杂度为O(n²)。4.答案:pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache=OrderedDict()defget(self,key:int)->int:ifkeynotinself.cache:return-1self.cache.move_to_end(key)returnself.cache[key]defput(self,key:int,value:int)->None:self.cache[key]=valueself.cache.move_to_end(key)iflen(self.cache)>self.capacity:self.cache.popitem(last=False)解析:使用`OrderedDict`维护缓存顺序,`get`时移动到末尾,`put`时插入并移动到末尾,超出容量时删除最旧的元素。时间复杂度为O(1)。5.答案:pythondefisSubsequence(s:str,t:str)->bool:m,n=len(s),len(t)i,j=0,0whilei<mandj<n:ifs[i]==t[j]:i+=1j+=1returni==m解析:双指针法,逐个匹配`s`和`t`的字符,如果`s[i]==t[j]`则移动`i`,`j`始终移动。时间复杂度为O(n)。算法设计测试1.答案:pythondefthirdMax(nums):first,second,third=float('-inf'),float('-inf'),float('-inf')fornuminnums:ifnum>first:first,second,third=num,first,secondeliffirst>num>second:second,third=num,secondelifsecond>num>third:third=numreturnthirdifthird!=float('-inf')elsefirst解析:遍历数组,维护三个变量记录最大、次大、第三大的数。时间复杂度为O(n)。2.答案:pythonimportheapqdefkthSmallest(matrix,k):min_heap=[(matrix[0][0],0,0)]visited=set([(0,0)])for_inrange(k):val,i,j=heapq.heappop(min_heap)ifi+1<len(matrix):if(i+1,j)notinvisited:heapq.heappush(min_heap,(matrix[i+1][j],i+1,j))visited.add((i+1,j))ifj+1<len(matrix):if(i,j+1)notinvisited:heapq.heappush(min_heap,(matrix[i][j+1],i,j+1))visited.add((i,j+1))returnval解析:使用小顶堆,初始堆顶为左上角元素,每次弹出堆顶并加入相邻元素。时间复杂度为O(klogk)。3.答案:pythondefsplitArray(nums):n=len(nums)dp=[[float('inf')](n+1)for_inrange(n+1)]dp[0][0]=0foriinrange(1,n+1):forjinrange(i):total=sum(nums[j:i])ifdp[j][i-j-1]!=float('inf'):dp[i][j]=min(dp[i][j],abs(total-sum(nums[i:])))returnmin(dp[n])解析:动态规划,`dp[i][j]`表示从`j`到`i`的子数组和的差的绝对值最小值。时间复杂度为O(n²)。4.答案:pythondefcanPartition(nums,k):iflen(nums)<k:returnFalsenums.sort()target=sum(nums)//kifsum(nums)%k!=0:returnFalsebuckets=[0]kreturnbacktrack(nums,0,buckets,target)defbacktrack(nums,index,buckets,target):ifindex==len(nums):returnall(bucket==targetforbucketinbuckets)foriinrange(k):ifbuckets[i]+nums[index]>target:continueifi>0andbuckets[i]==buckets[i-1]:continuebuckets[i]+=nums[index]ifbacktrack(nums,index+1,buckets,target):returnTruebuckets[i]-=nums[index]returnFalse解析:排序后贪心分配,使用回溯法尝试将每个数字分配到合适的桶中。时间复杂度为O(nk)。系统设计测试1.答案:设计思路:-使用Base62编码(a-z,A-Z,0-9)将数字映射为短链接;-使用哈希表(如Redis)缓存原始URL和短链接的映射;-高并发处理:使用分布式缓存+负载均衡(如Nginx)。数据结构:-哈希表:`{"short":"original_url"}`;-Base62编码:`defencode(num):`。高并发处理:-负载均衡:多个服务实例通过Nginx分发请求;-分布式缓存:Redis分布式锁防止冲突;-异步写入:使用消息队列(如Kafka)缓冲写入操作。2.答案:系统架构:-用户行为日志收集:Flume/Kafka;-实时计算:Flink/SparkStreaming;-推荐引擎:协同过滤+实时特征加权。数据存储:-用户行为:Red
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中数学课堂教学中数字化评价方法对学业成长的实践分析教学研究课题报告
- 2025年吊顶施工保密协议
- 云计算与边缘计算在人工智能教育平台架构优化中的应用与挑战教学研究课题报告
- 2026年安徽泾县公开引进事业单位急需紧缺专业人才备考题库及一套答案详解
- 《高中生物实验探究教师教学画像与教学风格演变趋势探讨》教学研究课题报告
- 2026年怒江州检验检测院引进急需紧缺专业人才备考题库及完整答案详解1套
- 晋江市磁灶镇尚志中心幼儿园2026年春季教师招聘备考题库附答案详解
- 2026年重庆水轮机厂有限责任公司招聘19人备考题库及完整答案详解1套
- 2026年石家庄幼儿师范高等专科学校单招职业技能笔试备考试题及答案解析
- 中国煤炭地质总局2026年度应届生招聘468人备考题库及参考答案详解
- DB35T 2169-2024仲裁庭数字化建设规范
- T-HAAI 003-2024 数据资产 数据质量评价规范
- DB31∕T 310001-2020 船舶水污染物内河接收设施配置规范
- GB/T 44968-2024粮食储藏小麦粉安全储藏技术规范
- UL347a标准中文版-2019中压电力转换设备UL标准中文版
- 【MOOC】线性代数-同济大学 中国大学慕课MOOC答案
- 乡村道路片石挡土墙施工合同
- 城市轨道交通列车自动控制系统维护 课件 3.1 ZC系统认知
- 2024年天津市南开区翔宇学校四上数学期末检测模拟试题含解析
- 《妇科护理》课件-第二章 妇科常用的特殊检查及护理配合
- 大学《中国古代文学史》期末复习题库
评论
0/150
提交评论