版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年阿里巴巴集团面试笔试题及答案解析一、编程题(共3题,每题20分,总分60分)1.题1(20分):编写一个函数,实现将一个32位无符号整数的二进制表示翻转,并返回翻转后的整数。例如,输入`12345`,其二进制表示为`11000011010001011001`,翻转后为`10010100101100000110`,转换回十进制为`268435456`。要求:-不能使用内置的翻转函数或库。-时间复杂度不超过O(n)。2.题2(20分):给定一个包含重复元素的数组,找出所有可能的子集,但每个子集不能包含重复的元素。例如,输入`[1,2,2]`,输出应为`[[],[1],[1,2],[1,2,2],[2],[2,2]]`。要求:-子集的顺序不重要。-不能使用递归,必须使用迭代方法。3.题3(20分):设计一个LRU(LeastRecentlyUsed)缓存,支持以下操作:-`get(key)`:获取键`key`对应的值,如果不存在返回-1。-`put(key,value)`:插入或更新键值对。如果缓存已满,则删除最久未使用的元素。要求:-时间复杂度为O(1)。-可以使用哈希表和双向链表实现。二、算法题(共4题,每题15分,总分60分)1.题1(15分):假设你正在爬楼梯,每次可以走1、2或3步。给定楼梯总数`n`,计算爬到顶部的总方法数。例如,`n=3`时,方法有`[1,1,1],[1,2],[2,1],[1,1,2],[2,2],[3]`,共6种。要求:-不能使用递归,必须使用动态规划。2.题2(15分):给定一个字符串`s`,判断它是否是有效的括号字符串,其中括号类型包括`()`、`[]`、`{}`。例如,输入`"()[]{}"`为真,`"(]"`为假。要求:-可以使用栈结构。3.题3(15分):给定一个整数数组,返回其中第三大的数。如果不存在第三大的数,返回最大数。例如,输入`[3,2,1,5,6,4]`,输出`5`;输入`[1,2]`,输出`2`。要求:-不能使用排序。4.题4(15分):设计一个算法,统计一个字符串中所有唯一字符的最长连续子串长度。例如,输入`"abcabcbb"`,最长无重复字符子串为`"abc"`,长度为3。要求:-时间复杂度为O(n)。三、系统设计题(共2题,每题25分,总分50分)1.题1(25分):设计一个高并发的短链接系统。要求:-输入任意长度的URL,输出固定长度的短链接(如6位随机字母数字组合)。-支持高并发访问(如每秒百万次请求)。-支持点击跳转,统计点击量。要求:-说明系统架构、数据存储方案、高并发解决方案。2.题2(25分):设计一个实时推荐系统,用于电商场景。要求:-输入用户浏览历史和商品信息,实时推荐可能感兴趣的5个商品。-推荐逻辑考虑用户偏好、商品热度、新度等因素。-支持离线训练和在线更新。要求:-说明数据结构、推荐算法、系统架构。四、综合题(共3题,每题10分,总分30分)1.题1(10分):阿里巴巴的“双11”大促期间,系统面临极高的并发压力。请简述你会如何设计系统以应对这一挑战?(可涉及架构、缓存、数据库优化等方面)2.题2(10分):假设你负责一个电商平台的搜索功能,用户输入关键词后需要快速返回相关商品。请说明你会如何优化搜索性能?(可涉及索引、缓存、分词等方面)3.题3(10分):谈谈你对“技术驱动业务”的理解,并结合阿里巴巴的某个业务场景举例说明。答案解析一、编程题1.题1(翻转32位无符号整数):答案:pythondefreverse_bits(n):res=0for_inrange(32):res=(res<<1)|(n&1)n>>=1returnres&0xFFFFFFFF#返回32位无符号整数解析:-使用位操作逐位翻转:先取最低位,再左移res,右移n。-最后使用`0xFFFFFFFF`截取32位,避免负数问题。-时间复杂度O(1),因为固定32次操作。2.题2(子集去重):答案:pythondefsubsets_with_dup(nums):nums.sort()#先排序去重res=[[]]start=0foriinrange(len(nums)):ifi>0andnums[i]==nums[i-1]:start=endend=len(res)forjinrange(start,end):res.append(res[j]+[nums[i]])returnres解析:-排序后相同元素相邻,可跳过重复分支。-使用`start`和`end`记录当前层的新子集范围,避免重复。-时间复杂度O(n2^n)。3.题3(LRU缓存):答案: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.headdefget(self,key:int)->int:ifkeynotinself.cache:return-1node=self.cache[key]self._move_to_head(node)returnnode.valuedefput(self,key:int,value:int)->None:ifkeyinself.cache:node=self.cache[key]node.value=valueself._move_to_head(node)else:node=Node(key,value)self.cache[key]=nodeself._add_node(node)iflen(self.cache)>self.capacity:lru=self.tail.prevself._remove_node(lru)delself.cache[lru.key]def_move_to_head(self,node):self._remove_node(node)self._add_node(node)def_add_node(self,node):node.prev=self.headnode.next=self.head.nextself.head.next.prev=nodeself.head.next=nodedef_remove_node(self,node):prev,next=node.prev,node.nextprev.next=nextnext.prev=prev解析:-使用双向链表和哈希表实现:链表维护访问顺序,哈希表O(1)查找。-`get`操作将节点移到头部,`put`操作先插入再判断是否超出容量,若超出则删除尾节点。二、算法题1.题1(爬楼梯):答案:pythondefclimbStairs(n):ifn==1:return1dp=[0](n+1)dp[1],dp[2]=1,2foriinrange(3,n+1):dp[i]=dp[i-1]+dp[i-2]+dp[i-3]returndp[n]解析:-动态规划,`dp[i]=dp[i-1]+dp[i-2]+dp[i-3]`。-初始化`dp[1]=1`,`dp[2]=2`,`dp[3]=3`。-时间复杂度O(n),空间复杂度O(n)可优化为O(1)。2.题2(有效括号):答案:pythondefisValid(s):stack=[]mapping={'(':')','[':']','{':'}'}forcharins:ifcharinmapping:stack.append(mapping[char])elifnotstackorchar!=stack.pop():returnFalsereturnnotstack解析:-左括号入栈,右括号与栈顶匹配。-栈为空或栈顶不匹配则无效。-时间复杂度O(n),空间复杂度O(n)。3.题3(第三大数):答案:pythondefthirdMax(nums):first,second,third=float('-inf'),float('-inf'),float('-inf')fornuminnums:ifnum>first:first,second,third=num,first,secondeliffirst>num>second:second,third=num,secondelifsecond>num>third:third=numreturnthirdifthird!=float('-inf')elsefirst解析:-维护三个变量记录前三大的数。-遍历数组时更新三个变量。-时间复杂度O(n),空间复杂度O(1)。4.题4(最长无重复子串):答案:pythondeflengthOfLongestSubstring(s):left,res=0,0window=set()forrightinrange(len(s)):whiles[right]inwindow:window.remove(s[left])left+=1window.add(s[right])res=max(res,right-left+1)returnres解析:-滑动窗口:右指针扩展,左指针收缩。-使用集合记录窗口内的字符,重复时移动左指针。-时间复杂度O(n),空间复杂度O(n)。三、系统设计题1.题1(短链接系统):答案:-架构:-前端:接收长URL,生成短URL,缓存热点短URL。-后端:-分布式ID生成器(如Twitter算法)。-哈希表(Redis)缓存短URL→长URL映射。-搜索引擎(Elasticsearch)索引热点短URL。-数据库:存储所有映射关系。-高并发方案:-CDN缓存短URL。-限流(熔断、降级)。-异步写入数据库。2.题2(实时推荐系统):答案:-数据结构:-用户画像:用户标签、历史行为向量。-商品特征:属性向量、热度得分。-推荐算法:-协同过滤(ItemCF)。-混合推荐(用户偏好+商品热度)。-系统架构:-离线:训练模型(如Embedding)。-在线:实时计算推荐列表(Redis缓存)。-流处理(Flink)更新用户行为。四、综合题1.题1(双11系统设计):答案:-架构:-分层架构(接入层、业务层、数据层)。-异步化处理(Kaf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 操作系统安全加固措施指南
- 某家政公司客服接待服务规范
- 基于教师教学行为分析的数字化教学画像构建与教师培训体系优化策略教学研究课题报告
- 探寻中国家族企业非效率投资迷局:成因、影响与破局之策
- 2026年反腐倡廉知识竞赛试卷及答案(第三套)
- 对2026年合同续签条件协商的回复信(5篇)
- 绿色低碳节能减排技术应用指南
- 2025年工业机器人系统集成在精密折弯领域的应用示范项目可行性研究报告
- 2026年物联网在智慧农业应用创新报告
- 2025年5G技术对物流行业创新影响报告
- 电商客服服务流程与话术手册
- Python深度学习入门(从零构建CNN和RNN)
- 小学信息科技课堂中人工智能教育实践研究教学研究课题报告
- (2025)继发性高血压筛查和诊断中国专家共识解读课件
- 慢性病患者医患沟通策略
- 老年人皮肤瘙痒的护理
- 饮用水深度处理技术研究
- 麻绳手工创意课件
- 病房急危重症患者抢救流程
- 非遗宋锦课件
- 2023年云南省中考数学真题(原卷版)
评论
0/150
提交评论