版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026计算机岗面试考点梳理习题汇编考试时间:______分钟总分:______分姓名:______一、选择题1.在数据结构中,哪种操作的时间复杂度为O(1)?A.数组元素的随机访问B.链表元素的随机访问C.栈的入栈操作D.队列的出队操作2.关于TCP三次握手,以下说法正确的是?A.第一次握手由客户端发送SYN=1B.第二次握手由服务器发送SYN=1和ACK=1C.第三次握手由客户端发送ACK=1D.三次握手完成后,连接立即进入ESTABLISHED状态3.操作系统中,进程与线程的主要区别包括?A.进程拥有独立的内存空间,线程共享进程的内存空间B.进程的创建开销比线程大C.线程的切换开销比进程小D.进程间通信需要通过IPC机制,线程间可以直接共享数据4.数据库索引中,B+树相比二叉搜索树的优势是?A.查询效率更高,特别是范围查询B.插入和删除操作更简单C.不需要平衡操作,自动维护结构D.适用于所有数据类型的索引5.关于Java的垃圾回收机制,以下说法正确的是?A.垃圾回收器会自动回收所有不再使用的对象B.垃圾回收器可以保证程序不出现内存泄漏C.垃圾回收的触发时机完全由JVM决定D.垃圾回收过程中,程序会暂停执行二、编程题1.实现一个函数,输入一个整数数组,返回数组的反转结果。要求原地反转,不使用额外空间。2.设计一个类,实现栈的基本操作(push、pop、isEmpty),并支持获取栈顶元素但不弹出。3.编写一个函数,输入一个字符串,统计其中每个字符出现的频率,返回一个字符到频率的映射。三、算法题1.给定一个整数数组和一个目标值,找出数组中两个数的和等于目标值的所有可能组合,返回所有不重复的组合。2.设计一个算法,判断一个链表是否有环。要求时间复杂度为O(n),空间复杂度为O(1)。3.实现一个LRU(最近最少使用)缓存机制,支持get和put操作,要求时间复杂度为O(1)。4.给定一个字符串,只包含'('和')',判断该字符串是否是有效的括号序列。有效序列要求括号必须正确闭合。四、简答题1.简述TCP四次挥手的过程,并解释为什么需要等待2MSL时间。2.死锁产生的四个必要条件是什么?至少给出一种避免死锁的方法。3.在数据库中,索引失效的常见场景有哪些?请列举至少三种。五、系统设计题1.设计一个高并发的短链接系统,要求支持长码转短码、短码转长码的功能,并考虑高并发写入和查询的性能优化。2.设计一个分布式日志收集系统,要求支持实时日志收集、存储和查询,并考虑系统的可扩展性和容错性。试卷答案一、选择题1.A解析思路:数组的随机访问通过下标直接计算内存地址,时间复杂度为O(1);链表需遍历,时间复杂度为O(n);栈的入栈操作在栈顶完成,时间复杂度为O(1);队列的出队操作在队首,若为链表实现则为O(1),但题目未指定队列类型,且数组随机访问是唯一明确O(1)的操作。2.A,B,C,D解析思路:TCP三次握手标准过程:①客户端发送SYN=1(第一次握手);②服务器回复SYN=1和ACK=1(第二次握手);③客户端发送ACK=1(第三次握手);三次握手完成后连接进入ESTABLISHED状态。四个选项均符合标准协议流程。3.A,B,C,D解析思路:进程与线程的核心区别包括:进程拥有独立内存空间,线程共享进程内存;进程创建需分配资源,开销大;线程切换只需保存少量寄存器,开销小;进程间需IPC机制通信,线程间可直接共享数据。四个选项均正确。4.A,C解析思路:B+树的优势在于:所有数据存储在叶子节点,范围查询只需遍历叶子链表,效率高;通过自平衡机制维护结构,无需频繁旋转;但插入/删除操作复杂度不优于二叉搜索树,且不适合大数据类型索引(如BLOB)。5.A,C,D解析思路:垃圾回收器自动回收不再被引用的对象(A正确),但无法避免内存泄漏(如循环引用);回收时机由JVM决定(C正确);回收时会触发Stop-The-World,暂停程序执行(D正确)。B错误,垃圾回收无法保证无内存泄漏。二、编程题1.原地反转数组```pythondefreverse_array(arr):left,right=0,len(arr)-1whileleft<right:arr[left],arr[right]=arr[right],arr[left]left+=1right-=1returnarr```解析思路:双指针法,左右指针分别从数组两端向中间移动,交换元素直到相遇。时间复杂度O(n),空间复杂度O(1)。2.栈的实现(支持peek)```pythonclassStack:def__init__(self):self.items=[]defpush(self,item):self.items.append(item)defpop(self):returnself.items.pop()ifnotself.isEmpty()elseNonedefisEmpty(self):returnlen(self.items)==0defpeek(self):returnself.items[-1]ifnotself.isEmpty()elseNone```初始化:用列表存储栈元素;push:在列表末尾添加元素;pop:弹出末尾元素;isEmpty:检查列表是否为空;peek:返回末尾元素但不删除。3.统计字符频率```pythondefchar_frequency(s):freq={}forcharins:freq[char]=freq.get(char,0)+1returnfreq```解析思路:遍历字符串,用字典记录字符出现次数。`get`方法处理首次出现的字符,初始化计数为1。三、算法题1.两数之和的所有组合```pythondeftwo_sum_combinations(nums,target):nums.sort()result=[]left,right=0,len(nums)-1whileleft<right:current_sum=nums[left]+nums[right]ifcurrent_sum==target:result.append([nums[left],nums[right]])whileleft<rightandnums[left]==nums[left+1]:left+=1whileleft<rightandnums[right]==nums[right-1]:right-=1left+=1right-=1elifcurrent_sum<target:left+=1else:right-=1returnresult```解析思路:先排序数组,用双指针从两端向中间遍历。若和等于目标值,记录组合并跳过重复元素;若和小于目标值,左指针右移;否则右指针左移。时间复杂度O(nlogn)。2.判断链表是否有环```pythondefhas_cycle(head):ifnotheadornothead.next:returnFalseslow=headfast=head.nextwhileslow!=fast:ifnotfastornotfast.next:returnFalseslow=slow.nextfast=fast.next.nextreturnTrue```解析思路:快慢指针法。慢指针每次走一步,快指针每次走两步。若存在环,快慢指针必相遇;否则快指针先到达链表末尾。时间复杂度O(n),空间复杂度O(1)。3.LRU缓存机制```pythonclassLRUCache:def__init__(self,capacity):self.capacity=capacityself.cache={}self.head=Node(0,0)self.tail=Node(0,0)self.head.next=self.tailself.tail.prev=self.headdefget(self,key):ifkeyinself.cache:node=self.cache[key]self._remove(node)self._add(node)returnnode.valuereturn-1defput(self,key,value):ifkeyinself.cache:self._remove(self.cache[key])node=Node(key,value)self.cache[key]=nodeself._add(node)iflen(self.cache)>self.capacity:node_to_remove=self.tail.prevself._remove(node_to_remove)delself.cache[node_to_remove.key]def_remove(self,node):prev_node=node.prevnext_node=node.nextprev_node.next=next_nodenext_node.prev=prev_nodedef_add(self,node):node.prev=self.headnode.next=self.head.nextself.head.next.prev=nodeself.head.next=nodeclassNode:def__init__(self,key,value):self.key=keyself.value=valueself.prev=Noneself.next=None```解析思路:哈希表+双向链表。哈希表存储键与节点映射,链表按访问顺序排列(最近访问的节点在头部)。`get`和`put`操作时将节点移至头部;容量满时移除尾部节点(最久未使用)。4.有效的括号序列```pythondefis_valid_parentheses(s):stack=[]mapping={')':'(','}':'{',']':'['}forcharins:ifcharinmapping:top_element=stack.pop()ifstackelse'#'ifmapping[char]!=top_element:returnFalseelse:stack.append(char)returnnotstack```解析思路:遍历字符串,遇左括号压入栈,遇右括号弹出栈顶匹配。若栈为空或匹配失败则无效;遍历结束后栈空则有效。四、简答题1.TCP四次挥手及等待2MSL的原因四次挥手过程:-主动关闭方发送FIN=1(第一次挥手);-被动关闭方回复ACK=1(第二次挥手);-被动关闭方发送FIN=1(第三次挥手);-主动关闭方回复ACK=1(第四次挥手)。等待2MSL原因:确保被动关闭方收到最后的ACK;防止失效的连接请求报文出现在下一次连接中。2.死锁的四个必要条件及避免方法
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年教育系统公开选拔学校年轻后备干部考试参考试题及答案
- 2026年矿山救护队技能理论考试题库带答案
- 2026年煤矿青工模拟试卷带答案
- 2026年农机驾照题库及参考答案
- 2026年全国监理工程师考试真题及答案
- 2026年人工智能训练师(高级)职业技能鉴定参考题库含答案
- 2026年全科主治医师考试试题
- 2026年10月高等教育自学考试《中级财务会计》模拟试卷A含完整答案解析
- 光学基础及其技术 11
- 《数据结构》课件全套 王兆红 第1-10章 数据结构概论-排序
- 旋风分离器设计计算表-自动计算版(带公式自动计算版)
- 26版一上语文全册每课一练(含答案)
- 警棍盾牌操图文教材
- 医务科医疗质量改进与安全管理工作计划
- 工业仿真软件基础教程245
- 2026年工伤事故预防培训试题及答案
- 实施指南(2026)《JBT 7364-2014倍速输送链和链轮》
- 医院临床科研能力提升
- 三腔二囊管的护理查房
- 浙江润彩新材料科技有限公司年产23000吨消泡剂和7000吨润湿剂项目环评报告
- 非标设备项目管理制度
评论
0/150
提交评论