版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2025四川启睿克科技有限公司招聘软件工程师岗位1人笔试历年常考点试题专练附带答案详解一、单项选择题下列各题只有一个正确答案,请选出最恰当的选项(共30题)1、在Java中,关于HashMap与Hashtable的区别,下列说法正确的是?
A.HashMap线程安全,Hashtable非线程安全
B.HashMap允许null键和值,Hashtable不允许
C.Hashtable继承自AbstractMap,HashMap继承自Dictionary
D.两者迭代器均支持fail-fast机制2、下列哪种排序算法在最坏情况下的时间复杂度为O(nlogn)?
A.快速排序
B.冒泡排序
C.堆排序
D.插入排序3、在MySQL中,下列关于索引的说法错误的是?
A.主键索引一定是聚簇索引
B.辅助索引叶子节点存储主键值
C.联合索引遵循最左前缀原则
D.索引越多越好,能显著提升所有查询速度4、SpringBoot中,默认内嵌的Web服务器是?
A.Tomcat
B.Jetty
C.Undertow
D.WebLogic5、TCP三次握手中,第二次握手服务器发送的标志位是?
A.SYN
B.ACK
C.SYN+ACK
D.FIN6、关于Redis持久化机制,RDB和AOF的主要区别是?
A.RDB实时性更高,AOF文件更小
B.AOF记录每次写命令,RDB是内存快照
C.RDB恢复速度慢于AOF
D.AOF不支持重写机制7、在Linux系统中,用于查看当前进程树结构的命令是?
A.ps-ef
B.top
C.pstree
D.netstat8、下列关于Git命令的描述,正确的是?
A.gitpull等同于gitfetch+gitmerge
B.gitcommit将变化推送到远程仓库
C.gitadd将工作区文件直接提交到远程
D.gitclone用于更新本地代码9、设计模式中,单例模式的主要目的是?
A.确保一个类只有一个实例,并提供全局访问点
B.将抽象部分与实现部分分离
C.定义对象间的一对多依赖关系
D.允许接口不兼容的类一起工作10、HTTP协议中,状态码304表示?
A.请求成功
B.未授权
C.资源未修改
D.服务器内部错误11、在Java中,关于HashMap与Hashtable的区别,下列说法正确的是?
A.HashMap线程安全,Hashtable非线程安全
B.HashMap允许null键和null值,Hashtable不允许
C.Hashtable继承自AbstractMap,HashMap继承自Dictionary
D.两者迭代器均支持fail-fast机制12、MySQL中,下列关于索引失效的场景,描述错误的是?
A.对索引列进行函数运算
B.使用LIKE'%abc'进行模糊查询
C.联合索引中跳过最左前缀列
D.使用!=或<>操作符一定导致索引失效13、Spring框架中,@Autowired和@Resource注解的主要区别在于?
A.@Autowired是JDK标准,@Resource是Spring特有
B.@Autowired默认按类型装配,@Resource默认按名称装配
C.@Autowired不支持Setter注入,@Resource支持
D.@Resource可以配合@Qualifier使用解决歧义14、Redis中,用于实现分布式锁的核心命令组合通常是?
A.SETNX+EXPIRE
B.SETkeyvalueNXEXseconds
C.GETSET+DEL
D.INCR+TTL15、关于TCP三次握手,下列说法错误的是?
A.第一次握手客户端发送SYN包
B.第二次握手服务端回复SYN+ACK包
C.第三次握手客户端发送ACK包,此时连接建立
D.三次握手主要目的是同步双方初始序列号并确认通信能力16、在Linux系统中,查看当前系统CPU负载和进程状态的命令是?
A.df-h
B.free-m
C.top
D.netstat-tuln17、设计模式中,单例模式的双重检查锁定(DCL)为何需要volatile关键字?
A.保证实例创建的原子性
B.禁止指令重排序,防止获取到未初始化完全的对象
C.提高并发访问性能
D.确保多线程下只创建一个实例的唯一性18、HTTP协议中,状态码304表示?
A.请求成功,返回资源
B.永久重定向
C.资源未修改,使用缓存
D.服务器内部错误19、关于Git版本控制,下列命令用于将暂存区内容提交到本地仓库的是?
A.gitadd.
B.gitcommit-m"msg"
C.gitpushoriginmaster
D.gitmergefeature20、算法复杂度中,快速排序在最坏情况下的时间复杂度是?
A.O(n)
B.O(nlogn)
C.O(n^2)
D.O(logn)21、在Java中,关于HashMap与Hashtable的区别,下列说法正确的是?
A.HashMap线程安全,Hashtable非线程安全
B.HashMap允许null键和值,Hashtable不允许
C.Hashtable继承自AbstractMap,HashMap继承自Dictionary
D.两者初始容量和加载因子默认值完全相同22、下列SQL语句中,用于删除表中所有数据但保留表结构的是?
A.DROPTABLE
B.DELETEFROMtable_name
C.TRUNCATETABLEtable_name
D.REMOVEALLFROMtable_name23、在SpringBoot项目中,默认内置的Web服务器是?
A.Tomcat
B.Jetty
C.Undertow
D.Netty24、关于Redis的数据类型,下列哪项不支持过期时间设置?
A.String
B.List
C.Set
D.所有类型均支持25、在Linux系统中,查看当前进程占用内存情况的命令是?
A.ps-ef
B.top
C.netstat
D.df-h26、下列关于TCP三次握手的描述,错误的是?
A.第一次握手:客户端发送SYN
B.第二次握手:服务端回复SYN+ACK
C.第三次握手:客户端回复ACK
D.第三次握手携带业务数据27、Git命令中,用于将本地分支推送到远程仓库的是?
A.gitpull
B.gitfetch
C.gitpush
D.gitmerge28、在MySQL中,InnoDB引擎支持的事务隔离级别不包括?
A.READUNCOMMITTED
B.READCOMMITTED
C.REPEATABLEREAD
D.SERIALIZABLE
E.READONLY29、下列哪种设计模式属于创建型模式?
A.适配器模式
B.单例模式
C.观察者模式
D.策略模式30、HTTP协议中,表示“服务器内部错误”的状态码是?
A.200
B.404
C.500
D.503二、多项选择题下列各题有多个正确答案,请选出所有正确选项(共15题)31、在Java后端开发中,关于HashMap与ConcurrentHashMap的描述,正确的有?
A.HashMap线程不安全
B.ConcurrentHashMap在JDK8中使用CAS+synchronized保证线程安全
C.HashMap允许key和value为null
D.ConcurrentHashMap不允许key或value为null32、关于Spring框架中Bean的生命周期及作用域,下列说法正确的是?
A.singleton是默认作用域,容器启动时创建
B.prototype作用域每次请求都创建新实例
C.@PostConstruct注解的方法在依赖注入后执行
D.Bean销毁时先执行DisposableBean接口方法,再执行destroy-method33、在MySQL数据库中,关于索引失效的场景,以下描述正确的有?
A.对索引列进行函数运算
B.使用like'%abc'进行模糊查询
C.违反最左前缀原则
D.类型隐式转换34、关于Redis持久化机制RDB和AOF,下列说法正确的是?
A.RDB适合大规模数据恢复
B.AOF实时性高于RDB
C.RDBfork子进程时会阻塞主线程
D.AOF文件过大时可触发重写35、在分布式系统中,关于CAP理论的理解,正确的有?
A.C指一致性,所有节点数据同一时刻相同
B.A指可用性,每个请求都能在合理时间内收到响应
C.P指分区容错性,系统能容忍网络分区
D.任何系统必须同时满足C、A、P三点36、关于HTTP协议状态码及方法,下列描述正确的有?
A.200表示请求成功
B.301表示永久重定向
C.403表示服务器拒绝请求
D.GET请求参数放在Body中37、在Linux系统中,常用性能分析命令及其用途匹配正确的有?
A.top:实时查看进程资源占用
B.netstat:查看网络连接状态
C.df:查看磁盘inode使用情况
D.free:查看内存使用情况38、关于设计模式中的单例模式,实现方式正确的有?
A.饿汉式:类加载时初始化,线程安全
B.懒汉式:双重检查锁定(DCL)需配合volatile
C.静态内部类:利用类加载机制保证线程安全
D.枚举:能有效防止反射攻击和反序列化破坏39、关于Git版本控制常用操作,下列说法正确的有?
A.gitcommit将暂存区内容提交到本地仓库
B.gitpush将本地分支推送到远程仓库
C.gitmerge用于合并分支
D.gitrebase会创建新的合并提交节点40、在微服务架构中,关于服务注册与发现,下列说法正确的有?
A.Eureka遵循AP原则
B.Nacos支持CP和AP模式切换
C.Zookeeper遵循CP原则
D.Consul仅支持健康检查,不支持KV存储41、在Java后端开发中,关于HashMap与ConcurrentHashMap的区别,下列说法正确的有?
A.HashMap线程不安全,ConcurrentHashMap线程安全
B.HashMap允许key或value为null,ConcurrentHashMap不允许
C.ConcurrentHashMap在JDK8中使用CAS+synchronized保证线程安全
D.两者迭代过程中都支持结构性修改42、关于MySQL索引优化,以下场景适合建立索引的有?
A.经常作为WHERE查询条件的字段
B.区分度极低的性别字段
C.频繁进行ORDERBY排序的字段
D.表记录数极少(如少于10条)的表43、在Spring框架中,关于Bean的生命周期和作用域,描述正确的有?
A.singleton作用域的Bean在容器启动时默认创建
B.prototype作用域的Bean每次请求都会创建新实例
C.Bean销毁时一定会执行destroy方法
D.@PostConstruct注解的方法在初始化回调之后执行44、关于Redis持久化机制RDB和AOF,下列说法正确的有?
A.RDB适合大规模数据恢复,速度比AOF快
B.AOF默认每秒同步一次,可能丢失1秒数据
C.RDB生成期间会阻塞主进程写入
D.AOF文件体积通常比RDB小45、在Linux系统中,用于查看系统资源和进程状态的命令有?
A.top
B.ps-ef
C.free-m
D.mkdir三、判断题判断下列说法是否正确(共10题)46、在Java中,String对象一旦创建便不可修改,因此对String进行拼接操作会生成新的对象。判断该说法是否正确?A.正确B.错误47、TCP协议是面向连接的、可靠的传输层协议,而UDP协议是无连接的、不可靠的传输层协议。判断该说法是否正确?A.正确B.错误48、在MySQL数据库中,索引越多越好,因为索引可以显著加快所有查询语句的速度。判断该说法是否正确?A.正确B.错误49、HTTP协议中,GET请求用于获取资源,POST请求用于提交数据,GET请求的参数包含在URL中,因此比POST更安全。判断该说法是否正确?A.正确B.错误50、在Linux系统中,chmod755filename命令表示文件所有者拥有读、写、执行权限,而组用户和其他用户仅拥有读和执行权限。判断该说法是否正确?A.正确B.错误51、Spring框架中,@Autowired注解默认按照类型(byType)进行依赖注入,若存在多个相同类型的Bean,则必须配合@Qualifier指定名称。判断该说法是否正确?A.正确B.错误52、算法的时间复杂度O(n^2)一定比O(nlogn)慢,因此在任何情况下都应优先选择O(nlogn)的算法。判断该说法是否正确?A.正确B.错误53、Redis是一种基于内存的键值对存储系统,支持持久化,因此重启后数据不会丢失,适合用作主数据库长期存储海量数据。判断该说法是否正确?A.正确B.错误54、在设计模式中,单例模式确保一个类只有一个实例,并提供一个全局访问点。懒汉式单例在多线程环境下必须加锁以保证线程安全。判断该说法是否正确?A.正确B.错误55、Git版本控制系统中,gitcommit命令会将工作区的修改直接提交到远程仓库。判断该说法是否正确?A.正确B.错误
参考答案及解析1.【参考答案】B【解析】HashMap是非线程安全的,允许一个null键和多个null值;Hashtable是线程安全的(通过synchronized),不允许任何null键或值。HashMap继承自AbstractMap,而Hashtable继承自Dictionary。HashMap的迭代器是fail-fast的,但Hashtable的枚举器不是。因此,B选项描述准确,是两者最显著的区别之一,常用于考察集合框架的基础知识。2.【参考答案】C【解析】快速排序在最坏情况下(如数组已有序)退化为O(n^2);冒泡排序和插入排序的最坏时间复杂度均为O(n^2)。堆排序无论最好、最坏还是平均情况,其时间复杂度始终保持在O(nlogn),因为它基于完全二叉树结构,调整堆的操作稳定。因此,在对最坏情况性能有严格要求的场景下,堆排序优于快速排序。故选C。3.【参考答案】D【解析】InnoDB引擎中,主键索引确实是聚簇索引,数据存储在叶子节点。辅助索引(二级索引)叶子节点存储的是索引列值和主键值,用于回表。联合索引检索时需遵循最左前缀原则。然而,索引并非越多越好,过多的索引会占用存储空间,并降低插入、更新和删除操作的性能,因为每次数据变动都需维护索引树。因此D说法错误。4.【参考答案】A【解析】SpringBoot旨在简化Spring应用的初始搭建和开发过程。在spring-boot-starter-web依赖中,默认包含并启用的是ApacheTomcat作为内嵌Web服务器。虽然SpringBoot也支持Jetty和Undertow,但需要排除Tomcat依赖并引入相应starter才能切换。WebLogic是传统的外部应用服务器,不属于SpringBoot默认内嵌容器。因此,默认选项为Tomcat。5.【参考答案】C【解析】TCP建立连接需要三次握手。第一次:客户端发送SYN包;第二次:服务器收到SYN后,回复SYN+ACK包,既确认客户端的SYN,又发送自己的SYN请求;第三次:客户端回复ACK包,确认服务器的SYN。FIN用于断开连接。因此,第二次握手服务器发送的是SYN和ACK标志位同时置1的数据段,故选C。6.【参考答案】B【解析】RDB(RedisDatabase)是在指定时间点生成内存数据的二进制快照,文件紧凑,恢复快,但可能丢失最后一次快照后的数据。AOF(AppendOnlyFile)记录服务器执行的所有写操作命令,实时性更高,但文件体积通常较大,恢复速度相对较慢。AOF支持重写(Rewrite)以压缩文件体积。因此,B选项准确描述了两者的核心机制差异。7.【参考答案】C【解析】ps-ef用于列出当前所有进程的详细信息;top用于实时显示系统资源使用情况和进程状态;netstat用于显示网络连接、路由表等信息。pstree命令则以树状图的形式展示进程之间的父子关系,直观地呈现进程树结构。因此,若需查看进程树,应使用pstree命令。故选C。8.【参考答案】A【解析】gitpull的作用是从远程获取最新版本并合并到本地,实质上是先执行gitfetch下载远程更新,再执行gitmerge合并分支。gitcommit仅将暂存区内容提交到本地仓库,而非远程;gitadd是将工作区修改添加到暂存区;gitclone用于从远程克隆整个仓库到本地,而非更新代码(更新常用pull)。因此,A选项描述正确。9.【参考答案】A【解析】单例模式(SingletonPattern)是一种创建型设计模式,其核心意图是确保一个类在整个应用程序生命周期中只有一个实例存在,并提供一个全局访问点来获取该实例。B描述的是桥接模式,C描述的是观察者模式,D描述的是适配器模式。单例模式常用于管理共享资源,如数据库连接池或配置管理器。故选A。10.【参考答案】C【解析】HTTP状态码200表示请求成功;401表示未授权,需要身份验证;500表示服务器内部错误。304NotModified表示客户端发送了带条件的请求(如If-Modified-Since),服务器判断资源自上次请求后未被修改,因此不返回实体内容,告知客户端使用本地缓存。这有助于减少带宽消耗和提升加载速度。故选C。11.【参考答案】B【解析】HashMap是非线程安全的,允许一个null键和多个null值;Hashtable是线程安全的(通过synchronized修饰),不允许任何null键或值。Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。HashMap的迭代器是fail-fast的,但Hashtable的枚举器不是。因此,B选项描述准确,体现了两者在空值处理上的核心差异,是后端开发面试中的高频考点。12.【参考答案】D【解析】A、B、C均为典型的索引失效场景。对于D,虽然!=或<>通常会导致全表扫描,但如果查询覆盖索引或数据分布极端,优化器仍可能选择索引。相比之下,A、B、C是绝对失效规则。特别是B,前缀模糊查询无法利用B+树有序性;C违反最左前缀原则。D选项表述过于绝对,故为错误描述。在实际调优中,需结合Explain执行计划分析,而非死记硬背。13.【参考答案】B【解析】@Autowired是Spring提供的注解,默认按byType自动装配;@Resource是JSR-250规范定义的JDK标准注解,默认按byName自动装配,若名称匹配失败则回退到byType。A选项反了;C选项两者均支持字段、Setter和构造器注入;D选项中,@Autowired常配合@Qualifier使用,而@Resource通过name属性指定。理解装配策略差异有助于解决Bean注入冲突问题,是Spring核心考点。14.【参考答案】B【解析】早期使用SETNX加EXPIRE两步操作,存在非原子性风险,若第一步成功第二步失败会导致死锁。Redis2.6.12后,SET命令扩展支持NX(不存在才设置)和EX(过期时间)参数,保证了设置值和过期时间的原子性,是实现分布式锁的最佳实践。C、D方案逻辑复杂且易出错。B选项确保了锁的互斥性和防死锁特性,是高并发场景下的标准解法。15.【参考答案】C【解析】A、B、D描述正确。C选项表述有细微偏差:第三次握手客户端发送ACK包,当服务端收到该ACK后,连接才算真正建立。仅发送ACK并不代表连接已完成建立,必须服务端确认收到。此外,三次握手的核心目的确实是同步ISN(初始序列号)并防止已失效的连接请求报文段突然又传送到了服务端,从而产生错误。此题考察对状态机流转的精确理解。16.【参考答案】C【解析】df-h用于查看磁盘空间使用情况;free-m用于查看内存使用情况;netstat-tuln用于查看网络端口监听状态。top命令实时显示系统中各个进程的资源占用状况,包括CPU负载、内存使用、进程ID等,是性能排查的首选工具。htop是其增强版。掌握常用运维命令是软件工程师的基本素养,尤其在服务器端问题定位时至关重要。17.【参考答案】B【解析】DCL中,instance=newSingleton()并非原子操作,分为分配内存、初始化、指向引用三步。若无volatile,可能发生指令重排序,导致其他线程获取到尚未初始化完成的对象引用。volatile通过内存屏障禁止重排序,确保对象初始化完成后才赋值引用。A、D是synchronized的作用,C错误,volatile反而略有性能损耗。此题考察Java内存模型(JMM)深层原理。18.【参考答案】C【解析】200表示请求成功;301表示永久重定向;500表示服务器内部错误。304NotModified表示客户端发送了带条件的请求(如If-Modified-Since),服务端判断资源未修改,不返回实体内容,告知客户端使用本地缓存。这有助于减少带宽消耗,提升加载速度。理解HTTP状态码及其缓存机制,对于前端性能优化和后端接口设计具有重要意义。19.【参考答案】B【解析】gitadd.是将工作区修改添加到暂存区;gitcommit-m"msg"是将暂存区内容提交到本地版本库,生成commit记录;gitpush是将本地提交推送到远程仓库;gitmerge用于分支合并。清晰区分工作区、暂存区和本地仓库的概念,是正确使用Git的基础。B选项准确描述了提交动作,是日常开发最高频使用的命令之一。20.【参考答案】C【解析】快速排序平均时间复杂度为O(nlogn),但在最坏情况下(如数组已有序且每次选第一个元素为基准),退化为冒泡排序,时间复杂度为O(n^2)。空间复杂度最坏为O(n)。虽然最坏情况少见,但面试中常考其与归并排序(稳定O(nlogn))的对比。优化策略包括随机选取基准或三数取中。理解复杂度边界有助于评估算法在极端数据下的表现。21.【参考答案】B【解析】HashMap是非线程安全的,允许key和value为null;而Hashtable是线程安全的(通过synchronized修饰),不允许key或value为null。Hashtable继承自Dictionary类,HashMap继承自AbstractMap类。HashMap默认初始容量16,加载因子0.75;Hashtable默认初始容量11,加载因子0.75。因此A、C、D错误,B正确。在实际开发中,若需线程安全,推荐使用ConcurrentHashMap而非Hashtable,因其性能更优。22.【参考答案】C【解析】DROPTABLE会删除表结构及数据;DELETEFROM逐行删除数据,可回滚,速度较慢;TRUNCATETABLE一次性清空数据,重置自增计数器,不可回滚(在大多数数据库中),速度快且保留表结构;REMOVE不是标准SQL关键字。对于大量数据清理,TRUNCATE效率最高。注意:TRUNCATE属于DDL操作,而DELETE属于DML操作。在面试中常考二者区别及事务特性。23.【参考答案】A【解析】SpringBoot默认使用Tomcat作为嵌入式Servlet容器。开发者可以通过排除tomcat依赖并引入jetty或undertowstarter来切换容器。Netty通常用于响应式编程(如SpringWebFlux)而非传统的Servlet栈。了解默认配置有助于快速排查启动问题和性能调优。Tomcat因其稳定性和广泛社区支持成为首选默认值。24.【参考答案】D【解析】Redis的所有主要数据类型(String、List、Set、ZSet、Hash)都支持通过EXPIRE或EXPIREAT命令设置键的过期时间。过期时间是针对Key而言的,而非具体Value的内部结构。当Key过期后,整个键值对会被删除。因此,选项D正确。理解这一点对于缓存策略设计至关重要,避免误以为只有特定类型才能设TTL。25.【参考答案】B【解析】top命令实时显示系统进程状态,包括CPU和内存占用率;ps-ef列出静态进程信息;netstat查看网络连接;df-h查看磁盘空间。top是监控资源消耗最常用的工具,可通过按M键按内存排序。掌握基本Linux运维命令是后端工程师的必备技能,有助于快速定位服务异常原因。26.【参考答案】D【解析】TCP三次握手旨在建立连接,同步序列号。前两次不携带应用层数据。第三次握手理论上可以携带数据,但在标准实现和常规理解中,握手阶段主要完成连接建立,业务数据通常在连接建立后的数据传输阶段发送。严格来说,D选项表述具有误导性,因为虽然协议允许,但通常不在此阶段处理业务逻辑,且多数教材强调握手仅用于连接控制。相较其他绝对正确的选项,D为最佳干扰项。注:部分新标准允许带数据,但传统考点视其为纯控制报文。27.【参考答案】C【解析】gitpush用于上传本地提交到远程仓库;gitpull等于fetch加merge,用于拉取更新;gitfetch仅下载远程元数据而不合并;gitmerge用于合并分支。掌握Git工作流是团队协作的基础。push操作需注意分支对应关系,常用gitpushoriginmaster或简写gitpush。28.【参考答案】E【解析】MySQLInnoDB支持四种标准SQL隔离级别:读未提交、读已提交、可重复读(默认)、串行化。READONLY不是隔离级别,而是事务访问模式(只读事务)。混淆概念是常见考点。理解隔离级别有助于解决脏读、不可重复读和幻读问题,提升数据库并发控制能力。29.【参考答案】B【解析】单例模式确保一个类只有一个实例,属于创建型模式。适配器模式属于结构型,观察者和策略模式属于行为型。设计模式分为三大类:创建型(关注对象创建)、结构型(关注类组合)、行为型(关注交互)。熟记分类有助于在系统设计中选择合适模式解耦代码。30.【参考答案】C【解析】200表示成功;404表示资源未找到;500表示服务器内部错误(如代码异常);503表示服务不可用(通常因过载或维护)。区分4xx(客户端错误)和5xx(服务端错误)对调试API至关重要。500通常意味着后端逻辑崩溃,需查看服务器日志排查。31.【参考答案】ABCD【解析】HashMap是非线程安全的,多线程环境下需使用Collections.synchronizedMap或ConcurrentHashMap。JDK8中ConcurrentHashMap摒弃了分段锁,采用Node数组+链表+红黑树结构,利用CAS和synchronized锁定链表头节点来实现并发控制,粒度更细。HashMap设计上允许键值为null,而ConcurrentHashMap为避免二义性(如get返回null是表示无映射还是值为null),严格禁止key和value为null。掌握这些底层区别对于高并发场景下的数据结构选型至关重要。32.【参考答案】BCD【解析】SpringBean默认作用域为singleton,但非懒加载模式下容器启动时创建,若配置lazy-init则为首次获取时创建,故A表述不严谨。prototype作用域确实每次请求创建新实例,Spring不管理其完整生命周期。@PostConstruct标注的方法在依赖注入完成后、初始化回调前执行。销毁阶段,Spring先调用DisposableBean的destroy()方法,随后调用自定义的destroy-method,确保资源正确释放。理解生命周期有助于处理初始化和清理逻辑。33.【参考答案】ABCD【解析】索引失效常见场景包括:1.对索引列做计算或使用函数,导致优化器无法直接使用索引;2.like查询以通配符开头(%abc),无法利用B+树有序性;3.联合索引未遵循最左前缀原则,跳过左侧列;4.字符串字段与数字比较发生隐式类型转换,导致索引失效。此外,OR连接条件中若有列无索引也会导致全表扫描。开发人员应避免上述写法,必要时使用覆盖索引或强制索引提示,以提升查询效率。34.【参考答案】ABD【解析】RDB通过快照保存数据,文件紧凑,适合灾难恢复和备份,但可能丢失最后一次快照后的数据。AOF记录每条写命令,实时性更高,最多丢失一秒数据。RDB生成时fork子进程,利用Copy-On-Write技术,fork瞬间会阻塞主线程,但后续写入由子进程完成,不阻塞主线程读写。AOF文件随时间增长,Redis提供BGREWRITEAOF进行重写,压缩体积并合并命令。生产环境常混合使用两者以平衡性能与安全性。35.【参考答案】ABC【解析】CAP理论指出分布式系统无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partitiontolerance)。C指数据强一致;A指服务始终可用;P指网络故障时系统仍能运行。由于网络分区不可避免,P是必须保证的,因此实际系统通常在CP(如Zookeeper)和AP(如Eureka)之间权衡。D错误,因为三者不可兼得。理解CAP有助于根据业务场景选择合适的分布式中间件和架构策略。36.【参考答案】ABC【解析】200OK表示请求已成功处理。301MovedPermanently表示资源已永久移动到新URI。403Forbidden表示服务器理解请求但拒绝执行,通常因权限不足。GET请求参数应附加在URL查询字符串中,而非Body,虽然技术上某些客户端支持,但不符合规范且缓存机制不同。POST请求参数才放在Body中。掌握标准状态码和语义有助于前端正确处理响应及SEO优化。37.【参考答案】ABD【解析】top是常用的实时性能监控工具,显示CPU、内存等使用情况。netstat用于显示网络连接、路由表等信息。free用于展示系统内存的使用总量、已用、空闲等详情。df主要用于查看文件系统磁盘空间使用情况,若需查看inode使用情况需加-i参数,故C描述不准确。熟练掌握这些命令能快速定位服务器负载高、网络异常或磁盘满等问题,是后端工程师必备技能。38.【参考答案】ABCD【解析】饿汉式在类加载时创建实例,天然线程安全但可能浪费资源。懒汉式DCL需将实例变量声明为volatile,防止指令重排导致半初始化对象被引用。静态内部类方式利用JVM类加载机制,仅在第一次调用getInstance时加载内部类并初始化实例,既懒加载又线程安全。枚举单例由JVM保证唯一性,简洁且能自动处理序列化和反射攻击,是EffectiveJava推荐的最佳实践。39.【参考答案】ABC【解析】gitcommit将gitadd添加至暂存区的更改提交到本地版本库。gitpush将本地commits同步到远程仓库。gitmerge用于将指定分支的历史合并到当前分支,会产生一个mergecommit节点。gitrebase则是变基,它将当前分支的提交“重新播放”到目标分支顶端,不会创建合并节点,保持历史线性整洁,但会修改提交哈希。理解merge与rebase的区别有助于维护清晰的协作历史。40.【参考答案】ABC【解析】Eureka设计注重可用性,节点平等,部分节点宕机不影响注册发现,符合AP。Nacos作为阿里开源组件,支持临时实例(AP)和持久实例(CP)模式切换,灵活性强。Zookeeper基于Zab协议,保证强一致性,符合CP,但在Leader选举期间不可用。Consul不仅提供服务发现和healthcheck,还支持Key/Value存储和多数据中心,故D错误。选型时需结合业务对一致性和可用性的需求。41.【参考答案】ABC【解析】HashMap非线程安全,高并发下易死循环或数据丢失;ConcurrentHashMap通过分段锁(JDK7)或CAS+synchronized(JDK8)实现线程安全。HashMap允许null键值,而ConcurrentHashMap为避免歧义禁止null。迭代时,HashMap快速失败,ConcurrentHashMap弱一致性,不支持结构性修改导致的并发异常,但也不保证实时可见性。D错误,因为ConcurrentHashMap迭代器是弱一致的,虽不抛异常,但通常不建议在迭代中进行结构性修改,且题目强调“支持”易误导,严格来说迭代期间结构修改行为未定义或不保证立即反映。故选ABC。42.【参考答案】AC【解析】索引旨在加速检索和排序。A项,WHERE条件字段建索引可大幅减少扫描行数,正确。C项,排序字段建索引可利用索引有序性避免文件排序,正确。B项,性别字段区分度低(仅男/女),索引选择性差,优化器往往全表扫描,建索引意义不大。D项,数据量极小时,全表扫描开销小于索引维护及回表开销,无需建索引。因此,适合建索引的是高频查询和排序字段,且需具备一定区分度。故选AC。43.【参考答案】AB【解析】Spring默认singleton单例,容器启动时预实例化(除非lazy-init),A正确。prototype原型模式每次getBean均新建实例,B正确。C错误,只有singletonBean由容器管理销毁,prototypeBean由客户端管理,容器不调用destroy。D错误,@PostConstruct标注的方法属于初始化回调的一部分,它在依赖注入完成后、init-method之前执行,而非之后。生命周期顺序:实例化->属性赋值->初始化(@PostConstruct/init-method)->使用->销毁。故选AB。44.【参考答案】AB【解析】RDB是快照,二进制紧凑,恢复速度快,适合灾难恢复,A正确。AOF记录写命令,appendfsynceverysec策略下最多丢1秒数据,B正确。RDB生成时fork子进程,主进程不阻塞,利用Copy-On-Write技术,C错误。AOF记录所有写操作,随着时间推移文件体积通常远大于RDB,需定期重写,D错误。综上,RDB优势在恢复速度和体积,AOF优势在数据安全性。故选AB。45.【参考答案】ABC【解析】top实时显示系统整体资源占用及进程状态,A正确。ps-ef列出当前所有进程的详细信息,B正确。free-m以MB为单位显示内存使用情况,C正确。mkdir用于创建目录,与资源监控无关,D错误。运维中常组合使用这些命令排查性能瓶颈,如CPU飙高用top定位进程,内存不足用free检查,确认进程存在用ps。故选ABC。46.【参考答案】A【解析】String类在Java中被设计为不可变类(Immutable)。每次使用“+”进行拼接时,JVM实际上会在堆内存中创建一个新的String对象来存储结果,原对象保持不变。频繁拼接会导致大量临时对象产生,增加GC压力。因此在循环中推荐使用StringBuilder或StringBuffer以提升性能。该描述符合Java语言规范及内存管理机
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年校长返岗实践中的问题与对策
- 2026年医院药学副高答辩常见问题
- 2026年幼儿感统训练保育案例反思
- 2026年清洁验证方法与风险评估培训计划
- 2026年参数化设计在建筑设计中的未来潜力
- 2026年Android移动应用开发综合实训教程
- 褥疮治疗中的疼痛管理策略
- 2026年电力应急排水设备(潜水泵等)配置标准
- 2026年徒手健身:随时随地科学锻炼指南
- 2026年咖啡师点单制作与顾客互动服务技巧
- 中医药文化知识进校园
- 新视野大学英语(第四版)读写教程2(思政智慧版) 课件 Unit3 The young generation making a difference Section A
- 2023年6月福建高考生物真题(含答案)
- (完整word版)中医病证诊断疗效标准
- GB/T 9126.1-2023管法兰用非金属平垫片第1部分:PN系列
- 小学道法6 人大代表为人民1课件
- 磨机负荷的磨音多频带检测研究-毕业论文
- 茶餐厅工作手册模板
- 海产鱼类增养殖试题库
- GB/T 700-2006碳素结构钢
- GB/T 16477.1-1996稀土硅铁合金及镁硅铁合金化学分析方法稀土总量测定
评论
0/150
提交评论