版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026计算机岗面试高频题题库备考指南易错题集考试时间:______分钟总分:______分姓名:______一、单选题1.在Java集合框架中,HashMap在JDK1.8版本中,当链表长度大于8且数组长度大于64时,链表会转换为哪种数据结构?A.红黑树B.平衡二叉树C.哈希表D.跳表2.关于Java中的volatile关键字,下列描述正确的是?A.volatile保证了变量的原子性B.volatile保证了变量的可见性C.volatile保证了变量的有序性D.volatile能保证多线程环境下代码的执行顺序与代码书写的顺序一致3.在MySQL数据库中,关于聚簇索引和非聚簇索引(二级索引),下列说法错误的是?A.聚簇索引的叶子节点存储的是整行数据B.非聚簇索引的叶子节点存储的是主键值C.聚簇索引只能有一个D.非聚簇索引在查找数据时,必须回表查询两次4.以下哪个算法的时间复杂度不是O(nlogn)?A.归并排序B.快速排序C.堆排序D.冒泡排序5.在Redis中,如果需要实现一个“最近最少使用”的缓存淘汰策略,应该使用哪种数据结构?A.StringB.HashC.LinkedHashSetD.SkipList6.关于TCP协议,下列描述不正确的是?A.TCP是面向连接的协议B.TCP是面向字节流的协议C.TCP三次握手过程中,第二次握手可以发送数据D.TCP四次挥手过程中,第四次握手可以发送数据7.在JVM垃圾回收算法中,下列哪种算法需要移动对象,导致内存碎片问题相对较少?A.标记-清除算法B.标记-整理算法C.复制算法D.标记-清除-整理算法8.下列关于Java线程池参数的说法,错误的是?A.corePoolSize:核心线程数B.maximumPoolSize:最大线程数C.keepAliveTime:非核心线程空闲时的存活时间D.queueCapacity:线程池队列的容量9.在分布式系统中,为了保证数据一致性,通常采用什么锁机制?A.乐观锁B.悲观锁C.分布式锁D.读写锁10.关于MySQL的MVCC(多版本并发控制),下列描述正确的是?A.MVCC只适用于ReadCommitted隔离级别B.MVCC通过为每行数据添加版本号来实现C.MVCC解决的是脏读问题D.MVCC在事务提交后不再生效二、多选题1.以下哪些是Java中的常见垃圾回收算法?A.标记-清除B.标记-整理C.复制算法D.分代收集2.在Redis中,下列哪些是String类型支持的基本操作?A.SETB.GETC.LPUSHD.SADD3.关于Java中的接口与抽象类,下列说法正确的有?A.抽象类可以包含非抽象方法B.接口中的方法默认是publicabstract的C.一个类可以实现多个接口D.抽象类不能被实例化4.下列哪些是MySQL中常见的索引类型?A.主键索引B.唯一索引C.全文索引D.哈希索引5.在高并发场景下,为了防止缓存雪崩,可以采取哪些措施?A.给缓存数据设置随机过期时间B.互斥锁C.限流D.预热6.以下哪些是设计模式中的创建型模式?A.单例模式B.工厂方法模式C.观察者模式D.建造者模式7.关于Java中的HashMap,下列说法正确的有?A.HashMap不是线程安全的B.HashMap在并发环境下可能会出现死循环C.HashMap的底层是数组加链表D.HashMap的初始容量是168.在消息队列(MQ)的应用中,为了解决消息丢失的问题,通常可以采取哪些措施?A.生产者确认机制B.MQ持久化C.消费者手动提交OffsetD.事务消息9.下列哪些是TCP协议的头部信息?A.源端口B.目的端口C.序列号D.检验和10.在Linux操作系统中,查看当前进程信息的常用命令有哪些?A.psB.topC.killD.netstat三、简答题1.请简述Java中“重载”和“重写”的区别。2.请简述TCP三次握手的过程,以及为什么需要三次握手?3.请解释Redis中的“缓存穿透”、“缓存击穿”和“缓存雪崩”的区别及解决方案。4.请简述Java线程池的核心参数及其作用。5.在MySQL中,B+树相比于二叉树或二叉搜索树,为什么更适合作为数据库索引的数据结构?四、编程题1.请编写一个Java方法,实现单链表的反转。给定一个链表头节点,返回反转后的头节点。2.请编写一个Java方法,实现二叉树的层序遍历(广度优先搜索)。给定一个二叉树根节点,返回一个二维数组,数组中每一层对应树的一层节点值。3.请编写一个Java方法,实现“两数之和”。给定一个整数数组nums和一个整数目标值target,请在数组中找出和为目标值的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。4.请编写一个Java方法,实现LRU(最近最少使用)缓存淘汰算法。要求支持`get`和`put`操作。其中`get(key)`获取缓存值,如果key不存在返回-1;`put(key,value)`设置缓存值。如果key已存在,则更新其值;如果key不存在,插入该值。当缓存容量达到上限时,在插入新数据之前,移除最久未使用的数据。试卷答案一、单选题1.A*解析思路:在JDK1.8中,HashMap为了解决链表过长导致的查询效率低下问题(由O(n)降至O(logn)),引入了红黑树来替换长度大于8的链表。这是基于泊松分布的实验数据得出的结论。2.B*解析思路:volatile关键字主要有两个作用:一是保证变量的可见性(当一个线程修改了该变量,其他线程能立即看到);二是禁止指令重排序以保证有序性。但volatile不保证原子性,因此选项A错误;它只能保证单条指令的有序性,不能保证复杂逻辑的顺序,因此选项D错误。3.D*解析思路:聚簇索引的叶子节点存整行数据,非聚簇索引的叶子节点存主键值(用于回表)。非聚簇索引查询数据时,通常需要回表查询(即先查索引拿到主键,再查聚簇索引拿数据),选项D说“必须回表查询两次”是错误的,通常是一次回表(除非是覆盖索引,即查询字段都在索引中)。4.D*解析思路:归并排序、快速排序、堆排序的时间复杂度均为O(nlogn)。冒泡排序在最坏情况下的时间复杂度是O(n^2)。5.C*解析思路:LinkedHashSet基于链表和哈希表实现,它保持元素的插入顺序,适合实现LRU缓存。虽然Redis本身有LRU策略,但在Redis的数据结构选项中,LinkedHashSet(Java术语)常被用来指代保持插入顺序的集合结构(虽然Redis没有直接的LinkedHashSet,但在Java面试题库中常以此代指该逻辑)。如果严格指Redis,通常选ZSET,但结合选项,LinkedHashSet是保持顺序的最佳逻辑选择。6.D*解析思路:TCP三次握手是建立连接,第四次握手是断开连接。在第四次握手(客户端发送FIN)后,服务端发送ACK确认,连接即可关闭,此时数据传输已经完成,不能再发送数据。7.B*解析思路:标记-整理算法会将存活的对象向一端移动,然后清理掉边界以外的内存。这种移动对象的方式解决了内存碎片问题。标记-清除算法会产生碎片,复制算法会产生大量内存浪费。8.D*解析思路:线程池的核心参数通常包括corePoolSize(核心线程数)、maximumPoolSize(最大线程数)、keepAliveTime(非核心线程空闲存活时间)、workQueue(任务队列)。`queueCapacity`通常指任务队列的容量,它是`workQueue`的属性,而不是线程池对象本身的直接参数名,虽然相关,但在严谨的参数描述中D选项略显不准确。9.C*解析思路:在分布式系统中,由于没有全局锁,需要使用分布式锁(如基于Redis、Zookeeper实现的锁)来保证数据的一致性。10.B*解析思路:MVCC(多版本并发控制)通过在每一行数据后面保存两个隐藏的列(创建版本号、删除版本号)来实现。选项A错误,MVCC主要用于ReadRepeated和Serializable隔离级别;选项C错误,MVCC主要解决不可重复读和幻读;选项D错误,MVCC在事务提交后不再维护,但版本号信息会保留直到被覆盖或被清理。二、多选题1.A,B,C,D*解析思路:垃圾回收算法包括标记-清除、标记-整理、复制算法,而分代收集是基于前三种算法在实际应用中的组合(新生代用复制,老年代用标记-清除或标记-整理)。2.A,B*解析思路:Redis的String类型支持SET和GET。LPUSH是List类型,SADD是Set类型。3.A,B,C,D*解析思路:抽象类可以包含非抽象方法和普通成员变量;接口中的方法默认是publicabstract的(JDK8前);一个类可以实现多个接口;抽象类不能被实例化。4.A,B,C,D*解析思路:MySQL索引类型包括主键索引、唯一索引、普通索引和全文索引。哈希索引是InnoDB引擎中一种特殊的索引类型(自适应哈希索引),虽然通常不作为表索引类型直接创建,但在讨论索引时常被提及。5.A,B,C,D*解析思路:防止缓存雪崩需要多管齐下:设置随机过期时间(A)、互斥锁(B)、限流降级(C)、提前预热(D)。6.A,B,D*解析思路:创建型模式包括单例模式、工厂方法模式、抽象工厂模式、建造者模式。观察者模式属于行为型模式。7.A,B,C,D*解析思路:HashMap非线程安全、扩容可能导致死循环、底层是数组+链表+红黑树、初始容量是16。这些说法均正确。8.A,B,C,D*解析思路:消息丢失的解决手段包括生产者确认、MQ持久化、消费者手动提交、使用事务消息(如RocketMQ)。9.A,B,C,D*解析思路:TCP头部包含源端口、目的端口、序列号、确认号、标志位、窗口大小、校验和等。10.A,B,C,D*解析思路:ps查看进程,top查看实时状态,kill发送信号,netstat查看网络状态。三、简答题1.重载与重写的区别:*定义位置:重载发生在同一个类中,方法名相同,参数列表不同;重写发生在父类和子类之间,方法名、参数列表、返回值类型都必须相同。*修饰符:重写不能降低访问权限。*异常:重写抛出的异常范围不能比父类更大。*行为:重载是编译时多态(静态绑定),重写是运行时多态(动态绑定)。2.TCP三次握手及原因:*过程:1.客户端发送SYN(同步序列号)包给服务器,进入SYN_SENT状态;2.服务器收到SYN,回复SYN+ACK包,进入SYN_RCVD状态;3.客户端收到SYN+ACK,发送ACK包,双方进入ESTABLISHED状态。*原因:1.同步双方的初始序列号;2.防止失效的连接请求突然传到服务端,造成错误。例如,如果只有两次握手,客户端发出的连接请求因网络阻塞没有到达服务端,客户端超时重发,服务端误以为是新的连接请求,建立连接并等待客户端发送数据,导致服务端资源浪费。3.缓存穿透、击穿、雪崩的区别及解决方案:*缓存穿透:查询不存在的数据。解决方案:布隆过滤器拦截、查询为空时也缓存(设置短过期时间)。*缓存击穿:热点key过期,瞬间高并发查询数据库。解决方案:互斥锁(只让一个线程查库,其他等待)、逻辑过期(不设置过期时间,后台异步更新)。*缓存雪崩:大量key同时过期或Redis宕机。解决方案:随机过期时间、限流降级、缓存高可用(主从哨兵)。4.Java线程池核心参数:*corePoolSize:核心线程数,即使空闲也保持存活。*maximumPoolSize:最大线程数,超过核心线程数且队列满时创建。*keepAliveTime:非核心线程空闲后的存活时间。*workQueue:任务队列,用于存储等待执行的任务。5.B+树适合作为数据库索引的原因:*磁盘IO少:B+树节点度大(通常100-1000),树深度小(通常3-4层),大大减少了磁盘IO次数。*范围查询快:B+树所有叶子节点通过指针相连,非常适合范围查询和排序。*空间利用率高:非叶子节点只存键值和指针,不存数据,每个节点能容纳更多索引,树更矮胖。*查询稳定:无论查找数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 赢战月考 2026年秋季高三道德与法治部编版第六单元单元检测卷(含答案)
- 2027届江苏省英语中考鲁教版考前提分模拟卷(含答案)
- 2027年陕西省语文初三题型突破卷(含答案)
- 2027年台湾省英语九年级模拟演练卷(含答案)
- 2027年中考山东省语文初三考前提分卷(含答案)
- 2027年吉林省语文中考押题密卷(含答案)
- 2027年广东省语文中考冲刺模拟卷(含答案)
- 2026计算机岗事业编面试易错题集 题库含答案
- 2026 综合岗面试易错题集 题库 含答案含解析
- 2026 事业编计算机岗面试真题集 含答案含解析
- 6.3 文化自信日益增强课件(25张内嵌视频)- 2026-2027学年统编版道德与法治九年级上册
- 中国邮政集团有限公司笔试真题
- 2026年秋季开学初中开学第一课(感恩教育)课件
- 2026年药师执业资格考试真题题库及答案
- 免疫与免疫规划课件-2026-2027学年八年级上册生物学人教版
- 2026年某大型央企十五五企业级数据编织(Data Fabric)架构与主动元数据管理平台初步设计方案新版
- 火电厂施工方案大全
- 原材料质量控制措施
- 中国航空工业集团校招面试题及答案
- 雨课堂学堂在线学堂云《人工智能通识(西南交通)》单元测试考核答案
- 醒后卒中课件
评论
0/150
提交评论