2026计算机岗面试题型精讲题库含答案_第1页
2026计算机岗面试题型精讲题库含答案_第2页
2026计算机岗面试题型精讲题库含答案_第3页
2026计算机岗面试题型精讲题库含答案_第4页
2026计算机岗面试题型精讲题库含答案_第5页
已阅读5页,还剩6页未读, 继续免费阅读

下载本文档

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

文档简介

2026计算机岗面试题型精讲题库含答案考试时间:______分钟总分:______分姓名:______一、单项选择题1.操作系统中,产生死锁的四个必要条件是()。A.互斥条件B.请求与保持条件C.不剥夺条件D.循环等待条件E.同步条件2.在TCP三次握手过程中,服务器发送的确认报文段中SYN和ACK标志位的状态是()。A.SYN=0,ACK=0B.SYN=1,ACK=0C.SYN=1,ACK=1D.SYN=0,ACK=13.在MySQL数据库中,InnoDB存储引擎的默认索引类型是()。A.B树B.B+树C.Hash索引D.全文索引4.关于HTTP状态码,下列说法正确的是()。A.404表示服务器内部错误B.500表示资源未找到C.302表示临时重定向D.200表示服务器内部错误E.403表示禁止访问5.在Java并发编程中,关键字`volatile`的主要作用不包括()。A.保证变量的可见性B.保证变量的原子性C.禁止指令重排序D.保证变量的有序性6.关于C++中引用与指针的区别,下列说法错误的是()。A.引用必须初始化,指针可以不初始化B.引用初始化后不能改变指向,指针可以随时改变指向C.在sizeof中,引用的结果是引用类型的大小,指针的结果是指针本身的大小D.引用本质上是指针的别名7.链表不具有的特点是()。A.插入删除不需要移动元素B.可随机访问任一元素C.不必事先估计存储空间D.所需空间与线性表长度成正比8.下列算法中,时间复杂度最低的是()。A.冒泡排序B.快速排序C.归并排序D.希尔排序二、多项选择题1.下列关于TCP协议的特点,描述正确的是()。A.面向连接的传输协议B.提供全双工通信C.无连接的传输协议D.可靠的、面向字节流的传输服务E.适用于实时数据传输2.下列关于数据库索引的描述,正确的是()。A.索引可以加快数据检索速度B.索引会占用存储空间C.在进行大量数据插入或更新操作时,索引会影响性能D.所有列上都适合建立索引E.主键索引通常就是聚簇索引3.关于Redis缓存,下列说法正确的是()。A.Redis是单线程模型,性能极高B.Redis支持数据持久化C.Redis完全基于内存操作D.Redis不支持过期时间设置E.Redis支持多种数据结构4.在Java内存模型(JMM)中,下列关于`volatile`关键字的说法,正确的是()。A.保证被修饰变量的原子性B.保证被修饰变量的可见性C.禁止指令重排序D.线程创建时必须初始化该变量E.能够保证多线程环境下的安全三、简答题与编程题1.简述TCP协议三次握手的过程,并说明为什么需要三次握手而不是两次?2.现有数组nums=[2,7,11,15],目标值target=9。因为nums[0]+nums[1]=2+7=9,所以返回[0,1]。请编写一个函数,找出给定数组中和为目标值的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。并且你不能使用同一个元素使用两次。要求:给出代码实现思路或伪代码。3.请简述在高并发秒杀场景下,为了防止超卖现象,通常采取哪些技术手段?请至少列举三种。4.解释数据库事务的ACID特性。在InnoDB存储引擎中,它是如何通过锁机制和日志来实现“隔离性”的?5.链表反转:给定一个单链表的头节点head,请反转链表,并返回反转后的链表。链表节点定义如下:structListNode{intval;ListNode*next;ListNode():val(0),next(nullptr){}ListNode(intx):val(x),next(nullptr){}ListNode(intx,ListNode*next):val(x),next(next){}}。请写出核心代码逻辑或解题思路。一、单项选择题1.答案:A,B,C,D解析:死锁产生的四个必要条件是:*互斥条件:资源是独占使用的。*请求与保持条件:持有资源的同时申请新资源。*不剥夺条件:资源不能被强行抢占,只能主动释放。*循环等待条件:存在资源循环等待链。*这四个条件必须同时满足才会发生死锁。2.答案:C解析:*第一次握手:客户端发送SYN=1,seq=x。*第二次握手:服务器发送SYN=1,ACK=1(确认收到客户端的x),seq=y。*第三次握手:客户端发送ACK=1,确认收到服务器的y(ack=y+1),seq=x+1。*因此服务器发送的报文段中SYN和ACK标志位均为1。3.答案:B解析:MySQL的InnoDB存储引擎默认使用B+树作为索引的数据结构。B+树更适合数据库索引,因为它的非叶子节点只存储键值,不存储数据,从而减少了IO次数,并且叶子节点通过链表连接,适合范围查询。4.答案:C,E解析:*404:资源未找到。*500:服务器内部错误。*302:临时重定向。*200:请求成功。*403:禁止访问(通常是因为权限不足)。*故选C和E。5.答案:B解析:`volatile`关键字的主要作用是保证变量的可见性(多线程可见)和有序性(禁止指令重排序),但它不保证原子性(例如对`volatileintcount`执行`count++`操作依然是非原子的,需要加锁或`AtomicInteger`)。所以选B。6.答案:D解析:*A正确:引用必须在定义时初始化,指针可以不初始化。*B正确:引用一旦初始化指向一个对象,就不能改变指向。*C正确:`sizeof(引用)`等于引用类型的大小,而`sizeof(指针)`等于指针本身占用的内存大小(通常4字节或8字节)。*D错误:引用不是指针的别名。引用是变量本身的别名,而指针是存储变量地址的变量。引用没有自己的内存地址(或者说它就绑定在原对象上),且不能重新绑定。引用本质上是对对象的直接操作。7.答案:B解析:*A正确:链表插入删除只需修改指针,无需移动元素。*B错误:链表不能随机访问,访问任意元素都需要从头遍历,时间复杂度为O(n)。*C正确:链表不需要预先分配连续空间。*D正确:链表节点包含数据和指针,所需空间与节点数量成正比。8.答案:B解析:*冒泡排序:O(n^2)。*快速排序:平均时间复杂度O(nlogn),最坏O(n^2)。*归并排序:O(nlogn)。*希尔排序:介于O(n)和O(n^2)之间。*因此时间复杂度最低的是快速排序(平均情况)。二、多项选择题1.答案:A,B,D解析:*A正确:TCP是面向连接的协议(三次握手建立连接)。*B正确:TCP支持全双工通信。*C错误:UDP是无连接的传输协议。*D正确:TCP是可靠的、面向字节流的传输服务(有确认机制、重传机制)。*E错误:TCP不适用于实时数据传输(延迟较高),UDP更适用。2.答案:A,B,C,E解析:*A正确:索引可以显著提高查询速度。*B正确:索引需要占用额外的磁盘空间。*C正确:频繁的增删改操作会影响索引的维护成本,导致性能下降。*D错误:不是所有列都适合建立索引。例如:区分度低的列(如性别)、频繁更新的列、很少被查询的列,建立索引不仅没用,还会拖慢写入速度。*E正确:主键索引就是聚簇索引。3.答案:A,B,C,E解析:*A正确:Redis是单线程模型(网络I/O和键值对操作在一个线程中),避免了多线程的上下文切换和锁竞争,性能极高。*B正确:Redis支持RDB和AOF两种持久化方式。*C正确:Redis完全基于内存操作。*D错误:错误。Redis支持为Key设置过期时间(TTL)。*E正确:Redis支持String,List,Set,Hash,ZSet等多种数据结构。4.答案:B,C解析:*A错误:`volatile`不保证原子性。*B正确:`volatile`保证可见性,一个线程修改后,其他线程立即可见。*C正确:`volatile`通过内存屏障禁止指令重排序,保证有序性。*D错误:`volatile`修饰的变量在初始化时必须赋值(这是Java语法规定,与volatile无关)。*E错误:`volatile`不能保证多线程环境下的绝对安全,因为它不保证原子性。三、简答题与编程题1.答案及解析:*过程:1.客户端发送一个SYN报文段,标志位SYN=1,序号seq=x。客户端进入SYN_SENT状态。2.服务器收到SYN报文段后,回复一个SYN+ACK报文段,标志位SYN=1,ACK=1,确认号ack=x+1,序号seq=y。服务器进入SYN_RCVD状态。3.客户端收到服务器的SYN+ACK报文段后,发送一个ACK报文段,标志位ACK=1,确认号ack=y+1,序号seq=x+1。客户端和服务器都进入ESTABLISHED(已建立连接)状态。*为什么需要三次握手:1.防止失效的连接请求报文段:如果只进行两次握手,假设客户端发送的连接请求在网络中滞留,延迟到连接释放后才到达服务器。服务器误以为是新的连接请求,于是发送SYN+ACK确认,并发送数据给客户端。但客户端没有建立连接的请求,所以不响应,服务器一直等待,造成服务器资源浪费。2.同步双方的初始序列号:TCP连接的建立需要双方协商初始序列号。三次握手可以确认双方的发送和接收能力都是正常的。2.答案及解析:*思路:使用哈希表(HashMap/HashSet)来存储遍历过的元素及其下标。对于数组中的每一个元素,检查目标值减去该元素的差值是否在哈希表中。*代码实现(Python风格):```pythondeftwoSum(nums,target):map={}foriinrange(len(nums)):complement=target-nums[i]ifcomplementinmap:return[map[complement],i]map[nums[i]]=ireturn[]```*解析:时间复杂度O(n),空间复杂度O(n)。通过一次遍历,利用哈希表快速查找缺失的另一半数值。3.答案及解析:*技术手段:1.Redis预减库存:在用户下单前,先在Redis中扣减库存。如果扣减成功则继续,失败则直接返回。2.消息队列削峰填谷:将秒杀请求放入消息队列(如Kafka、RabbitMQ),后端服务按照自己的处理能力从队列中拉取请求进行处理,避免瞬间流量击穿数据库。3.数据库层库存扣减:在订单创建时,利用数据库的行锁(SELECT...FORUPDATE)或乐观锁(CAS机制)进行扣减,确保不会超卖。4.分布式锁:在数据库操作前,使用Redis分布式锁或Zookeeper锁,保证同一时间只有一个线程能操作数据库库存。4.答案及解析:*ACID特性:*原子性:事务中的操作要么全部成功,要么全部失败回滚。*一致性:事务执行前后,数据库的完整性约束没有被破坏。*隔离性:一个事务的执行不被其他事务干扰。*持久性:事务一旦提交,对数据的修改是永久性的,即使数据库崩溃也不丢失。*InnoDB实现机制:*隔离性:通过锁机制(行锁、间隙锁)和MVCC(多版本并发控制)实现。MVCC在读取数据时,不需要加锁,通过版本链来实现非阻塞读。*原子性与持久性:通过RedoLog(重做日志)和UndoLog(回滚日志)实现。*RedoLog:WAL(Write-AheadLogging)机制,先写日志再写磁盘。保证数据持久性。*UndoLog:记录事务修改前的数据版本,用于事务回滚和MVCC的读旧版本。5.答案及解析:

温馨提示

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

评论

0/150

提交评论