2026计算机岗面试考点梳理题库含答案解析_第1页
2026计算机岗面试考点梳理题库含答案解析_第2页
2026计算机岗面试考点梳理题库含答案解析_第3页
2026计算机岗面试考点梳理题库含答案解析_第4页
2026计算机岗面试考点梳理题库含答案解析_第5页
已阅读5页,还剩13页未读, 继续免费阅读

下载本文档

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

文档简介

2026计算机岗面试考点梳理题库含答案解析考试时间:______分钟总分:______分姓名:______一、单项选择题(每题只有一个正确答案)1.在HTTP协议中,表示服务器内部错误的状态码是A.200B.404C.500D.4032.TCP协议中,用于建立连接的标志位是A.SYNB.ACKC.FIND.RST3.操作系统中,进程与线程的主要区别不包括A.进程是资源分配的基本单位,线程是调度执行的基本单位B.同一个进程内的多个线程共享进程的内存地址空间C.线程拥有独立的栈和程序计数器D.线程之间无法进行通信4.关于死锁产生的必要条件,以下说法正确的是A.互斥条件B.请求与保持条件C.不剥夺条件D.循环等待条件5.数据结构中,二叉树的前序遍历序列为ABC,后序遍历序列为CBA,则该二叉树的中序遍历序列为A.ABCB.BCAC.ACBD.CBA6.在数据库索引中,B+树相比B树的主要优势在于A.B+树的非叶子节点也存储数据B.B+树更适合范围查询C.B+树查询效率更高D.B+树不需要维护平衡7.Java集合框架中,HashMap在JDK1.8版本之后,当链表长度超过8且数组长度超过64时,会将链表转换为A.红黑树B.哈希表C.栈D.队列8.Redis中,用于实现分布式锁的常用数据结构是A.StringB.HashC.SetD.ZSet9.下列关于TCP三次握手过程描述错误的是A.第一次握手:客户端发送SYN包,序列号seq=xB.第二次握手:服务器发送SYN+ACK包,确认号ack=x+1,序列号seq=yC.第三次握手:客户端发送ACK包,确认号ack=y+1,序列号seq=x+1D.握手过程中可以携带数据10.操作系统内存管理中,虚拟内存技术的目的是A.扩大物理内存容量B.提高内存访问速度C.方便用户编程D.提高内存利用率11.以下算法的时间复杂度最高的是A.冒泡排序B.二分查找C.快速排序D.直接插入排序12.在Linux操作系统中,用于查看当前进程状态的命令通常是A.lsB.psC.cdD.mkdir13.数据库事务的隔离级别中,会出现“不可重复读”现象的是A.读未提交B.读已提交C.可重复读D.串行化14.HTTP/1.1相比HTTP/1.0的主要改进不包括A.持久连接B.管道化传输C.支持断点续传D.引入Cookie机制15.程序员在编写代码时,为了提高代码的可读性和可维护性,通常遵循的设计原则不包括A.单一职责原则B.魔法数字原则C.开闭原则D.依赖倒置原则二、多项选择题(每题至少有两个正确答案,多选、少选、错选均不得分)1.下列关于TCP和UDP的对比,描述正确的有A.TCP是面向连接的,UDP是无连接的B.TCP提供可靠传输,UDP不保证可靠传输C.TCP是面向字节流的,UDP是面向报文的D.TCP头部开销比UDP小2.计算机网络OSI七层模型中,包含的层有A.物理层B.数据链路层C.表示层D.会话层3.以下哪些是常见的哈希冲突解决方法A.链地址法B.开放定址法C.再哈希法D.哈希映射4.Java多线程中,实现线程同步的方法有A.synchronized关键字B.Lock接口C.volatile关键字D.wait()和notify()方法5.在Redis缓存设计中,为了防止缓存穿透,可以采取的措施有A.缓存空值B.设置合理的过期时间C.布隆过滤器D.增加缓存容量6.下列关于数据库事务的ACID特性,描述正确的有A.原子性B.一致性C.隔离性D.持久性7.关于JVM内存模型,描述正确的有A.堆内存是线程共享的,用于存储对象实例B.方法区存储类信息、常量、静态变量C.程序计数器是线程私有的D.虚拟机栈是线程私有的8.常见的排序算法中,属于不稳定排序的有A.冒泡排序B.快速排序C.直接插入排序D.希尔排序9.操作系统中,进程调度算法中常用的有A.先来先服务B.时间片轮转C.优先级调度D.最高响应比优先10.微服务架构的优势包括A.服务拆分,职责单一B.技术栈不受限C.易于横向扩展D.系统整体更加耦合三、简答题1.请简述TCP协议“三次握手”的详细过程及其目的。2.什么是死锁?产生死锁的四个必要条件是什么?3.请简述数据库索引的作用以及索引失效的常见场景。4.什么是虚拟内存?它有什么特点?5.在高并发场景下,如何解决“缓存雪崩”问题?四、编程题1.给定一个单链表的头节点head,反转链表,并返回反转后的链表。2.实现一个函数,判断一棵二叉树是否为平衡二叉树。3.给定一个无序整数数组nums,找到其中最长上升子序列的长度。4.实现一个简单的生产者-消费者模型,使用队列进行通信。试卷答案一、单项选择题1.答案:C解析:*A.200OK:请求成功,服务器已成功处理请求。*B.404NotFound:请求的资源未在服务器上找到。*C.500InternalServerError:服务器内部错误,通常是服务器遇到了未曾预料到的状况(如代码Bug)。*D.403Forbidden:服务器理解请求,但拒绝授权访问。*因此选C。2.答案:A解析:*SYN(SynchronizeSequenceNumbers):用于建立连接的同步信号。*ACK(Acknowledge):确认信号。*FIN(Finish):用于释放连接。*RST(Reset):用于重置连接。*建立连接时发送的是SYN,因此选A。3.答案:D解析:*A.进程是资源分配单位,线程是执行单位,正确。*B.同一进程的线程共享进程的堆和方法区内存,正确。*C.线程拥有独立的程序计数器、栈和局部变量表,正确。*D.线程之间可以通过共享内存进行通信,也可以通过锁、管道等方式通信,错误。*因此选D。4.答案:A,B,C,D解析:*死锁产生的四个必要条件是互斥、请求与保持、不剥夺、循环等待。四者缺一不可,故全选。5.答案:B解析:*前序遍历:根->左->右。给定前序ABC,后序CBA。*根节点一定是A。*前序中A后面是B,说明B是A的左孩子;A后面是C,说明C是A的右孩子。*后序中B在C前面,说明B是左孩子,C是右孩子。*树结构为:根A,左子树B,右子树C。*中序遍历:左->根->右。即B->A->C。*因此选B。6.答案:B解析:*A.B+树的非叶子节点只存键值,不存数据,B树的非叶子节点既存键值也存数据。*B.B+树的所有叶子节点构成了一个有序链表,非常适合范围查询,而B树不支持范围查询。*C.B+树查询效率通常比B树略低(因为要走到叶子),但更稳定。*D.B+树需要保持平衡。*因此选B。7.答案:A解析:*在JDK1.8中,HashMap为了解决链表过长导致查询效率下降的问题,引入了红黑树。当链表长度超过8且数组长度大于等于64时,链表转为红黑树。因此选A。8.答案:C解析:*Redis的Set结构常用于存储需要去重且快速查找的数据。在分布式锁场景中,通常使用SET命令的NX(不存在则设置)参数配合过期时间来实现锁的获取。*String也可以用于存储锁(SETNX命令),但Set结构在处理集合关系或布隆过滤器配合时更常用。题目中通常指Set结构或利用Set的NX特性。这里选C(Set结构)作为最典型的集合型数据结构代表。9.答案:D解析:*TCP三次握手过程中,第一次握手发送SYN包,第二次握手发送SYN+ACK包,第三次握手发送ACK包。*在三次握手的任何阶段,都可以携带数据。虽然通常建议在第三次握手时携带数据(因为此时连接已确认),但在第一次或第二次握手携带数据在技术上是允许的。*因此D选项“握手过程中不能携带数据”是错误的。10.答案:A解析:*虚拟内存是一种内存管理技术,它给每个应用程序提供了一个独立的、连续的内存地址空间。*作用:它让程序认为它拥有连续的可用内存(一个完整的地址空间),但实际上物理内存可能被分割,甚至部分在磁盘上。这扩大了逻辑内存容量,提高了内存利用率。因此选A。11.答案:A解析:*A.冒泡排序:时间复杂度O(n^2)。*B.二分查找:时间复杂度O(logn)。*C.快速排序:平均时间复杂度O(nlogn)。*D.直接插入排序:平均时间复杂度O(n^2)。*显然冒泡排序的时间复杂度最高。因此选A。12.答案:B解析:*A.`ls`:列出目录内容。*B.`ps`:显示当前进程状态。*C.`cd`:切换目录。*D.`mkdir`:创建目录。*因此选B。13.答案:B解析:*A.读未提交:存在脏读、不可重复读、幻读。*B.读已提交:解决脏读,但可能存在不可重复读。*C.可重复读:解决脏读和不可重复读,可能存在幻读(MySQL默认级别)。*D.串行化:最高隔离级别,解决所有问题。*因此选B。14.答案:D解析:*A.持久连接:HTTP/1.1引入,避免每次请求建立连接。*B.管道化传输:HTTP/1.1支持,在连接建立后,可以连续发送多个请求。*C.支持断点续传:HTTP/1.1引入Range头支持。*D.引入Cookie机制:Cookie机制在HTTP/1.0的扩展中就已经出现,并非HTTP/1.1的独有改进。*因此选D。15.答案:B解析:*A.单一职责原则:一个类只负责一项职责。*B.魔法数字原则:是指在代码中直接出现具体的数字或字符串(如`if(status==1)`),而不使用有意义的常量名(如`if(status==USER_ACTIVE)`)。*C.开闭原则:对扩展开放,对修改关闭。*D.依赖倒置原则:面向接口编程。*因此选B。二、多项选择题1.答案:A,B,C解析:*A.TCP面向连接,UDP无连接,正确。*B.TCP可靠,UDP不可靠(丢包不重传),正确。*C.TCP面向字节流(粘包拆包),UDP面向报文,正确。*D.TCP头部最小20字节,UDP头部只有8字节,TCP头部比UDP大,错误。*因此选A,B,C。2.答案:A,B,C,D解析:*OSI七层模型依次为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。*A,C,D,B均在其列。3.答案:A,B,C解析:*常见的哈希冲突解决方法包括:链地址法、开放定址法、再哈希法。*D.哈希映射本身就是哈希表的实现方式,不是解决冲突的方法。*因此选A,B,C。4.答案:A,B,D解析:*A.`synchronized`:锁关键字。*B.`Lock`:接口,通常配合Condition使用。*C.`volatile`:关键字,只保证可见性和有序性,不保证原子性,不能用于线程同步(互斥)。*D.`wait()`和`notify()`:Object类的方法,配合synchronized使用。*因此选A,B,D。5.答案:A,C解析:*A.缓存空值:如果查询不到,也缓存一个空对象,防止后续重复查询数据库。*B.设置合理的过期时间:虽然能防止雪崩,但会导致缓存全部过期,可能引发穿透。*C.布隆过滤器:预先将所有可能存在的数据哈希到一个BitMap中,判断数据是否存在,不存在则直接拦截。*D.增加缓存容量:治标不治本。*因此选A,C。6.答案:A,B,C,D解析:*ACID是事务的四大特性:原子性、一致性、隔离性、持久性。全选。7.答案:A,B,C,D解析:*A.堆:线程共享,存储对象实例。*B.方法区:线程共享,存储类信息、常量、静态变量。*C.程序计数器:线程私有,记录当前指令地址。*D.虚拟机栈:线程私有,存储栈帧。*全选。8.答案:B,D解析:*A.冒泡排序:稳定。*B.快速排序:不稳定(如5,3,5,1)。*C.直接插入排序:稳定。*D.希尔排序:不稳定。*因此选B,D。9.答案:A,B,C,D解析:*A.先来先服务(FCFS)。*B.时间片轮转(RR)。*C.优先级调度。*D.最高响应比优先(HRRN)。*四种均为经典调度算法。10.答案:A,B,C解析:*A.服务拆分,职责单一。*B.技术栈不受限。*C.易于横向扩展。*D.系统整体更加耦合(这是微服务相比单体架构的劣势,或者说是单体架构的缺点)。*因此选A,B,C。三、简答题1.解析:*过程:1.客户端发送SYN=1,seq=x,请求建立连接。2.服务器收到后,发送SYN=1,ACK=1,seq=y,ack=x+1,确认连接请求。3.客户端收到后,发送ACK=1,seq=x+1,ack=y+1,确认服务器的连接请求。*目的:1.同步双方发送和接收的序列号。2.交换TCP窗口大小信息,协商通信能力。3.确认双方的收发功能是否正常。2.解析:*定义:死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干涉,它们都将无法推进下去。*四个必要条件:1.互斥条件:资源是独占的。2.请求与保持条件:已持有资源并申请新资源。3.不剥夺条件:资源不能被强制抢占。4.循环等待条件:存在资源循环等待链。3.解析:*作用:加速数据库查询速度,减少磁盘I/O操作。*失效场景:1.对列进行函数操作(如`WHEREYEAR(create_time)=2020`)。2.对列进行隐式类型转换(如字符串列存数字`WHEREid=123`)。3.对列进行`OR`运算(除非都走索引)。4.`LIKE`查询以`%`开头(如`WHEREnameLIKE'%abc'`)。5.`<>`或`NOTIN`操作。4.解析:*定义:虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用内存(一个完整的地址空间),但实际上物理内存可能被分割,甚至部分在磁盘上。*特点:1.离散性:内存分配是离散的。2.虚拟性:提供给用户的地址空间是虚拟的,不是物理的。3.逻辑地址空间大于物理地址空间:通过映射机制,逻辑空间可以远大于物理空间。5.解析:*定义:缓存雪崩是指缓存中大量数据在同一时间失效或无法访问,导致所有请求直接打到数据库,造成数据库压力骤增甚至宕机。*解决方案:1.缓存过期时间加随机值:在设置缓存过期时间时,不要设置统一的时间点,加上一个随机值(如1小时+0-5分钟)。2.互斥锁:当缓存失效时,只有一个线程去加载数据库并写入缓存,其他线程等待。3.多级缓存:设置本地缓存(如Caffeine)和分布式缓存,当Redis失效时,可以降级查本地缓存。四、编程题1.解析:*思路:迭代法。使用三个指针:prev(前驱节点,初始化为null)、curr(当前节点,初始化为head)、next(后继节点)。*步骤:1.遍历链表,每次循环保存当前节点的下一个节点`next=curr.next`。2.将当前节点的`next`指向`prev`(完成反转)。3.移动指针:`prev=curr`,`curr=next`。4.当`curr`为空时结束,最终`prev`是新的头节点。2.解析:*思路:递归法。定义一个辅助函数`height(nod

温馨提示

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

评论

0/150

提交评论