2026计算机岗面试考点梳理习题汇编含解析易错题集_第1页
2026计算机岗面试考点梳理习题汇编含解析易错题集_第2页
2026计算机岗面试考点梳理习题汇编含解析易错题集_第3页
2026计算机岗面试考点梳理习题汇编含解析易错题集_第4页
2026计算机岗面试考点梳理习题汇编含解析易错题集_第5页
已阅读5页,还剩10页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026计算机岗面试考点梳理习题汇编含解析易错题集考试时间:______分钟总分:______分姓名:______一、单项选择题1.在TCP协议的三次握手过程中,第二次握手发送的标志位是A.SYNB.ACKC.FIND.RST2.关于操作系统中的死锁,以下说法正确的是A.只要资源分配得当就不会发生死锁B.死锁产生的四个必要条件可以同时满足C.死锁发生的概率与进程数量成正比D.死锁发生后可以自动解除3.下列关于数据库索引的描述,错误的是A.联合索引(复合索引)通常遵循最左前缀原则B.索引可以显著提高数据的查询速度,但会降低数据的插入、删除和更新速度C.B+树比B树更适合数据库索引,因为B+树的非叶子节点不存储数据,从而减少了磁盘I/O次数D.主键索引一定比普通索引的查询效率高4.在高并发场景下,使用Redis缓存数据时,为了防止缓存雪崩,通常采取的措施有A.给缓存数据设置随机过期时间B.限流保护C.互斥锁D.限流保护5.关于大语言模型(LLM)的RAG(检索增强生成)技术,以下描述正确的有A.RAG通过外部知识库增强模型的回答能力B.RAG不需要微调模型参数C.RAG可以解决模型知识更新滞后的问题D.RAG完全依赖于预训练模型的生成能力6.以下关于Java垃圾回收(GC)的说法,错误的是A.对象永远不会被回收B.栈中引用的对象会被垃圾回收器回收C.当一个对象没有任何引用指向它时,它会被判定为垃圾D.System.gc()方法可以建议JVM进行垃圾回收7.在计算机网络中,HTTP协议默认使用的端口号是A.80B.443C.8080D.33068.以下算法的时间复杂度分析正确的是A.冒泡排序的最坏时间复杂度是O(n)B.二分查找的时间复杂度是O(n^2)C.快速排序的平均时间复杂度是O(nlogn)D.简单的字符串匹配算法(如BF算法)的时间复杂度是O(n)9.关于TCP与UDP的区别,下列说法正确的是A.TCP是面向连接的,UDP是无连接的B.TCP保证数据顺序,UDP不保证C.TCP是面向报文的,UDP是面向流的D.TCP的传输效率一定比UDP高10.在微服务架构中,熔断器(CircuitBreaker)模式的主要作用是A.负载均衡B.服务注册与发现C.快速失败,防止级联故障D.数据库读写分离二、多项选择题1.下列关于HTTP协议的说法,正确的有A.HTTP协议默认端口是80B.HTTPS协议在HTTP基础上增加了SSL/TLS加密层C.HTTP/1.1默认使用持久连接D.HTTP状态码200表示请求成功,404表示服务器内部错误2.关于数据库事务的隔离级别,下列说法正确的有A.读未提交允许脏读B.读已提交允许不可重复读C.可重复读允许幻读D.串行化可以避免所有并发异常3.下列哪些情况会导致Java中的堆内存溢出(OOM)?A.在循环中不断创建新对象且没有及时释放引用B.加载一个特别大的jar包到JVM中C.递归调用过深D.数据库连接池配置过大4.在设计高并发秒杀系统时,为了防止超卖,通常采用的技术手段包括A.数据库乐观锁B.Redis原子递减C.消息队列削峰填谷D.页面静态化5.以下属于大模型推理优化技术的是A.量化(Quantization)B.模型蒸馏C.张量并行D.线程同步6.关于TCP协议的四次挥手,下列说法正确的有A.第一次挥手由客户端发送,标志位为FINB.第二次挥手由服务端发送,标志位为FIN和ACKC.第四次挥手由客户端发送ACK确认D.第四次挥手后连接立即关闭7.在Linux操作系统中,查看当前进程状态的命令及参数,下列描述正确的有A.ps-ef可以查看所有进程B.top可以实时监控资源占用C.kill-9强制终止进程D.netstat-an可以查看网络连接状态8.关于分布式系统中的CAP理论,下列说法正确的有A.C(Consistency)一致性B.A(Availability)可用性C.P(Partitiontolerance)分区容错性D.在分布式系统中,P是必须满足的,因此只能在CA中选择9.下列哪些是算法设计的基本思想?A.分治法B.动态规划C.贪心算法D.面向对象编程10.在Web开发中,防止XSS(跨站脚本攻击)和CSRF(跨站请求伪造)的措施包括A.对用户输入进行转义和过滤B.设置HttpOnly和Secure属性的CookieC.使用验证码D.使用SameSiteCookie属性三、代码分析与填空题1.以下代码实现了一个单向链表的节点类,请补全缺失的代码部分。classListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextclassSolution:defreverseList(self,head:ListNode)->ListNode:prev=Nonecurrent=headwhilecurrentisnotNone:#请在此处补全代码next_node=current.nextcurrent.next=prevprev=currentcurrent=next_nodereturnprev2.题目:给定一个整数数组nums和一个整数目标值target,请找出数组中两个整数,使得它们的和等于目标值,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用同一个元素两次。classSolution:deftwoSum(self,nums:List[int],target:int)->List[int]:map={}fori,numinenumerate(nums):complement=target-numifcomplementinmap:return[map[complement],i]map[num]=ireturn[]3.题目:以下代码使用了Redis的SETNX命令(SETifNoteXists)来实现分布式锁。请分析代码逻辑并指出可能导致锁无法释放的潜在问题,并尝试写出改进后的代码。importredisdefacquire_lock(lock_name,acquire_timeout=10):end=time.time()+acquire_timeoutwhiletime.time()<end:#尝试获取锁,设置过期时间防止死锁ifredis_client.setnx(lock_name,"locked",nx=True,ex=10):returnTruetime.sleep(0.1)returnFalsedefrelease_lock(lock_name):#请分析此处代码可能存在的问题并补充完整redis_client.delete(lock_name)改进后的释放锁代码示例:defrelease_lock(lock_name):#Lua脚本保证原子性script="""ifredis.call("get",KEYS[1])==ARGV[1]thenreturnredis.call("del",KEYS[1])elsereturn0end"""redis_client.eval(script,1,lock_name,"locked")4.题目:请简要描述Redis的三种缓存穿透、缓存击穿和缓存雪崩的解决方案。5.题目:在SpringBoot应用中,如果需要解决并发下的数据一致性问题,通常使用什么注解?请简述其原理。四、系统设计简答题1.题目:请设计一个“秒杀”系统,需要处理极高的并发流量。请从数据库设计、缓存策略、消息队列和前端优化四个方面阐述你的设计方案。2.题目:设计一个高可用的负载均衡器,当后端服务实例宕机时,负载均衡器如何保证流量正常分发?请列举至少两种负载均衡算法,并说明其优缺点。3.题目:在分布式系统中,如何保证分布式事务的一致性?请对比XA协议和TCC(Try-Confirm-Cancel)模式的优缺点及应用场景。试卷答案一、单项选择题1.答案:B解析思路:TCP三次握手过程:-第一次:客户端发送SYN=1,seq=x。目的是建立连接,发送数据。-第二次:服务端收到SYN,回复SYN=1,ACK=1,seq=y,ack=x+1。目的是确认收到客户端的SYN,并告诉客户端自己准备好了。-第三次:客户端收到服务端的确认,发送ACK=1,seq=x+1,ack=y+1。目的是确认收到服务端的确认。-因此第二次握手标志位包含SYN和ACK。2.答案:B解析思路:死锁产生的四个必要条件是互斥、请求与保持、不剥夺、循环等待。只要这四个条件同时满足,死锁就可能发生,所以B是正确的。A错误是因为资源分配策略不当也可能导致死锁;C错误是因为死锁发生的概率与进程调度顺序有关;D错误是因为死锁发生后必须由外部干预(如重启进程、人工干预)才能解除。3.答案:D解析思路:B和C都是索引的优点,正确。A正确,联合索引遵循最左前缀原则。D错误,主键索引(聚簇索引)的叶子节点存储的是数据本身,普通索引(非聚簇索引)叶子节点存储的是主键值。在数据量大且数据分布不均匀的情况下,主键索引的查询效率不一定比普通索引高,甚至可能因为B+树层级过高而效率更低。4.答案:A解析思路:缓存雪崩是指大量缓存key在同一时间过期或失效,导致请求瞬间全部打到数据库。为了避免这种情况,通常会给缓存设置随机的过期时间,而不是统一设置。B和C是应对缓存击穿或高并发的方法,C互斥锁用于解决缓存击穿。5.答案:A、B、C解析思路:RAG(检索增强生成)的核心优势在于利用外部知识库增强模型回答,A正确;它不需要微调模型参数,B正确;它解决了模型训练数据更新滞后的问题,C正确;虽然最终答案由模型生成,但生成过程依赖于检索到的上下文,D说法过于绝对且不符合RAG的设计初衷(RAG是为了减少幻觉,不完全依赖预训练知识)。6.答案:B解析思路:Java的垃圾回收主要针对堆内存。栈内存是线程私有的,由JVM管理,随着方法调用结束自动释放,不属于GC的回收范围,所以B错误。A错误是因为对象终究会被回收;C正确,这是垃圾回收的判定标准;D正确,System.gc()建议JVM进行GC。7.答案:A解析思路:HTTP协议默认端口是80;HTTPS是443;8080是Tomcat等Web容器的常用默认端口;3306是MySQL数据库端口。8.答案:C解析思路:A错误,冒泡排序最坏情况是O(n^2);B错误,二分查找是O(logn);C正确,快速排序平均情况是O(nlogn);D错误,简单的字符串匹配(如暴力匹配)是O(n*m)。9.答案:A、B、C解析思路:A正确,TCP面向连接;B正确,TCP保证可靠传输(有序、不丢包);C正确,TCP面向字节流(粘包拆包问题),UDP面向报文。D错误,TCP有头部开销(20字节),在传输小数据时,TCP的传输效率通常低于UDP。10.答案:C解析思路:熔断器模式类似于电路中的保险丝,当检测到服务异常(如响应时间过长、错误率过高)时,直接切断请求,快速失败,防止故障蔓延到下游系统(级联故障)。A是负载均衡的功能;B是注册中心的功能;D是数据库优化的功能。二、多项选择题1.答案:A、B、C解析思路:A正确,HTTP默认端口80;B正确,HTTPS在HTTP基础上加了SSL/TLS加密;C正确,HTTP/1.1支持持久连接(Keep-Alive);D错误,404表示资源未找到,500表示服务器内部错误。2.答案:A、B、D解析思路:A正确,读未提交允许读到未提交的数据(脏读);B正确,读已提交防止了脏读,但允许不可重复读;C错误,可重复读防止了不可重复读,但在标准SQL理论中允许幻读(MySQLInnoDB通过MVCC+Next-KeyLock实现了可重复读同时防止幻读,但在通用理论题中通常认为可重复读不防止幻读);D正确,串行化隔离级别强制事务串行执行,可以防止脏读、不可重复读和幻读。3.答案:A、B、C解析思路:A错误,栈帧是方法调用栈的一部分,由JVM管理,不属于堆内存;B错误,加载大jar包会占用PermGen(或Metaspace),可能导致元空间溢出,但不是直接导致堆OOM;C错误,递归过深可能导致栈溢出(StackOverflowError),而不是堆溢出;D错误,连接池配置过大通常导致连接泄漏,而不是直接导致堆OOM。4.答案:A、B、C、D解析思路:A正确,数据库乐观锁(如版本号)防止超卖;B正确,Redis原子递减是秒杀的核心;C正确,消息队列削峰填谷;D正确,页面静态化减少数据库压力。这四个都是秒杀系统的标准解决方案。5.答案:A、B、C解析思路:A正确,量化减少模型参数和计算量;B正确,蒸馏将大模型知识迁移到小模型;C正确,张量并行用于将大模型切分到多张卡上;D错误,线程同步是通用的并发编程概念,不是针对大模型推理的特定优化技术。6.答案:A、B、C解析思路:A正确,第一次挥手发送FIN;B正确,第二次挥手发送FIN+ACK;C正确,第四次挥手客户端发送ACK;D错误,第四次挥手后,连接需要等待2MSL(MaximumSegmentLifetime)进入TIME_WAIT状态才能彻底关闭。7.答案:A、B、C、D解析思路:A正确,ps-ef查看所有进程;B正确,top实时监控;C正确,kill-9强制终止;D正确,netstat-an查看网络状态。8.答案:A、B、C解析思路:A、B、C分别是CAP理论中三个要素的缩写。D错误,在分布式系统中,分区容错性(P)是必须满足的,因为网络分区是常态,因此只能在一致性和可用性之间做权衡(CP或AP)。9.答案:A、B、C解析思路:A、B、C是常见的算法设计策略(分治、动态规划、贪心)。D是面向对象编程(OOP)的三大特性之一,属于编程范式,不是算法设计思想。10.答案:A、B、C、D解析思路:A正确,转义HTML标签;B正确,设置HttpOnly防止XSS窃取Cookie;C正确,验证码防止CSRF;D正确,SameSite属性防止CSRF。三、代码分析与填空题1.答案:next_node=current.next解析思路:这是链表反转的经典算法。在修改指针之前,必须先保存当前节点的下一个节点(next_node),否则当前节点的next指针被修改后,链表就会断裂,导致后续节点丢失。后续代码逻辑是:将当前节点的next指向前一个节点,然后移动prev和current指针向后。2.答案:逻辑与上述代码一致解析思路:这是一道经典的两数之和题,使用哈希表(字典)解决。核心思路是遍历数组,对于每个数字,计算其需要的补数(target-num),然后在哈希表中查找该补数是否存在。如果存在,说明找到了答案;如果不存在,将当前数字存入哈希表,继续遍历。3.答案与解析:问题分析:原代码中的`release_lock`函数存在严重问题。如果客户端在执行`acquire_lock`后、执行`release_lock`之前崩溃(如程序崩溃、断电、网络中断),`redis_client.delete(lock_name)`将永远不会被执行,导致锁永远无法释放,造成死锁。改进思路:在释放锁时,必须验证当前持有的锁确实是自己的(通过比较value值),然后再删除。为了防止在检查和删除之间有其他客户端获取了锁,必须保证这一过程的原子性。最安全的做法是使用Lua脚本。改进后的代码:```pythondefrelease_lock(lock_name):#Lua脚本保证原子性,防止误删其他客户端的锁script="""ifredis.call("get",KEYS[1])==ARGV[1]thenreturnredis.call("del",KEYS[1])elsereturn0end"""redis_client.eval(script,1,lock_name,"locked")```4.答案与解析:*缓存穿透:查询一个一定不存在的数据,缓存和数据库都没有。解决方案:使用布隆过滤器(BloomFilter)预先判断数据是否存在,或者将不存在的数据也缓存到Redis中,并设置较短的过期时间。*缓存击穿:一个高并发请求查询一个刚刚过期的数据,导致所有请求直接打到数据库。解决方案:使用互斥锁(MutexLock),只让一个请求去查数据库,其他请求等待;或者设置逻辑过期时间(LogicalExpiration)。*缓存雪崩:大量缓存Key在同一时间集体失效,导致请求全部打到数据库。解决方案:给缓存设置随机的过期时间,避免集中失效。5.答案与解析:*注解:`@Transactional`*原理:SpringBoot通过AOP(面向切面编程)技术实现事务管理。当调用带有`@Transactional`注解的方法时,Spring会生成一个代理对象(JDK动态代理或CGLIB代理),在方法执行前开启数据库事务,方法执行成功后提交事务,如果发生异常则回滚事务。底层依赖数据库的事务隔离级别和ACID特性。四、系统设计简答题1.答案与解析:*数据库设计:采用分库分表策略,将库存分散存储。使用乐观锁(版本号或库存字段自减)或Redis原子操作来扣减库存,防止超卖。*缓存策略:使用Redis缓存热点商品信息。秒杀开始前,将库存预热到Redis中。秒杀时直接操作Redis扣减,减少数据库压力。*消息队列:使用Kafka或RabbitMQ进行削峰填谷。用户请求先发送到MQ,后端服务从MQ消费消息并处理订单,即使瞬时流量巨大,数据库也能按自己

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论