版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年互联网公司技术岗面试预测模拟题一、编程实现题(共3题,每题15分,总分45分)背景说明:题目涉及常见互联网业务场景,考察算法设计、数据结构应用及代码能力,适合前端、后端、算法岗。1.(15分)题目:实现一个LRU(LeastRecentlyUsed)缓存,支持get和put操作。缓存容量为`capacity`,使用哈希表+双向链表实现,要求时间复杂度为O(1)。要求:-哈希表存储键值对,快速定位缓存项。-双向链表维护使用顺序,头部为最近使用,尾部为最久未使用。-输出关键数据结构设计及核心代码。答案与解析:pythonclassNode: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=Node(),Node()self.head.next=self.tailself.tail.prev=self.headdef_add_node(self,node:Node):node.prev=self.headnode.next=self.head.nextself.head.next.prev=nodeself.head.next=nodedef_remove_node(self,node:Node):prev_node=node.prevnext_node=node.nextprev_node.next=next_nodenext_node.prev=prev_nodedef_move_to_head(self,node:Node):self._remove_node(node)self._add_node(node)def_pop_tail(self)->Node:res=self.tail.prevself._remove_node(res)returnresdefget(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=Node(key,value)self.cache[key]=newNodeself._add_node(newNode)iflen(self.cache)>self.capacity:tail=self._pop_tail()delself.cache[tail.key]else:node.value=valueself._move_to_head(node)解析:-双向链表维护顺序:头部为最近使用(`head`),尾部为最久未使用(`tail`)。每次`get`或`put`时,将节点移至头部;若超出容量,移除尾部节点。-哈希表实现O(1)查找:`cache`存储键到节点的映射,避免遍历链表。-关键操作:-`_add_node`:添加节点至头部。-`_remove_node`:移除节点。-`_move_to_head`:将节点移至头部。-`_pop_tail`:移除并返回尾部节点。2.(15分)题目:给定一个包含`n`个整数的数组`nums`,返回所有和为`target`的不重复三元组。例如:`nums=[-1,0,1,2]`,`target=0`,输出`[[-1,0,1]]`。要求:-不能有重复的三元组(如`[-1,0,1]`和`[1,0,-1]`视为相同)。-时间复杂度尽可能低,使用双指针法。答案与解析:pythondefthreeSum(nums:List[int])->List[List[int]]:nums.sort()n=len(nums)res=[]foriinrange(n):ifi>0andnums[i]==nums[i-1]:continuetarget=-nums[i]left,right=i+1,n-1whileleft<right:s=nums[left]+nums[right]ifs==target:res.append([nums[i],nums[left],nums[right]])whileleft<rightandnums[left]==nums[left+1]:left+=1whileleft<rightandnums[right]==nums[right-1]:right-=1left+=1right-=1elifs<target:left+=1else:right-=1returnres解析:-排序去重:先排序数组,避免重复三元素。遍历时跳过相同元素(如`i`与前一个`nums[i]`相同)。-双指针法:对于每个`nums[i]`,使用`left`和`right`分别指向`i+1`和`n-1`,计算三数和:-相等:加入结果,并移动指针跳过重复值。-小于`target`:左指针右移。-大于`target`:右指针左移。3.(15分)题目:实现一个函数`maxProfit`,计算买卖股票的最佳时机,假设只能进行一次买卖(即买入后卖出)。若没有利润,返回0。要求:-时间复杂度O(n),空间复杂度O(1)。-示例:`prices=[7,1,5,3,6,4]`,输出`5`(买入1,卖出6)。答案与解析:pythondefmaxProfit(prices:List[int])->int:min_price=float('inf')max_profit=0forpriceinprices:min_price=min(min_price,price)profit=price-min_pricemax_profit=max(max_profit,profit)returnmax_profit解析:-贪心算法:维护两个变量:-`min_price`:记录当前最小买入价。-`max_profit`:记录最大利润。-遍历数组:-更新`min_price`为当前最小值。-计算`profit=price-min_price`,更新`max_profit`。-最终返回`max_profit`:若无利润(所有价格递减),返回0。二、系统设计题(共2题,每题20分,总分40分)背景说明:题目聚焦高并发、高可用场景,适合后端、架构岗,考察分布式系统设计能力。1.(20分)题目:设计一个高并发的短链接系统(如`tinyurl`),要求:-支持将长链接转换为短链接,并能反向解析。-高并发场景下(百万级请求/秒),保证响应时间<200ms。-支持自定义短链接前缀。要求:-说明系统架构,关键组件及选型。-描述核心流程及数据存储方案。答案与解析:系统架构:1.接入层(Nginx/HAProxy):负载均衡,防DDoS攻击。2.API服务(微服务集群):处理请求,使用Redis缓存热点数据。3.短链接生成服务:采用分布式ID生成器(如TwitterSnowflake)。4.数据存储:Redis(缓存短链接映射),MySQL(持久化)。5.CDN加速:静态短链接(如`/abcd`)直接通过CDN返回,降低后端压力。核心流程:-生成短链接:1.接入层将请求转发至API服务。2.检查Redis缓存,若存在则直接返回。3.若不存在,生成唯一ID(如`abcd`),存入Redis(过期1小时),并写入MySQL。4.返回短链接。-解析短链接:1.接入层解析URL,提取ID。2.查询Redis缓存,命中则直接返回长链接。3.若未命中,查询MySQL,返回长链接并缓存。选型说明:-ID生成器:Snowflake算法(41位时间戳+10位机器ID+12位序列号),确保全局唯一且高并发。-缓存策略:Redis热点数据缓存,MySQL持久化保证一致性。-高并发优化:-API服务集群化部署,限流降级。-MySQL读写分离,分库分表(按ID哈希)。2.(20分)题目:设计一个实时消息推送系统(如微信/抖音消息),要求:-支持全球用户(千万级),消息延迟<100ms。-支持离线推送(用户不在线时缓存消息)。-支持消息分批发送(如每10条/秒)。要求:-说明系统架构,关键组件及选型。-描述消息存储及分发策略。答案与解析:系统架构:1.接入层(Nginx/QUIC):全球CDN节点分发请求,减少延迟。2.消息队列(Kafka/RabbitMQ):解耦服务,削峰填谷。3.消息存储:Redis(实时消息缓存),MySQL(离线消息)。4.推送服务:-在线推送:WebSocket/Server-SentEvents(SSE)。-离线推送:通过App启动/后台任务拉取。5.调度器:定时分批发送离线消息。核心流程:-用户上线:1.WebSocket连接,实时推送消息。2.消息队列接收推送请求,写入Redis。-用户离线:1.消息写入Kafka,记录用户ID和消息。2.后台任务定期从Kafka读取,存入MySQL(带时间戳)。3.用户下次启动时拉取离线消息。-分批发送:1.调度器每10ms处理一批消息(如10条)。2.使用Redis发布订阅模式(PUB/SUB)触发推送。选型说明:-Kafka:高吞吐,支持离线消息重试。-Redis:低延迟缓存,减少数据库压力。-WebSocket:实时双向通信,减少HTTP轮询。-优化策略:-全球负载均衡:使用Cloudflare/AWSGlobalAccelerator。-消息去重:RedisSETNX确保消息不重复发送。三、数据库与存储题(共1题,20分)背景说明:题目考察SQL优化及NoSQL应用,适合后端、数据库岗。1.(20分)题目:场景:某电商系统每天产生百万级订单,订单表`orders`字段包括:`order_id`(主键)、`user_id`、`product_id`、`total_amount`、`status`(待支付/已支付)、`create_time`。问题:1.如何设计索引以优化以下查询?-查询某用户最近1天已支付的订单。-查询某商品的总销售额(按月统计)。2.若订单数据量增长至1TB,如何优化分库分表方案?要求:-SQL索引设计及优化方案。-分库分表策略。答案与解析:1.索引设计:-查询某用户最近1天已支付的订单:sql--索引:user_id+status+create_timeCREATEINDEXidx_user_status_timeONorders(user_id,status,create_time);--查询语句:SELECTFROMordersWHEREuser_id=?ANDstatus='paid'ANDcreate_time>=NOW()-INTERVAL1DAY;解析:先按`user_id`和`status`过滤,再按`create_time`快速查找最近1天数据。-查询某商品的总销售额(按月统计):sql--索引:product_id+create_timeCREATEINDEXidx_product_timeONorders(product_id,create_time);--查询语句:SELECTproduct_id,SUM(total_amount)AStotal_salesFROMordersWHEREproduct_id=?ANDcreate_time>='2023-01-01'ANDcreate_time<'2023-02-01'GROUPBYproduct_id;解析:按`product_id`和`create_time`(按月分区)加速范围统计。2.分库分表方案:-分库:按业务线分库,如订单库、商品库。-分表:按时间范围分表(水平切分),如每日一个分表(`orders_20230101`)。sql--表名:orders_{date}CREATETABLEorders_20230101LIKEorders;-分表键:`create_time`的日期部分(如`YYYYMMDD`)。-路由策略:-哈希分表:`order_id%N`。-时间分表:自定义函数路由(如`date_format(create_time,'%Y%m%d')`)。-优化:-使用ShardingSphere/Mycat实现动态路由。-关联表需同步分表(如`order_items`按`order_id`关联)。四、综合应用题(共1题,15分)背景说明:考察工程实践及问题解决能力,适合全栈、运维岗。1.(15分)题目:场景:某外卖平台发现用户下单后,部分订单在1分钟内被取消。如何设计一个监控系统,实时检测异常取消行为(如10%订单在1分钟内取消),并触发告警?要求:-说明系统架构及关键组件。-描述数据采集及告警逻辑。答案与解析:系统架构:1.数据采集:-订单服务通过Kafka发送
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年青海省(13所)马克思主义基本原理概论期末考试题附答案解析
- 2025年中国计量大学单招职业倾向性测试题库带答案解析
- 2025年兴县招教考试备考题库含答案解析(必刷)
- 2025年嘉禾县幼儿园教师招教考试备考题库及答案解析(必刷)
- 2025年枣庄学院马克思主义基本原理概论期末考试模拟题带答案解析
- 2024年珙县幼儿园教师招教考试备考题库附答案解析(必刷)
- 2024年海南艺术职业学院马克思主义基本原理概论期末考试题含答案解析(夺冠)
- 2025年山西老区职业技术学院马克思主义基本原理概论期末考试模拟题附答案解析(必刷)
- 2024年疏勒县幼儿园教师招教考试备考题库含答案解析(夺冠)
- 2025年宁夏幼儿师范高等专科学校马克思主义基本原理概论期末考试模拟题带答案解析(必刷)
- 新工会考试试题题库工会考试试题题库及答案解析
- 企业用车制度规范标准
- 2025-2030中国道路标志漆市场运营态势分析与全面深度解析研究报告
- 采购专业知识培训课件
- 《危险化学品安全法》解读与要点
- 电力网络安全培训教学课件
- 网络布线施工技术要求
- 护理前沿知识课件
- 上海市徐汇区上海中学2025-2026学年高三上学期期中考试英语试题(含答案)
- 2026年关于春节放假通知模板9篇
- 四川护理职业学院《生物化学》2024-2025 学年第一学期期末试卷
评论
0/150
提交评论