版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年腾讯校招笔试题库及答案一、编程基础(5题,每题6分,共30分)1.题目:编写一段Python代码,实现一个函数`count_vowels(s)`,输入一个字符串`s`,返回其中元音字母(a,e,i,o,u,不区分大小写)的数量。例如,`count_vowels("HelloWorld")`应返回`3`("o","o","e")。答案:pythondefcount_vowels(s):vowels="aeiouAEIOU"returnsum(1forcharinsifcharinvowels)解析:使用生成器表达式遍历字符串中的每个字符,判断是否在元音集合中,累加满足条件的字符数量。2.题目:给定一个链表,实现一个函数`reverse_list(head)`,原地反转链表,并返回反转后的头节点。链表节点定义如下:pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=next答案:pythondefreverse_list(head):prev,curr=None,headwhilecurr:next_node=curr.nextcurr.next=prevprev=currcurr=next_nodereturnprev解析:使用三指针法(prev,curr,next_node)依次反转每个节点的next指针。3.题目:实现一个无重复字符的最长子串查找函数`longest_unique_substring(s)`,返回字符串`s`中最长的无重复字符子串的长度。例如,`longest_unique_substring("abcabcbb")`应返回`3`("abc")。答案:pythondeflongest_unique_substring(s):char_set=set()left=0max_len=0forrightinrange(len(s)):whiles[right]inchar_set:char_set.remove(s[left])left+=1char_set.add(s[right])max_len=max(max_len,right-left+1)returnmax_len解析:使用滑动窗口技术,左右指针分别表示子串的起始和结束,通过哈希集合记录字符是否出现过,动态调整窗口。4.题目:编写一个函数`merge_two_lists(l1,l2)`,合并两个有序链表,返回合并后的有序链表头节点。答案:pythondefmerge_two_lists(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解析:使用虚拟头节点简化边界处理,逐个比较两个链表的节点值,按顺序连接到合并后的链表中。5.题目:给定一个整数数组`nums`,实现一个函数`top_k_frequent(nums,k)`,返回出现频率最高的`k`个元素。例如,`top_k_frequent([1,1,1,2,2,3],2)`应返回`[1,2]`。答案:pythonfromcollectionsimportCounterdeftop_k_frequent(nums,k):count=Counter(nums)return[numfornum,freqincount.most_common(k)]解析:使用`Counter`统计频率,`most_common(k)`按频率降序返回前k个元素。二、算法设计(4题,每题7分,共28分)1.题目:设计一个LRU(LeastRecentlyUsed)缓存,支持`get(key)`和`put(key,value)`操作。当缓存容量满时,删除最久未使用的元素。缓存容量为3,输入序列为`["put",1,1,"put",2,2,"get",1,"put",3,3,"get",2,"put",4,4,"get",1,"get",3,"get",4]`,请输出每次`get`操作的结果。答案:输出:`1,-1,3,-1`解析:-put(1,1):{1:1}-put(2,2):{1:1,2:2}-get(1):返回1,更新访问顺序{1:1,2:2}-put(3,3):缓存满,删除最久未使用元素2,更新为{1:1,2:3}-get(2):返回-1(未命中)-put(4,4):缓存满,删除最久未使用元素1,更新为{2:3,3:3,4:4}-get(1):返回-1-get(3):返回3-get(4):返回42.题目:给定一个非负整数数组`nums`,设计一个算法将数组中的元素按“奇偶”排序,即所有奇数位于偶数之前。例如,`sort_parity([3,1,2,4])`应返回`[3,1,4,2]`。答案:双指针法:pythondefsort_parity(nums):left,right=0,len(nums)-1whileleft<right:whileleft<rightandnums[left]%2==1:left+=1whileleft<rightandnums[right]%2==0:right-=1nums[left],nums[right]=nums[right],nums[left]returnnums解析:使用左右指针分别从两端向中间移动,左指针跳过奇数,右指针跳过偶数,交换不满足条件的相邻元素。3.题目:实现一个函数`word_break(s,word_dict)`,判断字符串`s`是否可以由`word_dict`中的单词分割成若干子串。例如,`word_break("leetcode",["leet","code"])`应返回`True`。答案:动态规划:pythondefword_break(s,word_dict):dp=[False](len(s)+1)dp[0]=Trueforiinrange(1,len(s)+1):forwordinword_dict:ifdp[i-len(word)]ands[i-len(word):i]==word:dp[i]=Truebreakreturndp[-1]解析:使用`dp[i]`表示`s[:i]`是否可以分割,遍历每个位置,检查以该位置结尾的子串是否在`word_dict`中,并更新`dp`数组。4.题目:设计一个算法判断二叉树是否是“完全二叉树”。完全二叉树定义:除最后一层外,每一层节点都满,且最后一层节点从左到右连续排列。答案:层次遍历:pythonfromcollectionsimportdequedefis_complete_binary_tree(root):queue=deque([root])end=Falsewhilequeue:node=queue.popleft()ifnode:ifend:returnFalsequeue.append(node.left)queue.append(node.right)else:end=TruereturnTrue解析:按层次遍历,若遇到空节点后仍有非空节点,则不满足完全二叉树性质。三、系统设计(3题,每题10分,共30分)1.题目:设计一个高并发的短链接系统。输入一个长链接`long_url`,返回一个短链接`short_url`,支持通过`short_url`快速跳转回`long_url`。要求:-短链接长度不超过6位(base62编码:0-9,a-z,A-Z)。-高并发处理,支持秒级生成和跳转。-数据一致性保证。答案:1.编码:将`long_url`的MD5哈希值取前6位base62编码。2.分布式缓存:使用Redis缓存`short_url`→`long_url`映射,高可用部署。3.雪崩处理:分布式锁或请求分片避免热点。4.数据一致性:使用消息队列(如Kafka)异步更新缓存。解析:-编码:MD5+base62确保唯一性且长度短。-缓存:Redis高并发读写能力满足需求。-分布式锁:防止短链接生成冲突。2.题目:设计一个实时推荐系统,输入用户`user_id`和商品`item_id`,返回该用户可能感兴趣的商品列表(Top5)。推荐策略为协同过滤(User-BasedCF)。要求:-支持增量更新(新用户/商品实时加入)。-低延迟(推荐结果在100ms内)。答案:1.数据结构:-用户-商品评分矩阵(稠密用哈希表,稀疏用倒排索引)。2.推荐逻辑:-找到与目标用户兴趣相似的前N个用户(余弦相似度)。-累加这些用户对未交互商品的评分,Top5排序。3.优化:-缓存相似用户集合。-异步更新评分矩阵(Elasticsearch)。解析:User-BasedCF计算效率高,适合实时场景。倒排索引优化稀疏矩阵计算。3.题目:设计一个消息推送服务,支持按用户标签(如`{"gender":"male","age":18-24"}`)精准推送。要求:-支持离线消息(延迟1-5分钟)。-实时推送(如订单通知)。-高可用扩展。答案:1.架构:-实时:WebSocket/Server-SentEvents(SSE)。-离线:消息队列(Kafka/Flink)+Redis缓存。2.标签系统:-用户标签用倒排索引(标签→用户ID列表)存储在Elasticsearch。3.推送策略:-实时通过WebSocket直推;离线消息批处理投递。解析:Elasticsearch高效支持标签查询,Redis缓存热点用户。四、综合分析(2题,每题6分,共12分)1.题目:腾讯直播用户行为数据如下:-平均每分钟新增用户1万,留存率第一小时50%,24小时70%。-每用户平均观看时长2小时/天。-设计一个数据采集方案,统计每分钟活跃用户数(MAU)。答案:1.埋点:前端记录用户登录/观看事件,送入Kafka。2.处理:-Flink/SparkStreaming按分钟窗口聚合用户ID去重。-Redis缓存热点用户,避免重复统计。3.监控:Grafana展示实时MAU曲线。解析:结合留存率估算活跃用户基数,流处理实时统计增量。2.题目:腾讯游戏服务器负载波动大,高峰期QPS可达10万。设计一个弹性扩容方案。答案:1.无状态化:用户会话存Redis,请求无状态。2.弹性组:Kubernetes集群+HPA自动扩缩。3.限流:Nginx/Envoy链路层限流,熔断降级。解析:Kubernetes弹性能力配合限流策略,保证高可用。五、地域与行业(3题,每题6分,共18分)1.题目:腾讯在华东(深圳)和华北(北京)有数据中心,用户主要集中一二线城市。设计一个CDN方案优化视频加载速度。答案:1.多节点部署:华东/华北边缘节点缓存热点视频。2.智能调度:根据用户地理位置+网络质量动态选择节点。3.预加载:使用EdgePreload技术提前加载用户可能观看的视频。解析:结合地理位置优化网络路径,减少延迟。2.题目:腾讯游戏在海外市场占比20%,设计一个多语言本地化方案
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临床执业医师考试实践技能题库(含答案)
- 2026年中级消防设施操作员(监控方向)考试题及答案解析
- 护理讲师教学成果推广途径
- 2025年虚拟偶像IP运营与商业变现
- 第一节 电子表格基础教学设计初中信息技术河大音像版2020七年级下册-河大音像版2020
- 2026年虚拟偶像形象授权使用合同二篇
- 消防栓系统维修保养方案
- 马鞍山市博望区政府相关部门招聘考试真题2025
- 2025年贵阳贵安卫生健康系统招聘事业单位人员考试试卷真题
- 本册综合教学设计初中地方、校本课程吉林版家乡
- (2026年)如何做好艾滋病患者的全程管理课件
- (2026年)ssc脓毒症和感染性休克管理国际指南课件
- 工程移交清单(完整版)
- 2026年海事系统水上无线电秩序整治与伪基站查处题库
- 2026年人教版新教材生物会考全4册必背核心知识点提纲
- 初中语文标点符号使用练习题及答案详解
- 机械设备保养与修理制度培训
- 高原性心血管疾病诊疗指南(2025年版)
- 2026年生物制药研发技术职称考试题库
- 充电桩工程施工方案 (一)
- 重症医学科心肌梗塞抗凝治疗要点培训指南
评论
0/150
提交评论