版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年计算机面试模拟题库一、编程题(共5题,每题20分)题目1(20分)题目:请实现一个函数,输入一个非负整数,返回它的二进制表达式中1的个数。例如,输入5,输出2(因为5的二进制表示为101,有2个1)。要求:1.时间复杂度不超过O(logn)2.不能使用内置函数3.代码需考虑边界情况(如输入0)题目2(20分)题目:给定一个字符串数组,请将字符串按照字符出现频率从高到低排序。如果有多个字符串频率相同,则按照字符串字典序升序排列。例如:输入:["apple","banana","apple","carrot","banana","apple"]输出:["apple","apple","apple","banana","banana","carrot"]要求:1.实现自定义排序2.考虑大数据量下的性能3.代码需包含测试用例题目3(20分)题目:实现一个LRU(最近最少使用)缓存,支持get和put操作。缓存容量为固定值。当缓存已满时,需要淘汰最久未使用的元素。要求:1.get操作返回键对应的值,若不存在返回-12.put操作插入键值对,若键已存在则更新值3.实现需考虑空间和时间的效率4.包含边界测试用例题目4(20分)题目:给定一个二叉树,请判断它是否是平衡二叉树。一个二叉树每个节点的左右子树的深度差不超过1。要求:1.实现深度计算和平衡判断2.时间复杂度不超过O(n)3.代码需包含测试用例题目5(20分)题目:实现一个简单的文件压缩算法,支持对文本文件进行压缩。压缩规则:1.连续相同字符序列压缩为字符+重复次数2.例如:"aaabbbcc"压缩为"a3b3c2"3.对于单个字符或重复次数为1的情况不压缩要求:1.实现压缩和解压缩功能2.考虑大文件处理的性能3.包含测试用例验证压缩效果二、系统设计题(共3题,每题30分)题目1(30分)题目:设计一个高并发的短链接系统。要求:1.支持将任意长度的URL转换为固定长度的短链接2.支持从短链接反查原始URL3.系统需具备高可用性和可扩展性4.考虑分布式部署方案要求:1.说明系统架构2.描述核心模块设计3.考虑数据一致性和容灾方案题目2(30分)题目:设计一个微博系统的用户关注功能。要求:1.支持用户关注/取消关注其他用户2.支持获取用户的关注列表和粉丝列表3.考虑高并发场景下的性能优化4.说明数据存储方案要求:1.描述系统架构2.说明数据表设计3.考虑索引优化和缓存策略题目3(30分)题目:设计一个实时日志分析系统。要求:1.支持将日志实时推送到系统2.支持对日志进行关键词搜索3.支持统计特定时间窗口内的日志统计信息4.考虑大数据量下的性能要求:1.说明系统架构2.描述核心组件设计3.考虑数据存储和查询优化方案三、算法题(共5题,每题15分)题目1(15分)题目:给定一个整数数组,返回数组中所有可能的三元组,使得三元组的和等于给定的目标值。例如:输入:nums=[-1,0,1,2],target=0输出:[[-1,0,1],[-1,2,1]]要求:1.时间复杂度不超过O(n^2)2.不能使用重复的三元组3.包含测试用例题目2(15分)题目:实现一个Trie(前缀树),支持插入单词和查找单词是否存在。要求:1.支持插入和查找操作2.考虑空间优化3.包含测试用例题目3(15分)题目:给定一个字符串,找出其中不重复的最长子串的长度。例如:输入:"abcabcbb"输出:3("abc")要求:1.时间复杂度不超过O(n)2.不能使用额外空间3.包含测试用例题目4(15分)题目:实现一个LRU缓存的双向链表版本。要求:1.支持get和put操作2.实现双向链表和哈希表的结合3.包含测试用例题目5(15分)题目:给定一个字符串,判断它是否是回文串。例如:输入:"racecar"输出:true要求:1.时间复杂度不超过O(n)2.不能使用额外空间3.包含测试用例答案与解析编程题答案与解析题目1答案与解析答案:pythondefcount_bits(n):count=0whilen:count+=n&1n>>=1returncount解析:1.使用位运算统计1的个数是最优解法2.每次与1做位与运算可以判断最低位是否为13.右移一位相当于除以2向下取整4.时间复杂度为O(logn)因为每次右移减少一位5.处理边界情况:输入0时返回0题目2答案与解析答案:pythondeffrequency_sort(strings):fromcollectionsimportCountercount=Counter(strings)按频率降序,字典序升序排序returnsorted(strings,key=lambdax:(-count[x],x))解析:1.使用Counter统计每个字符串的频率2.sorted函数支持自定义排序3.lambda函数中第一参数为负频率实现降序,第二参数为字符串本身实现字典序升序4.时间复杂度主要取决于排序操作,为O(nlogn)5.考虑大数据量时可以考虑使用计数排序优化题目3答案与解析答案:pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.head=ListNode(0)self.tail=ListNode(0)self.head.next=self.tailself.tail.prev=self.headclassListNode:def__init__(self,key=0,value=0):self.key=keyself.value=valueself.prev=Noneself.next=Nonedefget(self,key:int)->int:ifkeyinself.cache:node=self.cache[key]self._move_to_front(node)returnnode.valuereturn-1defput(self,key:int,value:int)->None:ifkeyinself.cache:node=self.cache[key]node.value=valueself._move_to_front(node)else:iflen(self.cache)==self.capacity:self._remove_lru()new_node=self.ListNode(key,value)self.cache[key]=new_nodeself._add_to_front(new_node)def_move_to_front(self,node):self._remove_node(node)self._add_to_front(node)def_add_to_front(self,node):node.prev=self.headnode.next=self.head.nextself.head.next.prev=nodeself.head.next=nodedef_remove_node(self,node):prev_node=node.prevnext_node=node.nextprev_node.next=next_nodenext_node.prev=prev_nodedef_remove_lru(self):lru=self.tail.prevself._remove_node(lru)delself.cache[lru.key]解析:1.使用双向链表+哈希表实现LRU2.哈希表存储键到节点的映射3.双向链表维护访问顺序,头部为最近访问4.get操作将访问的节点移动到头部5.put操作时如果已存在则更新值并移动到头部6.如果已满则删除尾部节点(最久未使用)7.时间复杂度为O(1)题目4答案与解析答案:pythonclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdefis_balanced(root):defcheck(node):ifnotnode:return0,Trueleft_height,left_balanced=check(node.left)right_height,right_balanced=check(node.right)balanced=left_balancedandright_balancedandabs(left_height-right_height)<=1returnmax(left_height,right_height)+1,balancedreturncheck(root)[1]解析:1.递归计算左右子树高度2.每次返回当前节点高度和是否平衡3.如果左右子树不平衡或高度差超过1则整棵树不平衡4.时间复杂度为O(n)因为每个节点只访问一次5.空间复杂度为O(h)递归栈的深度题目5答案与解析答案:pythondefcompress(s:str)->str:ifnots:return""compressed=[]count=1n=len(s)foriinrange(1,n):ifs[i]==s[i-1]:count+=1else:compressed.append(s[i-1]+str(count))count=1compressed.append(s[-1]+str(count))return''.join(compressed)defdecompress(compressed:str)->str:ifnotcompressed:return""decompressed=[]count=0fori,charinenumerate(compressed):ifchar.isdigit():count=count10+int(char)else:decompressed.append(charcount)count=0return''.join(decompressed)解析:1.压缩算法通过遍历字符串统计连续相同字符2.当字符变化时记录前一个字符和计数3.最后处理最后一个字符序列4.解压缩算法通过数字和字符构建原字符串5.时间复杂度均为O(n)6.需要考虑数字可能多位的情况系统设计题答案与解析题目1答案与解析答案:1.系统架构:-输入层:接收长URL的API网关-转换层:URL转换服务(分布式)-存储层:分布式缓存+数据库-输出层:返回短URL的API网关-分布式部署:可水平扩展的微服务架构2.核心模块设计:-ID生成器:雪花算法或UUID-缓存模块:Redis集群存储短URL和映射关系-数据库:存储所有映射关系-反向解析:从短ID查找长URL3.数据一致性和容灾:-使用分布式锁保证ID生成唯一性-缓存+数据库双写策略-异地多活部署-定期数据备份解析:1.短链接系统需要高并发处理能力2.分布式ID生成器保证唯一性3.缓存层加速热点数据访问4.数据库持久化保证数据不丢失5.反向解析需要快速准确题目2答案与解析答案:1.系统架构:-用户服务:关注关系管理-关注服务:实时关注状态同步-缓存层:缓存关注列表-消息队列:异步处理关注变更2.数据表设计:users(id,name,...)followees(follower_id,followee_id,created_at)3.性能优化:-关注关系使用布隆过滤器快速判断-关注列表使用Redis缓存-使用消息队列异步更新粉丝列表解析:1.关注系统需要支持大规模用户关系2.数据表设计要考虑查询效率3.缓存关注列表减少数据库压力4.异步处理保证响应速度题目3答案与解析答案:1.系统架构:-日志接入:Kafka集群收集日志-处理层:Flume或Logstash实时处理-存储层:Elasticsearch+InfluxDB-分析层:Spark+Flink实时分析2.核心组件设计:-实时索引:Elasticsearch支持快速搜索-时间序列数据库:InfluxDB存储统计指标-流处理引擎:处理实时查询请求3.数据存储和查询优化:-索引优化:分词器+倒排索引-分片策略:按时间+关键词分片-查询缓存:Redis存储热点查询结果解析:1.日志分析需要处理海量数据2.Kafka保证日志收集不丢失3.Elasticsearch提供强大的文本搜索能力4.时间序列数据库优化指标查询算法题答案与解析题目1答案与解析答案:pythondefthree_sum(nums,target):nums.sort()result=[]n=len(nums)foriinrange(n-2):跳过重复元素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解析:1.排序后使用双指针法2.固定第一个数,然后用左右指针找另外两个数3.时间复杂度为O(n^2)4.需要处理重复元素避免重复三元组5.需要考虑数组可能包含负数的情况题目2答案与解析答案: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_node(word)returnnodeisnotNoneandnode.is_enddefstarts_with(self,prefix:str)->bool:returnself._find_node(prefix)isnotNonedef_find_node(self,word:str):node=self.rootforcharinword:ifcharnotinnode.children:returnNonenode=node.children[char]returnnode解析:1.Trie树通过前缀共享内存2.每个节点包含子节点映射和结束标记3.插入时逐字符创建节点4.查询时逐字符查找5.时间复杂度为O(m)其中m是单词长度题目3答案与解析答案:pythondeflength_of_longest_substring(s:str)->int:char_set=set()left=0max_len=0forrightinrange(len(s)):whiles[right]inchar_set:char_set.remove(s[left])left+=1char_set.add(s[right])max_len=max(max_len,right-left+1)returnmax_len解析:1.使用滑动窗口技术2.左右指针维护不重复子串范围3.当遇到重复字符时移动左指针4.时间复杂度为O(n)5.空间复杂度为O(min(m,n))其中m是字符集大小题目4答案与解析答案:pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.head=ListNode(0)self.tail=ListNode(0)self.head.next=self.tailself.tail.prev=self.headclassListNode:def__init__(self,key=0,value=0):self.key=keyself.value=valueself.prev=Noneself.next=Nonedefget(self,key:int)->int:ifkeyinself.cache:node=self.cache[key]self._move_to_front(node)returnnode.valuereturn-1defput(self,key:int,value:int)->None:ifkeyinself.cache:node=self.cache[key]node.value=valueself._move_to_front(node)else:iflen(self.cache)==self.capacity:self._remove_lru()new_node=self.ListNode(key,value)self.cache[key]=new_nodeself._add_to_front(new_node)def_move_to_front(self,node):self._remove_node(node)self
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年住房和城乡建设领域现场专业人员培训考试(设备安装施工员专业基础知识)题库及答案(荆门)
- 2025年漳州住房和城乡建设领域现场专业人员培训考试(监理员)题库及答案
- 2025年软考《软件评测师》论文真题
- 2026年公交公司安全知识竞赛活动方案
- 2026年金融行业风控师招聘题库
- 2025年广西住房城乡建设领域施工现场专业人员职业培训考试(市政工程质量员)综合训练题库及答案
- 2026年电子商务师考试操作技能模拟题
- 2026年消防工程师消防安全模拟卷
- 2026年初中化学知识问答
- (2026)西部计划试真题与参考答案
- CFG桩施工技术方案
- GB/T 43640-2024听觉功能障碍法医临床鉴定技术规范
- 政府采购竞争性谈判文件范本(格式)
- 山东省汽车维修工时定额(T-SDAMTIA 0001-2023)
- 建立供应商安全资质审查制度
- 接地装置检查(接触网技能培训课件)
- 橡皮障改进项目质量管理
- 党委换届选举工作安排表
- 信号波形发生与合成实验
- GB/T 29464-2023两相流喷射式热交换器
- 新教科版五年级下册科学期末综合测试卷(一)(含答案)
评论
0/150
提交评论