版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年互联网公司技术部高级工程师面试题集一、编程基础与数据结构(共5题,每题10分,总分50分)题目1(10分)请实现一个函数,输入一个非空字符串,返回该字符串的最长回文子串。例如,输入"babad",返回"bab"或"aba"。题目2(10分)给定一个包含n个整数的数组,设计一个算法找出数组中第k个最大的元素。要求时间复杂度不超过O(n)。题目3(10分)请实现一个LRU(最近最少使用)缓存,容量为capacity。支持get(key)和put(key,value)操作,每次操作后返回缓存中键的数量。题目4(10分)设计一个算法,找出所有相加和为特定数的三元组。例如,输入[-1,0,1,2],和为0,返回[[-1,0,1],[-1,2,1]]。题目5(10分)请实现一个函数,检查一个二叉树是否是平衡的。一个二叉树是平衡的当且仅当每个节点的左右子树高度差不超过1。二、算法设计(共3题,每题15分,总分45分)题目6(15分)设计一个算法,将一个无符号整数右旋转n位。例如,输入32位整数8589934592,旋转2位后为1374389535。题目7(15分)实现一个函数,将字符串中的所有大写字母转换为小写字母,所有小写字母转换为大写字母。不使用内置函数。题目8(15分)设计一个算法,找出数组中所有重复的元素,且重复次数超过一次。要求空间复杂度为O(n)。三、系统设计与架构(共3题,每题20分,总分60分)题目9(20分)设计一个高并发的短链接系统。要求支持分布式部署,高可用,并提供API接口用于生成和查询短链接。题目10(20分)设计一个微博系统的用户关注关系模块。要求支持大规模用户,实现关注/取消关注操作,并支持获取某用户的关注列表。题目11(20分)设计一个消息队列系统,要求支持消息的可靠传输、持久化存储和异步处理。请说明关键组件的设计思路。四、数据库与存储(共2题,每题15分,总分30分)题目12(15分)设计一个电商平台的订单表,包含订单基本信息和商品信息。请说明表结构设计,并考虑索引优化。题目13(15分)解释数据库事务的ACID特性,并说明如何在分布式数据库中实现事务一致性。五、分布式系统与中间件(共2题,每题15分,总分30分)题目14(15分)设计一个分布式限流系统,要求支持多种限流策略(如漏桶、令牌桶),并说明如何实现分布式环境下的状态同步。题目15(15分)解释CAP定理,并说明在互联网业务场景中,如何根据业务需求选择合适的架构模式。答案与解析答案1(10分)pythondeflongest_palindrome(s:str)->str:ifnots:return""start,end=0,0foriinrange(len(s)):len1=expand_around_center(s,i,i)len2=expand_around_center(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]defexpand_around_center(s:str,left:int,right:int)->int:whileleft>=0andright<len(s)ands[left]==s[right]:left-=1right+=1returnright-left-1解析:采用中心扩展法,对于每个字符,分别考虑奇数长度和偶数长度的回文,时间复杂度为O(n²)。答案2(10分)pythondeffind_kth_largest(nums:List[int],k:int)->int:defpartition(nums,low,high):pivot=nums[high]i=low-1forjinrange(low,high):ifnums[j]>pivot:i+=1nums[i],nums[j]=nums[j],nums[i]nums[i+1],nums[high]=nums[high],nums[i+1]returni+1defquickselect(nums,low,high,k):iflow==high:returnnums[low]pivot_index=partition(nums,low,high)ifk==pivot_index:returnnums[k]elifk<pivot_index:returnquickselect(nums,low,pivot_index-1,k)else:returnquickselect(nums,pivot_index+1,high,k)returnquickselect(nums,0,len(nums)-1,k-1)解析:快速选择算法,基于快速排序的分区思想,时间复杂度平均为O(n)。答案3(10分)pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.order=[]defget(self,key:int)->int:ifkeyinself.cache:self.order.remove(key)self.order.append(key)returnself.cache[key]return-1defput(self,key:int,value:int)->None:ifkeyinself.cache:self.order.remove(key)eliflen(self.cache)>=self.capacity:oldest=self.order.pop(0)delself.cache[oldest]self.cache[key]=valueself.order.append(key)解析:使用哈希表记录缓存,双向链表维护访问顺序,get和put操作均为O(1)。答案4(10分)pythondefthree_sum(nums:List[int])->List[List[int]]:nums.sort()result=[]n=len(nums)foriinrange(n):ifi>0andnums[i]==nums[i-1]:continueleft,right=i+1,n-1whileleft<right:total=nums[i]+nums[left]+nums[right]iftotal==0:result.append([nums[i],nums[left],nums[right]])whileleft<rightandnums[left]==nums[left+1]:left+=1whileleft<rightandnums[right]==nums[right-1]:right-=1left+=1right-=1eliftotal<0:left+=1else:right-=1returnresult解析:排序后使用双指针法,时间复杂度为O(n²)。答案5(10分)pythonclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdefis_balanced(root:TreeNode)->bool:defcheck(node):ifnotnode:return0,Trueleft_height,left_balanced=check(node.left)right_height,right_balanced=check(node.right)balanced=left_balancedandright_balancedandabs(left_height-right_height)<=1returnmax(left_height,right_height)+1,balancedreturncheck(root)[1]解析:递归计算每个节点的高度,同时检查平衡性,时间复杂度为O(n)。答案6(15分)pythondefrotate_right(n:int,bits:int)->int:获取整数类型的位数bit_length=n.bit_length()计算旋转后的新值rotated=((n&((1<<bit_length)-1-(1<<bits)))<<bits)|(n>>(bit_length-bits))returnrotated解析:先将整数转为二进制,然后右移bits位,将高位补到低位。答案7(15分)pythondefswap_case(s:str)->str:result=[]forcharins:if'a'<=char<='z':result.append(chr(ord(char)-32))elif'A'<=char<='Z':result.append(chr(ord(char)+32))else:result.append(char)return''.join(result)解析:遍历字符串,对每个字符判断大小写并转换,时间复杂度为O(n)。答案8(15分)pythondeffind_duplicates(nums:List[int])->List[int]:seen=set()duplicates=set()fornuminnums:ifnuminseen:duplicates.add(num)else:seen.add(num)returnlist(duplicates)解析:使用哈希集合记录已见数字,时间复杂度为O(n),空间复杂度为O(n)。答案9(20分)设计思路:1.短链接生成:使用哈希算法(如MD5)将长链接映射为固定长度的短码,如8位62进制编码2.分布式部署:使用分布式缓存(Redis)存储短码与长链接的映射关系3.高可用:通过负载均衡器(Nginx)分发请求到不同的后端服务4.API接口:-生成接口:POST/shorten?url=LONG_URL-查询接口:GET/shorten/{short_code}答案10(20分)设计思路:1.数据存储:使用Redis存储用户关注关系(哈希表),键为用户ID,值为关注列表2.关注操作:使用Lua脚本保证关注/取消关注操作的原子性3.关注列表获取:使用Redis的SCAN命令分批返回关注列表,支持无限滚动4.分布式锁:使用Redis分布式锁解决并发关注时的数据竞争问题答案11(20分)设计思路:1.消息存储:使用Kafka作为消息队列,保证消息的顺序性和持久化2.消息处理:使用消息消费者组实现并行处理,每个消费者处理一部分消息3.可靠传输:Kafka通过副本机制保证消息不丢失4.异步处理:使用Celery或RabbitMQ实现任务队列,处理耗时操作答案12(15分)表结构:sqlCREATETABLEorders(order_idBIGINTPRIMARYKEYAUTO_INCREMENT,user_idBIGINTNOTNULL,total_amountDECIMAL(10,2)NOTNULL,statusVARCHAR(20)DEFAULT'pending',created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP,updated_atTIMESTAMPDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP,INDEXidx_user_id(user_id),INDEXidx_status(status));索引优化:对user_id和status创建索引,支持快速查询特定用户的订单或特定状态的订单。答案13(15分)ACID特性:1.原子性:事务中的所有操作要么全部完成,要么全部不做2.一致性:事务执行结果必须保证数据库状态的一致性3.隔离性:并发执行的事务之间互不干扰4.持久性:一旦事务提交,其结果就永久保存在数据库中分布式事务实现:使用2PC(两阶段提交)协议或TCC(Try-Confirm-Cancel)模式,或基于消息队列的最终一致性方案。答案14(15分)限流系统设计:1.漏桶算法:使用Redis实现漏桶,每个请求放入漏桶,按固定速率释放2.令牌桶算法:使用Redis实现令牌桶,按固定速率生成令牌,每个请求消耗一个令牌3.分布式实现:使用Redis的SETNX命令实现分布式锁,保证同一时间只有
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广州省公务员考试试题及答案
- 古典名著《水浒传》练习题含完整答案(典优)
- 广东省廉江公务员考试试题及答案
- 2026年口腔正畸学考试题库含答案【培优a卷】
- 2026年法律逻辑学试题附答案【培优】
- 2026年湖南外国语职业学院单招(计算机)测试模拟题库附答案
- 古蔺公务员考试试题及答案
- 公务员综合素质考试试题及答案
- 2025中远海运战略性新兴产业人才社会招聘265人(公共基础知识)综合能力测试题附答案
- 2026年反洗钱远程培训终结性考试题库附答案(夺分金卷)
- 建筑安全风险辨识与防范措施
- 培训教师合同范本
- 北京市中小学智慧校园建设规范(试行)
- 结构件通用检验规范
- 高考生物学二轮复习备课素材:多变量实验题的类型及审答思维
- 水电基础知识培训(二)
- 保险管选型指导书
- 建筑风景速写课件
- 第五届“国药工程杯”全国大学生制药工程设计竞赛
- 三年级上册英语素材-复习要点 Join in剑桥英语
- Q∕SY 1275-2010 油田污水回用湿蒸汽发生器水质指标
评论
0/150
提交评论