版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年互联网公司招聘面试题集1.编程基础(3题,每题10分,共30分)1.1(10分)题目:编写一个函数,实现将一个字符串中的所有大写字母转换为小写字母,所有小写字母转换为大写字母。不使用内置的`swapcase()`方法。答案与解析:pythondefswap_case(s:str)->str:result=[]forcharins:if'A'<=char<='Z':result.append(char.lower())elif'a'<=char<='z':result.append(char.upper())else:result.append(char)return''.join(result)示例print(swap_case("HelloWorld!"))#输出:hELLOwORLD!解析:通过遍历字符串中的每个字符,判断其是否为大写或小写字母,并分别进行转换。大写字母可通过`char.lower()`转换为小写,小写字母可通过`char.upper()`转换为大写。注意,非字母字符保持不变。1.2(10分)题目:给定一个整数数组,返回其中和为特定值的三元组数量。例如,输入`nums=[-1,0,1,2]`和`target=0`,输出`[[-1,0,1],[-1,2,1]]`。答案与解析:pythondefthree_sum(nums,target):nums.sort()result=[]n=len(nums)foriinrange(n):ifi>0andnums[i]==nums[i-1]:continueleft,right=i+1,n-1whileleft<right:total=nums[i]+nums[left]+nums[right]iftotal==target:result.append([nums[i],nums[left],nums[right]])whileleft<rightandnums[left]==nums[left+1]:left+=1whileleft<rightandnums[right]==nums[right-1]:right-=1left+=1right-=1eliftotal<target:left+=1else:right-=1returnresult示例print(three_sum([-1,0,1,2],0))#输出:[[-1,0,1],[-1,2,1]]解析:先对数组排序,然后使用双指针法。固定一个数,再用`left`和`right`指针在剩余部分中寻找和为`target-nums[i]`的两个数。注意去重,避免重复三元组。1.3(10分)题目:实现一个LRU(LeastRecentlyUsed)缓存机制。支持`get(key)`和`put(key,value)`操作,要求时间复杂度为O(1)。答案与解析: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=LRUCache(2)cache.put(1,1)cache.put(2,2)print(cache.get(1))#返回1cache.put(3,3)#去除键2print(cache.get(2))#返回-1解析:使用字典存储缓存数据,列表维护访问顺序。`get`操作时将键移到列表末尾表示最近使用;`put`操作时若缓存已满,则删除最久未使用的键(列表头部)。2.算法与数据结构(5题,每题10分,共50分)2.1(10分)题目:设计一个算法,判断一个二叉树是否是平衡二叉树(即任意节点的左右子树高度差不超过1)。答案与解析:pythonclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdefis_balanced(root:TreeNode)->bool:defcheck(node):ifnotnode:return0,Trueleft_height,left_balanced=check(node.left)right_height,right_balanced=check(node.right)returnmax(left_height,right_height)+1,left_balancedandright_balancedandabs(left_height-right_height)<=1returncheck(root)[1]示例root=TreeNode(3)root.left=TreeNode(9)root.right=TreeNode(20)root.right.left=TreeNode(15)root.right.right=TreeNode(7)print(is_balanced(root))#输出:True解析:通过递归计算每个节点的左右子树高度,同时判断高度差是否不超过1。若所有节点满足,则整棵树为平衡二叉树。2.2(10分)题目:实现一个Trie(前缀树)数据结构,支持`insert(word)`和`search(word)`操作。答案与解析:pythonclassTrieNode:def__init__(self):self.children={}self.is_end=FalseclassTrie:def__init__(self):self.root=TrieNode()definsert(self,word:str)->None:node=self.rootforcharinword:ifcharnotinnode.children:node.children[char]=TrieNode()node=node.children[char]node.is_end=Truedefsearch(self,word:str)->bool:node=self._find(word)returnnodeisnotNoneandnode.is_enddef_find(self,word:str):node=self.rootforcharinword:ifcharnotinnode.children:returnNonenode=node.children[char]returnnode示例trie=Trie()trie.insert("apple")print(trie.search("apple"))#输出:Trueprint(trie.search("app"))#输出:False解析:Trie通过字典存储子节点,`insert`操作逐字符创建路径,`search`操作查找完整路径并验证是否为单词的结尾。2.3(10分)题目:给定一个无重复元素的数组,返回所有可能的子集。例如,输入`[1,2,3]`,输出`[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]`。答案与解析:pythondefsubsets(nums):result=[]subset=[]defbacktrack(index):result.append(subset.copy())foriinrange(index,len(nums)):subset.append(nums[i])backtrack(i+1)subset.pop()backtrack(0)returnresult示例print(subsets([1,2,3]))输出:[[],[1],[1,2],[1,2,3],[1,3],[2],[2,3],[3]]解析:使用回溯法枚举所有可能的子集。通过递归添加元素并撤销,遍历所有组合。2.4(10分)题目:实现一个函数,检查一个字符串是否为有效的括号组合(如`"()"`、`"()[]{}"`)。答案与解析:pythondefisValid(s:str)->bool:stack=[]mapping={')':'(',']':'[','}':'{'}forcharins:ifcharinmapping:top=stack.pop()ifstackelse'#'ifmapping[char]!=top:returnFalseelse:stack.append(char)returnnotstack示例print(isValid("()[]{}"))#输出:Trueprint(isValid("(]"))#输出:False解析:使用栈存储左括号,遇到右括号时检查栈顶是否匹配。若所有括号均匹配且栈为空,则有效。2.5(10分)题目:实现一个LeetCode难题:合并k个升序链表,返回合并后的升序链表。答案与解析:pythonfromheapqimportheappush,heappopclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextdefmergeKLists(lists):heap=[]fori,headinenumerate(lists):ifhead:heappush(heap,(head.val,i,head))dummy=ListNode()current=dummywhileheap:val,i,node=heappop(heap)current.next=nodecurrent=current.nextifnode.next:heappush(heap,(node.next.val,i,node.next))returndummy.next示例创建链表[1,4,5],[1,3,4],[2,6]list1=ListNode(1,ListNode(4,ListNode(5)))list2=ListNode(1,ListNode(3,ListNode(4)))list3=ListNode(2,ListNode(6))print(mergeKLists([list1,list2,list3]))输出:1->1->2->3->4->4->5->6解析:使用最小堆(优先队列)维护当前各链表头部节点,每次弹出最小节点并推进其后续节点。3.系统设计(2题,每题20分,共40分)3.1(20分)题目:设计一个微博(Twitter)的Feeds流系统,要求支持以下功能:1.用户可以发布推文(限制长度,如140字符)。2.用户可以关注/取消关注其他用户。3.Feeds流显示用户关注者的最新推文,按时间倒序排列。答案与解析:系统架构:1.数据存储:-推文:使用MongoDB或InfluxDB存储推文,索引`user_id`和`timestamp`。-关注关系:使用Redis或关系型数据库存储,索引`follower_id`和`followee_id`。2.实时更新:-发布推文时,写入数据库并通知关注者(使用Kafka或RabbitMQ)。-关注者Feeds流通过订阅消息获取最新推文。3.Feeds流计算:-用户请求Feeds时,查询关注者的推文,按时间倒序返回。-优化:使用TTL缓存减少数据库压力。挑战与解决方案:-高并发:使用分布式缓存和异步队列处理请求。-数据一致:通过消息队列确保关注关系和推文的同步。3.2(20分)题目:设计一个短链接(如TinyURL)系统,要求支持:1.长链接转为短链接(唯一标识符)。2.短链接跳转回原长链接。3.支持自定义短链接前缀(可选)。答案与解析:系统架构:1.数据存储:-使用Redis存储短链接和长链接的映射,索引`short_url`和`long_url`。-使用自
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026济南城市照明工程有限公司招聘4人备考题库带答案详解
- 2026北京化工大学化学工程学院第二批次校友服务委员会秘书招聘1人备考题库完整参考答案详解
- 2026浙江温州市瑞安中学教师招聘6人备考题库及1套完整答案详解
- 2026年北大荒农垦集团有限公司应届高校毕业生招聘50人备考题库完整参考答案详解
- 2026中国科学院植物研究所特别研究助理(博士后)招聘67人备考题库及参考答案详解
- 2026江苏苏州太仓中德人力资源有限公司招聘1人备考题库及答案详解1套
- 2026河南安阳正一中学体育教师招聘1人备考题库及一套完整答案详解
- 2026春人教版数学三年级下册期末复习重点必练易错专项练习卷含答案
- 2026春季广东茂名市直属高中、中职学校赴高校现场招聘教师77人备考题库(编制)附答案详解
- 2026新疆交通建设集团股份有限公司招聘51人备考题库及完整答案详解1套
- (完整)管理学决策树习题及答案
- GB/T 6451-2015油浸式电力变压器技术参数和要求
- GB/T 5751-2009中国煤炭分类
- CB/T 3226-1995驾驶室固定矩形窗
- 第一性原理方法介绍-讲座1
- QBY3气动隔膜泵说明书
- 《思想政治教育学原理》第一章-思想政治教育发展-第二章思想政治教育本质特征-第三章-思想政治教育地位功能课件
- 广东省湛江市各县区乡镇行政村村庄村名明细
- 校外实习考勤表(模板)
- 西门子SPPA-T3000操作手册
- 初中英语课程标准五级词汇表背诵
评论
0/150
提交评论