版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年腾讯工程师招聘面试题集一、编程基础(5题,每题10分,共50分)题目1(10分)问题描述:实现一个函数,输入一个整数数组,返回数组中所有奇数元素的平方和。要求不使用任何内置函数,时间复杂度不超过O(n)。示例:输入:[1,2,3,4,5]输出:1^2+3^2+5^2=35题目2(10分)问题描述:编写一个函数,判断一个字符串是否为回文串。可以忽略大小写和非字母字符。示例:输入:"Aman,aplan,acanal:Panama"输出:true题目3(10分)问题描述:实现一个二叉树的最大深度计算函数。要求使用递归方式实现。题目4(10分)问题描述:给定一个链表,返回链表中间的节点。如果链表有偶数个节点,返回第二个中间节点。题目5(10分)问题描述:编写一个函数,实现二进制字符串的翻转。例如,输入"101001",输出"100110"。二、系统设计(3题,每题20分,共60分)题目6(20分)问题描述:设计一个简单的微博系统,需要支持以下功能:1.用户注册和登录2.发布微博(限制长度,支持@功能)3.刷新时间线(显示最新的10条微博)4.关注/取消关注用户要求:-说明系统架构-设计主要数据表结构-描述核心功能实现逻辑题目7(20分)问题描述:设计一个高并发的短链接生成服务。要求:-支持高并发访问-链接短小且唯一-支持自定义短链接前缀-具备一定的防攻击能力要求:-说明系统架构-设计主要组件-描述数据存储方案题目8(20分)问题描述:设计一个腾讯视频的推荐系统。需要考虑:-用户画像构建-内容特征提取-推荐算法选择-实时推荐与离线推荐结合要求:-说明系统整体架构-设计关键模块-描述算法选择理由三、数据库(2题,每题15分,共30分)题目9(15分)问题描述:设计一个电商平台的订单表,需要支持以下场景:1.订单创建时生成唯一订单号2.支持订单状态变更(待支付、已支付、已发货、已完成、已取消)3.支持按用户、时间、金额等多维度查询要求:-设计表结构-说明主键、索引设计-描述关键约束题目10(15分)问题描述:假设一个社交系统需要存储用户关系,要求:1.支持快速查询某个用户的直接好友2.支持查询共同好友3.支持动态更新好友关系要求:-设计数据模型-说明优缺点分析-描述实现方案四、网络编程(2题,每题15分,共30分)题目11(15分)问题描述:设计一个简单的即时通讯系统,需要支持:1.用户注册与登录2.群组聊天3.单聊消息实时传输要求:-说明协议选择(TCP/UDP)-设计通信流程-描述状态同步方案题目12(15分)问题描述:实现一个简单的负载均衡器,要求:-支持轮询、随机、加权轮询等策略-具备健康检查功能-支持动态添加/删除后端服务器要求:-说明工作原理-设计数据结构-描述算法实现五、算法与数据结构(4题,每题15分,共60分)题目13(15分)问题描述:给定一个包含n个整数的数组,找出其中三个数,使得它们的乘积最大。示例:输入:[-10,-10,5,2]输出:(-10)×(-10)×5=500题目14(15分)问题描述:实现一个LRU(最近最少使用)缓存,支持get和put操作。要求:-使用链表和哈希表实现-get操作时间复杂度O(1)-put操作时间复杂度O(1)题目15(15分)问题描述:设计一个算法,判断一个无向图是否是二分图。要求:-说明算法思路-描述实现步骤题目16(15分)问题描述:实现一个字符串匹配算法,支持KMP模式匹配。要求:-描述算法原理-提供代码实现答案与解析编程基础答案与解析题目1答案与解析pythondefsum_of_odd_squares(nums):result=0fornuminnums:ifnum%2!=0:result+=numnumreturnresult解析:1.遍历数组,检查每个元素是否为奇数2.如果是奇数,计算其平方并累加3.时间复杂度O(n),空间复杂度O(1)4.优化点:可以考虑使用生成器表达式,但题目要求不使用内置函数题目2答案与解析pythondefis_palindrome(s):过滤非字母字符并转为小写filtered=''.join(c.lower()forcinsifc.isalnum())双指针法检查回文left,right=0,len(filtered)-1whileleft<right:iffiltered[left]!=filtered[right]:returnFalseleft+=1right-=1returnTrue解析:1.首先预处理字符串,忽略大小写和非字母字符2.使用双指针从两端向中间检查3.时间复杂度O(n),空间复杂度O(n)用于存储过滤后的字符串4.优化点:可以原地修改字符串,但Python字符串不可变题目3答案与解析pythonclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdefmax_depth(root):ifnotroot:return0return1+max(max_depth(root.left),max_depth(root.right))解析:1.递归检查左子树和右子树的最大深度2.时间复杂度O(n),空间复杂度O(h)(h为树高)3.优化点:可以考虑非递归实现,但题目要求递归题目4答案与解析pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextdefmiddle_node(head):slow=fast=headwhilefastandfast.next:slow=slow.nextfast=fast.next.nextreturnslow解析:1.使用快慢指针,快指针每次走两步,慢指针走一步2.当快指针到达末尾时,慢指针在中间3.时间复杂度O(n),空间复杂度O(1)4.特殊处理:偶数个节点时返回第二个中间节点题目5答案与解析pythondefreverse_bits(s):result=0forcharins:result=(result<<1)|int(char)returnbin(result)[2:].zfill(len(s))解析:1.从左到右逐位翻转,每次将result左移一位再加当前位2.时间复杂度O(n),空间复杂度O(1)3.优化点:可以考虑位运算优化,但题目要求不使用内置函数系统设计答案与解析题目6答案与解析系统架构:1.前端:Web/移动端APP2.后端:RESTfulAPI服务3.数据库:MySQL/PostgreSQL4.缓存:Redis/Memcached5.消息队列:Kafka/RabbitMQ数据表设计:sqlCREATETABLEusers(idBIGINTAUTO_INCREMENTPRIMARYKEY,usernameVARCHAR(50)UNIQUENOTNULL,password_hashVARCHAR(255)NOTNULL,created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP);CREATETABLEtweets(idBIGINTAUTO_INCREMENTPRIMARYKEY,user_idBIGINTNOTNULL,contentTEXTNOTNULL,created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP,FOREIGNKEY(user_id)REFERENCESusers(id));CREATETABLEfollowships(follower_idBIGINTNOTNULL,followee_idBIGINTNOTNULL,created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP,PRIMARYKEY(follower_id,followee_id),FOREIGNKEY(follower_id)REFERENCESusers(id),FOREIGNKEY(followee_id)REFERENCESusers(id));核心功能实现:1.登录:使用JWT或Session2.发布微博:入MySQL,并推送到Kafka3.时间线:从Redis获取关注用户ID集合,分页查询MySQL4.关注:更新followships表题目7答案与解析系统架构:1.接入层:Nginx/HAProxy2.后端:短链接服务集群3.数据库:Redis(热点数据)+MySQL(持久化)4.索引:Elasticsearch(用于查询)主要组件:1.请求分发器:负载均衡2.生成服务:短ID生成器3.存储服务:分布式存储4.查询服务:缓存+数据库5.防护模块:限流、验证码数据存储方案:sqlCREATETABLEshort_links(short_codeCHAR(6)PRIMARYKEY,original_urlVARCHAR(1024)NOTNULL,custom_prefixVARCHAR(20),created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP);CREATEINDEXidx_codeONshort_links(short_code);CREATEINDEXidx_prefixONshort_links(custom_prefix);题目8答案与解析系统架构:1.数据采集层:爬虫/上传接口2.数据处理层:ETL流程3.特征工程:用户/内容特征提取4.推荐引擎:协同过滤/深度学习模型5.接入服务:推荐API6.缓存:Redis/Memcached关键模块:1.用户画像:标签体系、行为序列2.内容特征:文本向量、图像特征3.推荐算法:-离线:矩阵分解、图神经网络-实时:LambdaMART、深度FM4.排序服务:CTR预估+业务规则算法选择理由:-考虑腾讯大规模用户和内容场景-结合实时性与离线模型的优点-使用深度学习捕捉复杂特征-支持个性化与多样性平衡数据库答案与解析题目9答案与解析表结构:sqlCREATETABLEorders(order_idBIGINTAUTO_INCREMENTPRIMARYKEY,user_idBIGINTNOTNULL,order_numberCHAR(16)NOTNULLUNIQUE,total_amountDECIMAL(10,2)NOTNULL,statusENUM('pending','paid','shipped','completed','cancelled')DEFAULT'pending',created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP,updated_atTIMESTAMPDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP,FOREIGNKEY(user_id)REFERENCESusers(id));CREATEINDEXidx_statusONorders(status);CREATEINDEXidx_userONorders(user_id);CREATEINDEXidx_timeONorders(created_at);主键、索引设计:1.order_id作为主键,唯一标识订单2.order_number作为唯一索引,支持快速查询和防重复3.多个索引支持不同查询场景关键约束:1.外键约束保证数据一致性2.状态枚举防止非法状态变更3.时间戳记录创建和更新时间题目10答案与解析数据模型:sql--普通模型CREATETABLEfriendships(user_id1BIGINTNOTNULL,user_id2BIGINTNOTNULL,PRIMARYKEY(user_id1,user_id2),FOREIGNKEY(user_id1)REFERENCESusers(id),FOREIGNKEY(user_id2)REFERENCESusers(id));--二叉树模型CREATETABLEusers(idBIGINTAUTO_INCREMENTPRIMARYKEY,nameVARCHAR(50)NOTNULL);CREATETABLEadjacency_list(from_user_idBIGINTNOTNULL,to_user_idBIGINTNOTNULL,levelINTDEFAULT1,PRIMARYKEY(from_user_id,to_user_id),FOREIGNKEY(from_user_id)REFERENCESusers(id),FOREIGNKEY(to_user_id)REFERENCESusers(id));优缺点分析:-普通模型:简单易实现,但查询共同好友效率低(需要多次JOIN)-二叉树模型:支持层次查询,适合动态关系,但实现复杂实现方案:1.普通模型:使用WITHRECURSIVE查询共同好友2.二叉树模型:基于邻接表进行层次遍历网络编程答案与解析题目11答案与解析协议选择:-登录/状态同步:TCP(可靠)-消息传输:UDP(低延迟,适合实时聊天)通信流程:1.TCP三次握手建立连接2.登录验证通过后建立心跳机制3.消息通过UDP发送,带序列号防丢状态同步方案:-使用Redis订阅消息-用户上线时拉取离线消息-心跳机制检测在线状态题目12答案与解析工作原理:1.轮询:每个后端服务器按顺序处理请求2.随机:随机选择后端服务器3.加权轮询:考虑服务器性能分配权重数据结构:pythonclassBackendServer:def__init__(self,address,weight=1):self.address=addressself.weight=weightself.current=0defis_healthy(self):实现健康检查逻辑pass算法实现:1.维护后端服务器列表和权重2.实现健康检查轮询3.动态增删时更新选择算法算法与数据结构答案与解析题目13答案与解析pythondefmaximum_product(nums):排序后三个最大值或两个最小值乘以最大值nums.sort()n=len(nums)returnmax(nums[0]nums[1]nums[-1],nums[-1]nums[-2]nums[-3])解析:1.排序后可能的最大乘积来自:-三个最大正数的乘积-两个最小负数(绝对值大)乘以最大正数2.时间复杂度O(nlogn),空间复杂度O(1)3.优化点:可以一次遍历找到所需值,O(n)时间题目14答案与解析pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.head=self.tail=ListNode(0)self.head.next=self.tailself.tail.prev=self.headdef_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_move_to_head(self,node):移动节点到头部self._remove_node(node)self._add_node(node)defget(self,key:int)->int:node=self.cache.get(key,None)ifnotnode:return-1self._move_to_head(node)returnnode.valuedefput(self,key:int,value:int)->None:node=self.cache.get(key)ifnotnode:newNode=ListNode(key,value)self.cache[key]=newNodeself._add_node(newNode)iflen(self.cache)>self.capacity:删除尾部节点lru=self.tail.prevself._remove_node(lru)delself.cache[lru.key]else:node.value=valueself._move_to_head(node)解析:1.使用哈希表存储键值对,双向链表维护访问顺序2.get操作将访问节点移到头部3.put操作检查是否已存在,存在则更新,不存在则添加4.超过容量时删除尾部节点题目15答案与解析pythondefis_bipartite(graph):color={}defdfs(node,c):ifnodeincolor:returncol
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年机动车检测站授权签字人考试题库及答案
- 青岛水帘施工方案(3篇)
- 加固博士施工方案(3篇)
- 2025年合规管理技能提升专项培训试卷及答案
- 2025年动漫设计制作艺术创作考核试卷及答案
- 2025年仓储安全员实操考核专项训练试卷及答案
- 2025年市政质量员资格考试题库及答案
- 2025年动物实验学题库及答案(可下载)
- 2025年第三季度营业主管培训考试试题及答案
- 机械铸件项目可行性研究报告
- 2025年高考真题-化学(四川卷) 含答案
- 飞模施工方案
- 2025企业整体并购协议
- QA矩阵培训课件
- 作文可爱的家乡教学课件
- 警犬搜救训练课件
- 耳尖放血疗法课件
- 知道智慧树医学伦理学(山东大学)满分测试答案
- 知道智慧树生命科学与健康满分测试答案
- 《物流运筹方法与工具》课件-模块六 运输路径规划
- QGDW11970.1-2023输变电工程水土保持技术规程第1部分水土保持方案
评论
0/150
提交评论