版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年互联网大厂(BAT/字节/美团)面试经验分享一、编程能力测试(共5题,每题10分,总分50分)题目1:编写一个函数,输入一个正整数`n`,返回一个列表,其中包含从`1`到`n`的所有奇数。要求时间复杂度为O(n),空间复杂度为O(1)。答案与解析:pythondefodd_numbers(n):return[iforiinrange(1,n+1,2)]解析:-使用`range(1,n+1,2)`生成从1到n的奇数序列,步长为2,避免遍历偶数,时间复杂度为O(n),空间复杂度为O(1)(因为生成列表的空间不计入额外空间)。题目2:给定一个字符串`s`,统计其中每个字符出现的次数,并返回一个字典。例如,输入`s="hello"`,输出`{'h':1,'e':1,'l':2,'o':1}`。答案与解析:pythondefcount_chars(s):count={}forcharins:count[char]=count.get(char,0)+1returncount解析:-使用字典`count`记录字符出现次数,`count.get(char,0)`确保未出现过的字符默认计数为0,时间复杂度为O(n),空间复杂度为O(m)(m为字符集大小)。题目3:实现一个函数,输入一个链表的头节点`head`,返回链表的反转结果。假设链表节点定义如下:pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=next答案与解析:pythondefreverse_list(head):prev=Nonecurrent=headwhilecurrent:next_node=current.nextcurrent.next=prevprev=currentcurrent=next_nodereturnprev解析:-使用三指针法反转链表:`prev`为前一个节点,`current`为当前节点,`next_node`为下一个节点。通过逐个反转节点指向,最终`prev`成为新头节点,时间复杂度为O(n),空间复杂度为O(1)。题目4:给定一个数组`nums`和一个目标值`target`,返回数组中和为目标值的三元组数量。例如,输入`nums=[-1,0,1,2]`,`target=0`,输出`2`((-1,0,1),(-1,2,1))。答案与解析:pythondefthree_sum(nums,target):nums.sort()n=len(nums)count=0foriinrange(n-2):ifi>0andnums[i]==nums[i-1]:continueleft,right=i+1,n-1whileleft<right:total=nums[i]+nums[left]+nums[right]iftotal==target:count+=1left+=1right-=1whileleft<rightandnums[left]==nums[left-1]:left+=1whileleft<rightandnums[right]==nums[right+1]:right-=1eliftotal<target:left+=1else:right-=1returncount解析:-先排序数组,使用双指针法:固定一个数,再用左右指针分别向中间移动,统计满足条件的三元组。时间复杂度为O(n²),空间复杂度为O(1)。题目5:实现一个简单的LRU(最近最少使用)缓存,支持`get`和`put`操作。假设缓存容量为`capacity`。答案与解析: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)解析:-使用字典`cache`存储键值对,列表`order`记录访问顺序。`get`操作将键移到末尾表示最近使用,`put`操作先移除最久未使用的键(如果超出容量),然后添加新键。时间复杂度为O(1),空间复杂度为O(capacity)。二、系统设计测试(共3题,每题20分,总分60分)题目1:设计一个高并发的短链接生成系统,要求:1.链接长度尽可能短(如`/abc123`);2.支持高并发访问(如每秒百万请求);3.支持链路统计(如点击次数)。答案与解析:1.短链接生成:-使用62进制(a-z,A-Z,0-9)将ID映射为短字符串,如`100`映射为`2yuv`。-使用分布式ID生成器(如Twitter的Snowflake算法)确保全局唯一。2.高并发支持:-使用Redis缓存热点链路,减少数据库访问;-数据库分片存储链路信息,如按ID哈希分片;-使用异步写入和消息队列(如Kafka)削峰填谷。3.链路统计:-使用Redis计数器或数据库事务统计点击次数;-通过日志分析或埋点实时监控。题目2:设计一个高并发的微博点赞系统,要求:1.支持实时点赞/取消点赞;2.支持按用户/微博统计点赞数;3.支持消息推送。答案与解析:1.数据结构:-微博表:`微博ID`、`用户ID`、`点赞数`;-点赞表:`微博ID`、`用户ID`、`时间戳`(用于反序列化锁)。2.高并发支持:-使用Redis事务或Lua脚本确保点赞操作的原子性;-微博ID和用户ID使用分布式ID生成器;-点赞数使用Redis计数器实现实时更新。3.消息推送:-使用WebSocket或Server-SentEvents(SSE)实时推送点赞事件;-通过消息队列(如RabbitMQ)异步更新用户动态。题目3:设计一个分布式计数器系统,要求:1.支持全局唯一计数;2.支持高并发读写;3.支持分布式部署。答案与解析:1.数据结构:-使用Redis的`INCR`命令实现原子计数;-或使用分布式锁+数据库事务保证一致性。2.高并发支持:-使用Redis集群或分片存储计数器;-通过本地缓存(如GuavaCache)减少远程调用。3.分布式部署:-每个节点独立计数,最后汇总(如使用ZooKeeper或Etcd);-或使用Paxos/Raft算法实现一致性计数。三、数据库与缓存(共2题,每题15分,总分30分)题目1:设计一个用户签到系统,要求:1.支持每日唯一签到;2.支持连续签到统计;3.支持Redis缓存优化。答案与解析:1.数据结构:-用户表:`用户ID`、`连续签到天数`;-签到表:`用户ID`、`日期`、`签到状态`(唯一索引)。2.Redis缓存:-使用`SETNX`确保每日唯一签到;-使用`ZADD`存储连续签到天数排名;-通过过期缓存减少数据库访问。题目2:设计一个商品推荐系统,要求:1.支持基于用户的协同过滤;2.支持基于商品的相似度计算;3.支持Redis缓存。答案与解析:1.协同过滤:-计算用户相似度(如余弦相似度);-推荐未交互但相似用户喜欢的商品。2.商品相似度:-使用Jaccard相似度或TF-IDF计算商品特征相似度;-使用矩阵分解(如SVD)降维推荐。3.Redis缓存:-缓存用户相似度矩阵;-缓存商品特征向量;-使用分页缓存热门推荐。四、分布式与微服务(共2题,每题15分,总分30分)题目1:设计一个分布式锁,要求:1.支持高并发;2.支持分布式部署;3.支持可重入。答案与解析:1.Redis分布式锁:-使用`SET`命令加锁,`NX`和`PX`选项确保原子性;-使用`Lua`脚本防止锁过期时删除已持有的锁。2.可重入支持:-使用`UNLOCK`时传递唯一值(如UUID);-每次加锁时记录计数器,解锁时递减。题目2:设计一个分布式事务解决方案,要求:1.支持强一致性;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年国开电大矿井运输提升(专)形考试题(得分题)及答案详解(基础+提升)
- 2026年监理工程师之水利工程目标控制通关试题库完整答案详解
- 2026年初级经济师之初级经济师财政税收模拟题库讲解及答案详解【全优】
- 2025云南红河州红产林业发展有限公司社会招聘2人笔试历年难易错考点试卷带答案解析
- 2025云南省交通投资建设集团有限公司保山管理处招聘70人笔试历年难易错考点试卷带答案解析
- 2025云南楚雄州楚雄市城乡建设投资集团有限公司招聘2名中层管理人员招聘笔试历年难易错考点试卷带答案解析
- 2025中远海运发展股份有限公司招聘1人(上海)笔试历年典型考点题库附带答案详解
- 2025中煤晋中能源化工有限责任公司招聘3人笔试历年常考点试题专练附带答案详解
- 2025中垦牧(陕西)牧业有限公司招聘15人笔试历年常考点试题专练附带答案详解2套
- 清洁剂生产安全操作工作手册
- 水利水电工程单元工程施工质量检验表与验收表(SLT631.5-2025)
- 市第二中学学生餐厅公寓楼建设项目项目建议书
- JTS-131-2012水运工程测量规范
- DZ∕T0312-2018 非金属矿行业绿色矿山建设规范(正式版)
- 危大工程安全监理实施细则
- 等效声级计算表
- 电气施工方案罗湖二线插花地项目
- AS9120B程序文件一整套
- 门脉高压性消化道出血的介入治疗
- 项目监理机构人员配置标准(试行)
- VarianVS氦质谱检漏仪简介课件
评论
0/150
提交评论