版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年互联网行业面试题集及答案解析一、编程与算法(共5题,每题15分,总分75分)1.题目(15分):实现一个LRU(LeastRecentlyUsed)缓存机制,使用哈希表和双向链表(或数组)实现,要求支持`get`和`put`操作,时间复杂度为O(1)。请给出代码实现,并解释核心思路。2.题目(15分):给定一个包含重复元素的数组,返回所有不重复的全排列。例如,输入`[1,1,2]`,输出`[[1,1,2],[1,2,1],[2,1,1]]`。请给出代码实现,并说明如何避免重复排列。3.题目(15分):设计一个算法,统计一个字符串中所有单词的出现频率,要求忽略大小写和标点符号。例如,输入`"Hello,world!Hello"`,输出`{"hello":2,"world":1}`。请给出代码实现,并解释时间复杂度。4.题目(15分):实现一个二叉树的深度优先遍历(前序、中序、后序),要求使用递归和非递归两种方式实现。请分别给出代码,并说明非递归实现的核心原理。5.题目(15分):给定一个包含n个整数的数组,返回所有和为target的三元组数量。例如,输入`[1,2,3,4,5]`和`target=7`,输出`[[1,2,4],[2,3,4]]`。请给出代码实现,并优化时间复杂度。答案与解析1.答案与解析:代码实现(Python):pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.head,self.tail=Node(0,0),Node(0,0)self.head.next=self.tailself.tail.prev=self.headclassNode:def__init__(self,key,value):self.key=keyself.value=valueself.prev=Noneself.next=Nonedefget(self,key:int)->int:ifkeynotinself.cache:return-1node=self.cache[key]self._remove(node)self._add(node)returnnode.valuedefput(self,key:int,value:int)->None:ifkeyinself.cache:self._remove(self.cache[key])node=Node(key,value)self.cache[key]=nodeself._add(node)iflen(self.cache)>self.capacity:lru=self.tail.prevself._remove(lru)delself.cache[lru.key]def_remove(self,node):delself.cache[node.key]node.prev.next=node.nextnode.next.prev=node.prevdef_add(self,node):node.next=self.head.nextnode.next.prev=nodeself.head.next=nodenode.prev=self.head解析:-哈希表:用于快速查找缓存项,O(1)时间复杂度。-双向链表:维护最近使用顺序,头部为最近使用,尾部为最久未使用。-核心操作:-`get`:先删除节点,再插入头部(更新顺序)。-`put`:若存在则删除原节点,新节点插入头部;若超出容量,删除尾部节点。2.答案与解析:代码实现(Python):pythonfromitertoolsimportpermutationsdefpermute_unique(nums):result=set()forpinpermutations(nums):result.add(tuple(p))return[list(p)forpinresult]解析:-使用`permutations`生成所有排列,通过`set`去重。-`tuple`不可变,适合哈希去重;最终转换为`list`输出。3.答案与解析:代码实现(Python):pythonfromcollectionsimportdefaultdictimportredefword_frequency(s):s=re.sub(r'[^\w\s]','',s).lower()words=s.split()freq=defaultdict(int)forwordinwords:freq[word]+=1returndict(freq)解析:-正则`re.sub`去除标点,`lower`统一大小写。-`defaultdict`自动初始化计数。-时间复杂度:O(n),n为字符串长度。4.答案与解析:前序遍历(递归):pythondefpreorder_recursive(root):ifnotroot:return[]return[root.val]+preorder_recursive(root.left)+preorder_recursive(root.right)非递归(栈):pythondefpreorder_non_recursive(root):ifnotroot:return[]stack,result=[root],[]whilestack:node=stack.pop()result.append(node.val)ifnode.right:stack.append(node.right)ifnode.left:stack.append(node.left)returnresult解析:-递归:简单但栈溢出风险(极端树)。-非递归:用栈模拟系统栈,先右后左压栈(前序为左)。5.答案与解析:代码实现(Python):pythondefthree_sum(nums,target):nums.sort()result=[]n=len(nums)foriinrange(n-2):ifi>0andnums[i]==nums[i-1]:continuel,r=i+1,n-1whilel<r:total=nums[i]+nums[l]+nums[r]iftotal==target:result.append([nums[i],nums[l],nums[r]])whilel<randnums[l]==nums[l+1]:l+=1whilel<randnums[r]==nums[r-1]:r-=1l+=1r-=1eliftotal<target:l+=1else:r-=1returnresult解析:-排序后固定第一个数,双指针查找另外两个数。-跳过重复值避免冗余。-时间复杂度:O(n²)。二、系统设计(共3题,每题25分,总分75分)1.题目(25分):设计一个高并发的短链接生成服务,要求支持秒级生成和解析,并能够统计短链接的访问量。请说明核心架构和关键组件设计。2.题目(25分):设计一个微博的实时推送系统,要求支持百万级用户和动态消息的实时分发。请说明技术选型、数据存储方案和容灾策略。3.题目(25分):设计一个在线音乐播放器的推荐系统,要求根据用户历史行为(播放、收藏)生成个性化推荐。请说明推荐算法、数据存储和系统架构。答案与解析1.答案与解析:核心架构:-短链接生成:使用哈希算法(如Base62)将长URL映射为短码。-分布式存储:Redis或Memcached缓存短码与长URL的映射。-高并发处理:使用负载均衡(如Nginx)和异步队列(如Kafka)处理请求。关键组件:-短码生成器:使用雪崩算法或自增ID+哈希。-缓存层:Redis集群,过期策略避免缓存污染。-访问统计:使用Redis原子操作统计PV/UV。2.答案与解析:技术选型:-消息队列:Kafka/ZeroMQ处理高吞吐消息。-数据存储:MySQL分表+Redis缓存热点数据。-推送服务:WebSocket/Server-SentEvents(SSE)实时推送。数据存储方案:-微博存储:MySQL分表(按时间或用户ID)。-实时索引:Elasticsearch支持全文搜索。-冷热数据分离:使用云存储(如AWSS3)归档旧数据。容灾策略:-多活部署:异地多活,数据同步使用Raft协议。-限流降级:熔断器+降级策略避免雪崩。3.答案与解析:推荐算法:-协同过滤:基于用户/物品相似度(如矩阵分解)。-深度学习:使用DIN/DeepFM嵌入特征组合。-混合推荐:结合热门推荐+个性化推荐。数据存储:-用户行为:MongoDB存储时序数据(播放日志)。-特征工程:HadoopMapReduce/Spark处理用户画像。系统架构:-离线计算:使用SparkMLlib定期生成推荐。-实时推荐:使用Flink/Storm处理实时行为。-前端接口:微服务架构(如SpringCloud)提供API。三、数据库与存储(共2题,每题20分,总分40分)1.题目(20分):设计一个高并发的订单数据库表,要求支持高并发写入和查询,并说明索引优化策略。2.题目(20分):解释MySQL事务的ACID特性,并说明如何解决数据库锁问题(如死锁)。请举例说明。答案与解析1.答案与解析:表设计:sqlCREATETABLEorders(idBIGINTAUTO_INCREMENTPRIMARYKEY,user_idBIGINTNOTNULL,product_idBIGINTNOTNULL,amountDECIMAL(10,2)NOTNULL,statusVARCHAR(20)DEFAULT'pending',create_timeTIMESTAMPDEFAULTCURRENT_TIMESTAMP,INDEXidx_user(user_id),INDEXidx_product(product_id),INDEXidx_status(status),INDEXidx_time(create_time))ENGINE=InnoDB;索引优化:-主键:自增ID,分布式ID生成器(如Snowflake)。-组合索引:`user_id+create_time`加速分用户统计。-分区表:按`create_time`范围分区,水平扩展。2.答案与解析:ACID特性:-原子性(Atomicity):事务不可分割,如扣款+加库存必须同时成功。-一致性(Consistency):事务执行后数据库状态合法,如账户余额不为负。-隔离性(Isolation):并发事务互不干扰,使用锁或MVCC(如InnoDB)。-持久性(Durability):事务提交后永久保存,使用WAL日志。锁问题解决方案:-死锁:如A锁表1,B锁表2,A等待B,B等待A。-解决方法:1.超时锁:设置最大等待时间(如MySQL`lock_timeout`)。2.顺序执行:规定事务访问资源顺序。3.死锁检测:数据库自动检测并回滚其中一个事务。四、分布式与中间件(共2题,每题15分,总分30分)1.题目(15分):解释分布式事务的CAP理论,并说明如何实现分布式事务(如2PC、TCC)。请比较优缺点。2.题目(15分):设计一个高可用的消息队列(如Kafka),说明如何保证消息不丢失、不重复。请给出具体策略。答案与解析1.答案与解析:CAP理论:-一致性(Consistency):所有节点数据实时同步。-可用性(Availability):节点故障仍可服务。-分区容错性(PartitionTolerance):网络分区下系统仍运行。-无法同时满足:优先选择CA(如数据库)或AP(如Kafka)。分布式事务实现:-2PC(两阶段提交):1.准备阶段:协调者询问所有参与者是否准备就绪。2.提交阶段:全就绪则提交,否则中止。-优点:强一致性。-缺点:阻塞、单点故障。-TCC(补偿事务):1.尝试阶段:按顺序执行所有操作。2.确认/补偿阶段:成功则确认,失败则补偿。-优点:灵活。-缺点:实现复杂。2.答案与解析:消息不丢失策略:-生产者端:设置`acks=all`(Kafka要求Broker确认)。-网络传输:使用TCP协议,生产者重试机制。消息不重复策略:-幂等性设计:1.消息去重表(Redis/MongoDB)。2.消息幂等ID(如业务ID)。-消费者端:先处
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年桂林市象山区网格员招聘笔试备考试题及答案解析
- 本单元复习与测试教学设计初中综合实践活动七年级第二学期沪科版(贵州专用)
- 第4课 诗人贺知章教学设计-2025-2026学年小学地方、校本课程浙教版(2021)人·自然·社会
- 江苏省江阴市山观中学2015-2016学年初二音乐教学设计
- 2026广东佛山市第二人民医院服务中心招聘18人考试模拟试题及答案解析
- 2026厦门银行龙岩分行社会招聘考试备考试题及答案解析
- 2026江苏泰州市泰兴市珊瑚镇人民政府招聘劳动保障协理员1人考试参考题库及答案解析
- 2026江苏宿迁市湖滨新区卫生室人员补充招聘12人笔试备考试题及答案解析
- 2026四川广安市卫健委直属单位急需紧缺人才招聘22人考试备考试题及答案解析
- 2026恒丰银行福州分行社会招聘6人考试模拟试题及答案解析
- (二模)济南市2026届高三第二次模拟考试历史试卷(含答案)
- 14 驿路梨花 教学课件2025-2026学年统编版语文七年级下册
- 2026年党校在职研究生政治理论通关试题库及答案详解【全优】
- 2026年上海市静安区高三二模政治试卷(含答案)
- 2025-2026学年北京市西城外国语学校七年级下学期期中数学试题(含答案)
- 2026年度石家庄金融职业学院春季招聘笔试模拟试题及答案解析
- 2026年河南中烟工业有限责任公司招聘大学生176人考试参考题库及答案解析
- 可持续性采购制度
- 国企行测常识900题带答案
- AQ 3067-2026 《化工和危险化学品生产经营企业重大生产安全事故隐患判定准则》解读
- 分销商奖惩制度
评论
0/150
提交评论