版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年互联网大厂校招笔试仿真题解析一、编程基础(3题,每题10分,共30分)背景说明:互联网大厂校招编程题通常考察扎实的数据结构与算法基础,注重代码的效率与可读性。以下题目结合实际业务场景,测试考生的编程能力。1.题目:描述:给定一个无重复元素的整数数组`nums`和一个目标值`target`,请找出数组中和为目标值`target`的两个数,并返回它们的索引。你可以假设每个输入都只有一个解,且不能重复使用同一个元素。示例:输入:`nums=[2,7,11,15]`,`target=9`输出:`[0,1]`(因为`nums[0]+nums[1]=2+7=9`)要求:-时间复杂度优于O(n²)-代码需包含必要的注释答案:pythondeftwo_sum(nums,target):创建哈希表存储数值与索引的映射num_to_index={}fori,numinenumerate(nums):complement=target-num#计算目标值与当前值的差值ifcomplementinnum_to_index:return[num_to_index[complement],i]#找到匹配的索引num_to_index[num]=i#未找到,将当前值加入哈希表return[]#无解时返回空列表(题目已说明有解,可省略)解析:-时间复杂度分析:-遍历数组一次,哈希表查找与插入的平均时间复杂度为O(1),整体复杂度为O(n)。-比起暴力枚举(O(n²))更高效。-空间复杂度分析:-哈希表存储n个元素,空间复杂度为O(n)。-关键点:-哈希表用于快速查找差值`target-num`,避免重复计算。-题目要求“不能重复使用同一个元素”,因此不使用相同的索引。2.题目:描述:请实现一个函数`defis_valid(s:str)->bool`,用于判断一个字符串`s`是否为有效的括号组合。有效括号组合需满足:-左括号必须用相同类型的右括号闭合。-左括号必须以正确的顺序闭合。-每个右括号都有一个对应的相同类型的左括号。示例:输入:`s="()"`输出:`True`输入:`s="(]"`输出:`False`要求:-使用栈(Stack)实现,代码需包含必要注释答案:pythondefis_valid(s:str)->bool:创建括号映射表bracket_map={'(':')','{':'}','[':']'}初始化空栈stack=[]forcharins:ifcharinbracket_map:stack.append(char)#遇到左括号,压入栈else:ifnotstack:returnFalse#栈为空但遇到右括号,无效top=stack.pop()#弹出栈顶左括号ifbracket_map[top]!=char:returnFalse#括号类型不匹配returnnotstack#栈为空时有效解析:-核心逻辑:-左括号压入栈,右括号时检查栈顶是否匹配。-栈为空时遇到右括号或栈顶括号不匹配,直接返回`False`。-时间复杂度分析:-每个字符遍历一次,操作均为O(1),整体复杂度为O(n)。-空间复杂度分析:-最坏情况下栈存储所有左括号,空间复杂度为O(n)。3.题目:描述:给定一个排序数组`nums`,其中元素的范围在`1`到`n`(n为数组长度),且数组中只有一个数字重复了`n-1`次。请找出这个重复的数字。示例:输入:`nums=[1,3,4,2,2]`输出:`2`要求:-不允许修改数组,不使用额外空间答案:pythondeffind_duplicate(nums):快慢指针法(Floyd判圈)slow=nums[0]fast=nums[0]第一次相遇whileTrue:slow=nums[slow]fast=nums[nums[fast]]ifslow==fast:break第二次相遇,确定入口slow=nums[0]whileslow!=fast:slow=nums[slow]fast=nums[fast]returnslow解析:-核心逻辑:-利用“重复`n-1`次”导致数组形成环形链表,通过快慢指针检测。-第一次相遇时,`slow`和`fast`在环内某处;第二次相遇时,`slow`从头开始,`fast`继续移动,两者将在入口处相遇。-时间复杂度分析:-第一次相遇:O(n),第二次相遇:O(n),整体O(n)。-空间复杂度分析:-不使用额外空间,仅用常数额外变量,空间复杂度为O(1)。二、系统设计(2题,每题15分,共30分)背景说明:互联网大厂校招系统设计题考察考生解决实际业务问题的能力,涉及高并发、高可用等场景。以下题目结合当前热门的短链与消息推送服务设计。1.题目:描述:设计一个短链接(TinyURL)服务,要求:-输入一个长链接,输出一个短链接。-短链接需保证唯一性,且能被反向解析回原链接。-系统需支持高并发请求。示例:输入:`long_url="/very/long/path/to/resource"`输出:`/abc123`(短链接部分可自定义)要求:-简述设计思路,包括数据结构、算法及存储方式。答案:设计思路:1.数据结构:-使用哈希表(如Redis)存储`short_key:long_url`映射,实现O(1)查询。-短链接部分使用自增ID或随机字符串(如Base62编码:a-z,A-Z,0-9)。2.算法:-生成短链接时,将ID转为Base62字符串(如`100`→`cv`)。-反向解析时,将短链接字符串转为ID,查询哈希表获取原链接。3.存储方式:-短链接部分可存储在分布式缓存(如RedisCluster),支持高并发读写。-原链接可持久化到数据库(如MySQLCluster),防止服务重启数据丢失。伪代码示例:pythondefgenerate_short_url(long_url):生成唯一ID(自增或随机)unique_id=generate_unique_id()Base62编码short_key=encode_base62(unique_id)存储redis.set(short_key,long_url)returnf"/{short_key}"defresolve_short_url(short_key):long_url=redis.get(short_key)returnlong_urlor"URLnotfound"解析:-关键点:-短链接生成需保证唯一性,可使用分布式ID生成器(如Snowflake)。-Base62编码可将长ID压缩为短字符串(如`100`→`cv`),便于传输。-高并发场景下,RedisCluster支持分片存储,MySQLCluster保证数据一致性。2.题目:描述:设计一个消息推送服务,要求:-支持多端推送(Web、iOS、Android),消息可个性化。-系统需保证消息的可靠投递(至少一次交付)。-支持高并发消息下发。要求:-简述设计思路,包括消息队列、存储方式及容错机制。答案:设计思路:1.消息队列:-使用Kafka或RabbitMQ作为消息中间件,支持解耦与削峰填谷。-消息格式:`{"user_id":"...","device_type":"...","msg_content":"..."}`。2.存储方式:-消息状态存储在Redis中(如`pending:msg_id:status`),记录投递状态(`pending`/`sent`/`failed`)。-原始消息持久化到数据库(如PostgreSQL),支持重试与补偿。3.可靠投递:-消息推送后标记为`pending`,推送成功改为`sent`,失败记录`failed`并触发重试。-重试机制:使用定时任务(如Celery)或延迟队列(如RedisDelayedQueue)重试。4.高并发支持:-消息队列分片(如KafkaPartition),每个分片由不同消费者处理。-消息去重:通过`user_id`+`msg_id`索引避免重复推送。伪代码示例:python消息生产者defproduce_message(user_id,device_type,msg_content):message={"user_id":user_id,"device_type":device_type,"msg_content":msg_content}kafka.send("message_topic",message)消息消费者defconsume_message():formsginkafka.receive("message_topic"):redis.set(f"pending:{msg['msg_id']}","pending")send_to_device(msg)#推送消息ifsuccess:redis.set(f"pending:{msg['msg_id']}","sent")else:redis.set(f"pending:{msg['msg_id']}","failed")触发重试schedule_retry(msg)解析:-关键点:-消息队列解耦服务端与客户端,支持水平扩展。-状态存储(Redis)实现“至少一次交付”,失败重试保证可靠性。-分片与去重机制优化高并发下的性能与一致性。三、综合应用(1题,20分)背景说明:综合应用题考察考生结合业务场景解决问题的能力,涉及数据统计与优化。以下题目针对电商场景的实时热门商品推荐。1.题目:描述:某电商平台需要实时统计用户点击的热门商品,要求:-输入:每秒到达的点击流(如`{"user_id":1,"item_id":"a"}`)。-输出:当前窗口内(如5秒)点击次数最多的3个商品。-要求:-支持高并发输入(每秒上万条)。-优先返回高频商品(如`a>b>c`)。要求:-简述设计思路,包括数据结构、算法及优化方案。答案:设计思路:1.数据结构:-使用Redis的`SortedSet`(有序集合),键为`hot_items:current_window`,成员为`item_id`,分数为点击次数。-每次点击时,`ZINCRBY`增加对应`item_id`的分数。2.算法:-每隔5秒,使用`ZRANGEhot_items:current_window02WITHSCORES`获取前3名商品。-使用`EXPIRE`设置过期时间,自动清理旧窗口数据。3.优化方案:-消息队列(如Kafka)缓冲输入,降低Redis压力。-批量更新Redis(如每秒聚合100条点击,再`ZADD`)。伪代码示例:python消息处理逻辑defprocess_click(user_id,item_id):redis.zincrby("hot_items:current_window",1,item_id)5秒后清理旧数据redis.expire("hot_items:current_window",5)获取热门商品defget_top_items():returnredis.zrange("hot_items:current_window",0,2,withscores=True)解析:-关键点:-`SortedSet`支持按分数排序,高效获取前3名。-消息队列缓冲输入,Redis批量更新减少请求频率。-过期机制保证实时性,避免内存溢出。答案和解析编程基础:1.答案:pythondeftwo_sum(nums,target):num_to_index={}fori,numinenumerate(nums):complement=target-numifcomplementinnum_to_index:return[num_to_index[complement],i]num_to_index[num]=i解析:哈希表实现O(n)时间复杂度,避免暴力枚举的O(n²)。2.答案:pythondefis_valid(s:str)->bool:bracket_map={'(':')','{':'}','[':']'}stack=[]forcharins:ifcharinbracket_map:stack.append(char)else:ifnotstack:returnFalsetop=stack.pop()ifbr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年华中科技大学同济医学院附属同济医院医护人员招聘笔试备考试题及答案详解
- 2026年丽水市人民医院医护人员招聘考试参考题库及答案详解
- 2026年南京大学医学院附属鼓楼医院医护人员招聘考试备考试题及答案详解
- 2026年中国人民解放军169医院医护人员招聘笔试参考试题及答案详解
- 2026年芜湖市中医医院医护人员招聘笔试参考题库及答案详解
- 2026年宿迁市中医院医护人员招聘笔试备考题库及答案详解
- 2026年首都医科大学附属北京朝阳医院医护人员招聘考试参考试题及答案详解
- 2026年永州市中医院医护人员招聘考试参考题库及答案详解
- 2026年衢州市第三医院医护人员招聘考试参考试题及答案详解
- 2026年秦皇岛市第一医院医护人员招聘笔试备考题库及答案详解
- 中国海军军舰课件
- 销售员安全试题及答案
- 血液透析不同抗凝剂的应用及护理
- 高压电危险及安全防护课件
- 语文教师书写《识字写字教学》教育教研讲座教学培训课件
- 数字经济时代的营业性构造演进与商主体体系创新研究-记录
- 《铁路信号与通信设备》课件
- 儿童绘本故事《蚂蚁搬家》
- 建筑工程英语英汉对照工程词汇
- 2015-2024年十年高考化学真题分类汇编专题77 实验设计与评价-装置图型(解析版)
- DB43T 876.2-2014 高标准农田建设 第2部分:土地平整
评论
0/150
提交评论