版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年腾讯软件开发工程师面试题集一、编程基础与数据结构(共5题,每题10分)1.题目:请实现一个函数,输入一个正整数`n`,返回`n`的汉诺塔移动步骤。例如,`n=2`时,移动步骤为:movediskfromAtoCmovediskfromAtoBmovediskfromCtoBmovediskfromAtoCmovediskfromBtoAmovediskfromBtoCmovediskfromAtoC2.题目:给定一个数组`arr`,请实现一个函数,找出数组中只出现一次的元素。假设数组中只有一个元素只出现一次,其余元素均出现两次。例如:输入:[4,1,2,1,2]输出:43.题目:请实现一个函数,判断一个字符串是否是有效的括号组合。例如:输入:"()"输出:true输入:"()[]{}"输出:true输入:"([)]"输出:false4.题目:请实现一个函数,输入一个字符串,返回其最长回文子串的长度。例如:输入:"babad"输出:3("bab"或"aba")5.题目:请实现一个函数,输入一个整数`n`,返回`1`到`n`的所有斐波那契数。例如:输入:10输出:[1,1,2,3,5,8]二、算法与设计(共5题,每题12分)1.题目:请设计一个LRU(最近最少使用)缓存,支持`get`和`put`操作。缓存容量为`capacity`,超出容量时需要淘汰最久未使用的元素。2.题目:给定一个未排序的整数数组,请实现一个函数,找出数组中第三大的数。例如:输入:[1,2,-2147483648,9,-2147483648,2]输出:23.题目:请设计一个算法,判断一个无向图是否存在环。可以使用邻接表或邻接矩阵实现。4.题目:请实现一个函数,输入一个字符串,返回其所有可能的子集。例如:输入:"abc"输出:["","a","b","c","ab","ac","bc","abc"]5.题目:请设计一个算法,输入一个正整数`n`,返回`n`的平方根(保留两位小数)。例如:输入:8输出:2.83三、系统设计(共3题,每题15分)1.题目:请设计一个高并发的短链接生成系统。要求:-支持高并发请求-链接唯一且可逆-链接长度尽可能短2.题目:请设计一个简单的消息队列系统,支持发布/订阅模式。要求:-支持多个消费者订阅同一主题-消息至少被传递一次3.题目:请设计一个高可用的分布式存储系统,要求:-数据分片存储-支持数据备份-能够处理节点故障四、数据库与中间件(共4题,每题12分)1.题目:请解释MySQL中的事务隔离级别,并说明不同隔离级别可能出现的问题(如脏读、不可重复读、幻读)。2.题目:请说明Redis的持久化机制(RDB和AOF),并比较两者的优缺点。3.题目:请设计一个高并发的秒杀系统,需要考虑哪些问题?如何解决?4.题目:请解释Kafka的零拷贝机制,并说明其在高吞吐量场景中的作用。五、网络与分布式(共4题,每题12分)1.题目:请解释TCP的三次握手和四次挥手过程,并说明为什么TCP需要三次握手。2.题目:请说明HTTP和HTTPS的区别,HTTPS如何保证数据安全?3.题目:请解释CAP理论,并说明分布式数据库如何选择一致性模型(强一致性、最终一致性)。4.题目:请解释负载均衡的几种常见算法(如轮询、随机、最少连接),并说明其适用场景。六、编程题(共3题,每题15分)1.题目:请实现一个快速排序算法,并分析其时间复杂度和空间复杂度。2.题目:请实现一个二叉树的最大深度计算函数。例如:输入:[3,9,20,null,null,15,7]输出:33.题目:请实现一个字符串的压缩函数,例如:输入:"aabcccccaaa"输出:"a2b1c5a3"答案与解析一、编程基础与数据结构1.汉诺塔移动步骤:pythondefhanoi(n,source,target,auxiliary):ifn==1:print(f"movediskfrom{source}to{target}")returnhanoi(n-1,source,auxiliary,target)print(f"movediskfrom{source}to{target}")hanoi(n-1,auxiliary,target,source)示例:n=2hanoi(2,'A','C','B')解析:递归解法,将`n-1`个盘从`A`移动到`B`,再移动第`n`个盘到`C`,最后将`n-1`个盘从`B`移动到`C`。2.找出只出现一次的元素:pythondefsingleNumber(arr):result=0fornuminarr:result^=numreturnresult示例:[4,1,2,1,2]print(singleNumber([4,1,2,1,2]))#输出:4解析:异或运算特性,相同数异或为0,最终结果为只出现一次的数。3.判断有效括号:pythondefisValid(s):stack=[]mapping={')':'(','}':'{',']':'['}forcharins:ifcharinmapping.values():stack.append(char)elifcharinmapping.keys():ifnotstackorstack[-1]!=mapping[char]:returnFalsestack.pop()returnnotstack示例:"(())"print(isValid("(())"))#输出:True解析:使用栈匹配左括号和右括号。4.最长回文子串:pythondeflongestPalindrome(s):ifnots:return0start,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示例:"babad"print(longestPalindrome("babad"))#输出:"bab"或"aba"解析:中心扩展法,分别以单个字符和两个字符为中心扩展。5.斐波那契数列:pythondeffib(n):ifn<=0:return[]dp=[1,1]foriinrange(2,n):dp.append(dp[-1]+dp[-2])returndp[:n]示例:10print(fib(10))#输出:[1,1,2,3,5,8]解析:动态规划法,保存前两个数并累加。二、算法与设计1.LRU缓存:pythonclassLRUCache:def__init__(self,capacity):self.capacity=capacityself.cache={}self.order=[]defget(self,key):ifkeyinself.cache:self.order.remove(key)self.order.append(key)returnself.cache[key]return-1defput(self,key,value):ifkeyinself.cache:self.order.remove(key)eliflen(self.cache)>=self.capacity:self.cache.pop(self.order.pop(0))self.cache[key]=valueself.order.append(key)示例:capacity=2lru=LRUCache(2)lru.put(1,1)lru.put(2,2)print(lru.get(1))#输出:1lru.put(3,3)#删除键2print(lru.get(2))#输出:-1解析:使用哈希表记录缓存,双向链表维护使用顺序。2.第三大的数: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示例:[1,2,-2147483648,9,-2147483648,2]print(thirdMax([1,2,-2147483648,9,-2147483648,2]))#输出:2解析:维护三个变量记录前三大的数。3.判断无向图是否存在环:pythondefhasCycle(graph):visited=set()fornodeingraph:ifnodenotinvisited:ifdfs(node,graph,visited,-1):returnTruereturnFalsedefdfs(node,graph,visited,parent):visited.add(node)forneighboringraph[node]:ifneighbornotinvisited:ifdfs(neighbor,graph,visited,node):returnTrueelifneighbor!=parent:returnTruereturnFalse示例:graph={0:[1,2],1:[0,2],2:[0,1,3],3:[2]}print(hasCycle({0:[1,2],1:[0,2],2:[0,1,3],3:[2]}))#输出:True解析:深度优先搜索,检测到已访问的父节点表示存在环。4.字符串子集:pythondefsubsets(s):res=[]subset=[]defbacktrack(start):res.append(subset.copy())foriinrange(start,len(s)):subset.append(s[i])backtrack(i+1)subset.pop()backtrack(0)returnres示例:"abc"print(subsets("abc"))输出:["","a","b","c","ab","ac","bc","abc"]解析:回溯法,枚举所有可能的子集。5.平方根计算:pythondefsqrt(n):ifn<2:returnnleft,right=1,n//2whileleft<=right:mid=(left+right)//2ifmidmid==n:returnmidelifmidmid<n:left=mid+1ans=midelse:right=mid-1returnround(ans,2)示例:8print(sqrt(8))#输出:2.83解析:二分查找法,逐步逼近平方根。三、系统设计1.短链接生成系统:设计思路:-使用Base62编码(`a-z`、`A-Z`、`0-9`)将长链接转换为短链接-建立长链接与短链接的映射关系(数据库或缓存)-高并发处理:使用Redis缓存热点链接,分布式部署2.消息队列系统:设计思路:-发布者向主题发布消息,消费者订阅主题-使用Redis或RabbitMQ存储消息-支持至少一次传递:消息确认机制3.分布式存储系统:设计思路:-数据分片(如Hash分片)-数据备份(多副本存储)-节点故障检测与自动切换(如使用Zookeeper)四、数据库与中间件1.事务隔离级别:-读未提交(ReadUncommitted):可能脏读-读已提交(ReadCommitted):解决脏读,但不可重复读-可重复读(RepeatableRead):解决不可重复读,但可能出现幻读-串行化(Serializable):完全隔离,但性能最低2.Redis持久化:-RDB:定期快照,占用空间小,恢复慢-AOF:持续记录写操作,恢复快,占用空间大3.秒杀系统设计:-数据库优化:使用索引、乐观锁或分布式锁-流量控制:限流、熔断-缓存:使用Redis缓存库存4.Kafka零拷贝:原理:通过操作系统直接将数据从磁盘传输到网卡,避免CPU重复拷贝。五、网络与分布式1.TCP三次握手:-第一次:客户端发送SYN请求-第二次:服务器回复SYN+ACK-第三次:客户端回复ACK2.HTTPvsHTTPS:-HTTPS使用SSL/TLS加密传输-需要证书,更安全3.CAP理论:-分布式系统最多只能同时满足一致性、可用性和分区容错性中的两项4.负载均衡算法:-轮询:均匀分配请求-随机:简单但可能不均匀-最少连接:优先分配连接少的节点六、编程题1.快速排序:pythondefquickSort(arr):iflen(arr)<=1:returnarrpivot=arr[len(arr)//2]left=[xforxinarrifx<pivot]middle=[xforxinarrifx==pivot]right=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026贵州安顺市平坝第一高级中学公费师范生附高层次人才引进2人(第二批)备考核心试题附答案解析
- 2025中国瑞林工程技术股份有限公司市场化选聘财务总监1人(江西)备考核心题库及答案解析
- 2025河北廊坊文安县中医院招聘临时工作人员7名备考核心题库及答案解析
- 中学生消防安全课
- 2025河南郑州陇海马路社区卫生服务中心招聘备考核心试题附答案解析
- 2025年碳中和路径规划协议(环保)
- 2026中国农业科学院第一批统一招聘(郑州果树研究所)考试核心试题及答案解析
- 2025西藏日喀则市江孜县委社会工作部招聘社区工作者1人考试核心试题及答案解析
- 2025广西贵港市平南县官成镇政府公开招聘乡镇残联专职委员1人考试重点题库及答案解析
- 2025湖南长沙市城市建设档案馆公开招聘普通雇员3人考试核心题库及答案解析
- T/CCPITCSC 096-2022名表真假鉴定规范
- 皮肤恶性肿瘤课件
- 2025人教版七年级下册英语寒假预习重点语法知识点清单
- 2025新高考数学核心母题400道(教师版)
- CWAN 0020-2022 机器人焊接技能竞赛团体标准
- 形势与政策(吉林大学)知到智慧树章节测试课后答案2024年秋吉林大学
- 浙江省温州市2023-2024学年六年级上学期期末科学试卷(含答案)1
- 中国文化:复兴古典 同济天下学习通超星期末考试答案章节答案2024年
- 《底层逻辑》刘润
- 2026年全年日历表带农历(A4可编辑可直接打印)预留备注位置
- T-NMAAA.0002-2021 营运机动车停运损失鉴定评估规范
评论
0/150
提交评论