版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年腾讯公司技术面试题库及答案详解一、编程语言基础(5题,每题10分)1.题目:在Python中,如何实现一个函数,输入一个字符串,返回该字符串中所有单词的长度列表(空格分隔)。例如,输入`"Helloworld"`,输出`[5,5]`。2.题目:请写出Java代码,实现一个方法,判断一个整数是否为完全平方数(如16是,25是,10不是)。3.题目:用C++实现一个单链表节点结构体,并编写插入和删除节点的函数。4.题目:在JavaScript中,如何使用闭包实现一个简单的计数器函数?5.题目:Go语言中,如何定义一个切片,并初始化其值为`[1,2,3]`?答案与解析1.Python字符串处理pythondefword_lengths(s):return[len(word)forwordins.split()]解析:-`s.split()`默认按空格分割字符串,返回单词列表。-列表推导式计算每个单词的长度。2.判断完全平方数javapublicbooleanisPerfectSquare(intnum){if(num<0)returnfalse;intsqrt=(int)Math.sqrt(num);returnsqrtsqrt==num;}解析:-开方后取整,再平方看是否等于原数。负数直接返回false。3.C++单链表节点cppstructListNode{intval;ListNodenext;ListNode(intx):val(x),next(nullptr){}};voidinsert(ListNode&head,intval){ListNodenewNode=newListNode(val);newNode->next=head;head=newNode;}voiddeleteNode(ListNode&head,intval){ListNodecurrent=head;ListNodeprev=nullptr;while(current&¤t->val!=val){prev=current;current=current->next;}if(current){if(prev)prev->next=current->next;elsehead=head->next;deletecurrent;}}解析:-插入时新建节点,指向原头节点。-删除时需处理头节点和中间节点。4.JavaScript闭包计数器javascriptfunctioncreateCounter(){letcount=0;returnfunction(){returncount++;};}解析:-外层函数定义私有变量`count`,内层函数修改并返回。5.Go语言切片gofuncmain(){slice:=[]int{1,2,3}fmt.Println(slice)//输出[123]}解析:-切片是动态数组,直接用`[]int`声明并初始化。二、数据结构与算法(6题,每题10分)1.题目:用递归方式实现快速排序算法。2.题目:设计一个算法,找出无重复数字数组中的第三大数(如`[1,2,2,5,3]`返回2)。3.题目:用BFS(广度优先搜索)实现二叉树的层序遍历。4.题目:编写一个函数,判断一个链表是否有环(用快慢指针)。5.题目:用动态规划计算斐波那契数列的第n项(优化空间复杂度)。6.题目:实现一个LRU(最近最少使用)缓存,支持get和put操作(用哈希+双向链表)。答案与解析1.快速排序递归实现pythondefquick_sort(arr):iflen(arr)<=1:returnarrpivot=arr[len(arr)//2]left=[xforxinarrifx<pivot]middle=[xforxinarrifx==pivot]right=[xforxinarrifx>pivot]returnquick_sort(left)+middle+quick_sort(right)解析:-选择中间值作为基准,递归分治。2.第三大数pythondefthird_largest(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=numreturnthird解析:-维护三个变量记录前三大的数。3.二叉树层序遍历pythonfromcollectionsimportdequedeflevel_order(root):ifnotroot:return[]result,queue=[],deque([root])whilequeue:level=[]for_inrange(len(queue)):node=queue.popleft()level.append(node.val)ifnode.left:queue.append(node.left)ifnode.right:queue.append(node.right)result.append(level)returnresult解析:-用队列存储当前层节点,逐层遍历。4.链表环检测javapublicbooleanhasCycle(ListNodehead){if(head==null)returnfalse;ListNodeslow=head,fast=head;while(fast!=null&&fast.next!=null){slow=slow.next;fast=fast.next.next;if(slow==fast)returntrue;}returnfalse;}解析:-快慢指针相遇即存在环。5.动态规划斐波那契(优化空间)pythondeffib(n):ifn<=1:returnna,b=0,1for_inrange(2,n+1):a,b=b,a+breturnb解析:-只用两个变量存储前两个数,避免O(n)空间。6.LRU缓存实现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,self.tail=ListNode(),ListNode()self.head.next=self.tailself.tail.prev=self.headdefget(self,key:int)->int:ifkeyinself.cache:node=self.cache[key]self._move_to_head(node)returnnode.valuereturn-1defput(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:self._remove_lru_node()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_remove_lru_node(self):lru=self.tail.prevself._remove_node(lru)delself.cache[lru.key]解析:-哈希记录键值,双向链表维护访问顺序。三、系统设计与数据库(4题,每题12分)1.题目:设计一个高并发的短链接系统(如tinyURL),要求支持秒级生成和解析。2.题目:如何设计一个高可用、可伸缩的微博点赞系统?3.题目:用SQL实现一个查询,找出某个用户关注的人中,最近一个月发过帖子的用户数量(假设表结构有`users`、`follows`、`posts`)。4.题目:设计一个消息队列(如Kafka),如何保证消息的至少一次、最多一次和精确一次传递?答案与解析1.短链接系统设计-分布式ID生成:使用Snowflake算法生成唯一ID(时间戳+机器码+序列号)。-缓存层:用Redis缓存热点短链接,降低数据库压力。-数据库设计:sqlCREATETABLEshortlinks(idBIGINTPRIMARYKEY,original_urlVARCHAR(255),short_urlVARCHAR(10));-负载均衡:使用Nginx分发请求到不同节点。2.微博点赞系统-数据结构:sqlCREATETABLElikes(user_idINT,post_idINT,created_atDATETIME,UNIQUEKEY(user_id,post_id));-高并发优化:-使用Redis缓存用户点赞状态。-分布式事务(如Seata)处理跨服务操作。-数据库读写分离,热点表分片。3.关注用户发帖查询sqlSELECTCOUNT(DISTINCTp.user_id)FROMpostspJOINfollowsfONp.user_id=f.followee_idWHEREf.follower_id=?--当前用户IDANDp.created_at>=NOW()-INTERVAL1MONTH;解析:-连接`follows`和`posts`表,筛选关注的人的最近一个月帖子。4.消息队列传递保证-至少一次:通过幂等性设计,重试机制避免重复处理。-最多一次:使用幂等键(如订单号),确保重复消息被过滤。-精确一次:-消息确认机制(ACK)。-空消息补偿(消息丢失时重发)。-持久化消息到磁盘。四、网络与分布式系统(5题,每题12分)1.题目:解释TCP三次握手和四次挥手的过程。2.题目:如何解决分布式系统中的CAP问题?3.题目:设计一个分布式锁,要求高可用性。4.题目:Redis如何实现持久化(RDB和AOF)?5.题目:在腾讯云上部署一个高可用的微服务架构,如何设计限流和熔断?答案与解析1.TCP三次握手-第一次:客户端发送SYN包(seq=x),服务器确认SYN+ACK(ack=x+1,seq=y)。-第二次:客户端发送ACK(ack=y+1),建立连接。-四次挥手:-客户端发送FIN(seq=a),服务器ACK(ack=a+1)。-服务器发送FIN(seq=b),客户端ACK(ack=b+1)。-服务器关闭连接,客户端等待2MSL后关闭。2.CAP问题解决方案-分布式数据库:-ChaoShu(一致性+分区容错)。-Paxos/Raft(一致性+可用性)。-应用层优化:-使用本地缓存+最终一致性。3.分布式锁设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 部门沟通与协调流程手册
- 2025年智慧农业物联网五年应用报告
- 行业的产品功能需求说明书编写工具
- 并购重组培训课件
- 价格公正公开承诺要点公开承诺书(6篇)
- 跨部门沟通协作流程规范
- 年终大课课件
- 电子产品行业研发人员绩效评定表
- 2026年中国数据银行市场态势调研及未来五竞争战略分析报告
- 2025年夜间演艺市场五年发展与监管报告
- 2025西部机场集团航空物流有限公司招聘笔试备考重点试题及答案解析
- 2025年1月黑龙江省普通高中学业水平合格性考试语文试卷(含答案)
- 卫健系统2025年上半年安全生产工作总结
- 2026届安徽省皖南八校高三第二次大联考化学试卷
- 元旦联欢会:疯狂动物城
- 期末综合测评卷一(试卷)2025-2026学年三年级语文上册(统编版)
- 数据资产管理实践指南8.0
- 2025年非遗文化(文化传承)项目可行性研究报告
- 2025北京市交通运输综合执法总队轨道交通运营安全专职督查员招聘10人笔试备考题库附答案解析(夺冠)
- 2025年6月浙江省高考物理试卷真题(含答案解析)
- 2025年广西公需真题卷及答案
评论
0/150
提交评论