版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大厂Java工程师笔试真题(含详细答案)适用场景:互联网大厂校招/社招笔试、后端开发基础考核考核范围:Java基础、集合框架、多线程、JVM、Spring核心、MySQL、Redis、编程算法难度:中等(贴合真实大厂笔试难度,无偏题怪题)一、单项选择题(10题,每题2分,共20分)1.以下关于==和equals()的说法,正确的是()A.基本数据类型可以用equals()比较值B.String的==比较的是对象地址,equals()比较的是字符串内容C.所有类的equals()方法默认比较的是内容D.null==null会报错答案:B详细解析:1.基本数据类型只有==比较运算符,没有equals()方法,A错误;2.Object类的equals()方法默认底层就是==,比较对象地址,只有重写后的类(String、Integer等)才会比较内容,C错误;3.null==null结果为true,不会报错,null调用equals()才会空指针,D错误;4.String重写了equals(),专门比较字符内容,==仅比较堆内存地址,B正确。2.下列关于final、finally、finalize的说法错误的是()A.final修饰的变量不可二次赋值B.finally代码块一定会执行C.finalize是Object类的方法,用于垃圾回收前资源释放D.final修饰的方法不能被重写答案:B详细解析:finally并非绝对执行:如果在try块中执行了System.exit(0)退出JVM、程序断电崩溃,finally不会执行。final变量不可二次赋值、final方法禁止重写、final类禁止继承,finalize为GC回收对象前的回调方法,目前已被废弃。3.ArrayList和LinkedList的核心区别,说法错误的是()A.ArrayList底层是数组,查询快、增删慢B.LinkedList底层是双向链表,增删快、查询慢C.ArrayList线程安全,LinkedList线程不安全D.两者都可以存储null元素答案:C详细解析:ArrayList、LinkedList都是非线程安全集合,多线程并发读写会出现数据覆盖、数据不一致问题。Vector是线程安全的数组集合。其余选项均为两者的核心特性。4.以下不属于JVM垃圾回收根节点(GCRoots)的是()A.虚拟机栈中引用的对象B.本地方法栈JNI引用的对象C.被重复引用的普通对象D.方法区静态变量引用的对象答案:C详细解析:常见GCRoots包含:虚拟机栈引用对象、本地方法栈引用对象、方法区静态/常量引用对象、虚拟机内部引用对象。普通对象无论被引用多少次,都不属于GCRoots,没有从根节点出发的引用链的对象会被判定为垃圾。5.关于Java线程sleep和wait方法,说法正确的是()A.sleep和wait都会释放锁B.sleep是Object类方法,wait是Thread类方法C.sleep无需同步锁,wait必须在同步代码块中执行D.sleep可以被notify唤醒答案:C详细解析:1.sleep()是Thread类静态方法,不释放锁、无需同步条件,超时自动唤醒;2.wait()是Object类方法,必须在同步锁内执行,执行后释放锁,需被notify()/notifyAll()唤醒;3.两者归属类、锁行为、唤醒方式完全不同。6.Spring中@Autowired和@Resource的区别,说法错误的是()A.@Autowired默认按类型注入B.@Resource默认按名称注入C.@Autowired是JSR原生注解,@Resource是Spring注解D.@Autowired可以配合@Qualifier指定名称注入答案:C详细解析:@Resource是JSR250标准原生注解,@Autowired是Spring框架提供的专属注解。其余特性均正确:@Autowired默认byType,配合@Qualifier实现byName;@Resource优先byName,名称匹配失败再byType。7.MySQL中,以下索引查询效率最高的是()A.普通索引B.主键索引C.唯一索引D.联合索引答案:B详细解析:主键索引是聚簇索引,索引和数据存储在同一个节点,查询无需回表;普通索引、唯一索引为二级索引,查询到索引后需要回表查询完整数据,效率低于主键索引。8.下列关于Java异常的说法正确的是()A.RuntimeException属于编译时异常B.checked异常必须主动捕获或抛出C.Error可以被try-catch捕获处理D.所有异常都必须手动处理答案:B详细解析:1.RuntimeException是运行时异常,无需强制处理,A错误;2.Checked编译时异常,语法要求必须try-catch或throws抛出,B正确;3.Error是系统级严重错误(OOM、栈溢出),无法捕获处理,C错误;4.运行时异常无需手动处理,D错误。9.Redis中String类型的最大value大小是()A.64MBB.128MBC.512MBD.1GB答案:A详细解析:Redis规定所有key对应的value最大容量为64MB,这是固定限制,也是日常开发中不建议用String存储超大文本、文件的核心原因。10.Java中接口和抽象类的区别,说法正确的是()A.抽象类可以有构造方法,接口不能有构造方法B.抽象类和接口都能定义实例变量C.一个类只能实现一个接口,可继承多个抽象类D.抽象类和接口都支持多继承答案:A详细解析:1.抽象类有构造方法,用于子类初始化;接口无构造方法,A正确;2.接口变量默认是publicstaticfinal常量,不能定义实例变量,B错误;3.类可实现多个接口,只能继承一个抽象类,C错误;4.类不支持多继承抽象类,接口支持多实现,D错误。二、填空题(5题,每题3分,共15分)1.Java中基本数据类型共有____种,其中浮点型包含____、____。答案:8、float、double解析:8种基本类型:byte、short、int、long、float、double、char、boolean2.线程的五大状态分别是:新建、就绪、____、____、终止。答案:运行、阻塞解析:完整线程生命周期:新建(New)→就绪(Runnable)→运行(Running)→阻塞(Blocked)→终止(Terminated)3.JVM内存区域中,____是线程私有内存,____是线程共享内存。答案:虚拟机栈/本地方法栈/程序计数器、堆/方法区4.MySQL事务四大特性ACID分别是:原子性、____、____、持久性。答案:一致性、隔离性5.HashMap在JDK1.8中,底层是____+____,链表长度超过____会转为红黑树。答案:数组、链表、8解析:JDK1.8优化HashMap结构,数组+链表+红黑树,链表长度≥8且数组容量≥64触发树化,长度≤6退化为链表。三、简答题(5题,每题7分,共35分)1.简述HashMap的工作原理,以及JDK1.7和JDK1.8的核心优化?详细答案:HashMap基于哈希表思想实现,通过hash算法计算key的哈希值,定位数组下标位置存储键值对,解决哈希冲突采用链地址法。JDK1.7问题:底层仅数组+链表,链表过长查询效率极低;扩容时头插法,多线程环境易出现环形链表、数据丢失问题。JDK1.8核心优化:1.数据结构优化:新增红黑树,链表长度超过8转为红黑树,将查询时间复杂度从O(n)降至O(logn);2.插入方式优化:改为尾插法,避免多线程扩容产生环形链表;3.扩容优化:优化hash扰动算法,减少哈希冲突,提升数据分布均匀度;4.新增树化、退化阈值,平衡查询和存储性能。2.简述volatile关键字的作用、底层原理,以及无法保证原子性的原因?详细答案:作用:保证变量的可见性和有序性,禁止指令重排,不保证原子性。底层原理:基于CPU内存屏障实现。写volatile变量时,会强制将工作内存数据刷新到主内存;读volatile变量时,会强制从主内存读取最新数据,清空工作内存缓存,保证多线程间数据可见。同时通过内存屏障禁止指令重排序。无法保证原子性原因:volatile仅保证单次读写操作可见有序,复合操作(i++、i+=1)是「读取-计算-写入」三步操作,多线程下三步操作会交叉执行,无法保证操作不可分割,因此不具备原子性。如需原子性,需使用synchronized或Atomic原子类。3.简述SpringIoC的核心原理和作用?详细答案:核心原理:IoC即控制反转,将对象的创建、初始化、依赖管理、销毁的控制权,从业务代码中剥离,统一交给Spring容器管理。通过XML配置、注解扫描等方式扫描Bean,解析依赖关系,通过反射机制实例化对象,完成依赖注入。核心作用:1.解耦:彻底解除代码硬依赖,无需手动new对象,降低模块耦合度;2.统一管理:容器统一管理Bean的生命周期、作用域、依赖关系;3.便于扩展:配合AOP、事务、拦截器等功能,实现统一增强;4.简化开发:减少重复的对象创建、资源管理代码,提升开发效率。4.简述MySQL索引失效的常见场景?详细答案:1.索引列使用函数、运算、类型转换,如wheredate_format(create_time,'%Y-%m-%d')='2026-09-01';2.模糊查询左匹配,如%xxx、%xxx%,仅xxx%可走索引;3.索引列使用!=、<>、notin、notexists;4.字符串索引字段未加引号,发生隐式类型转换;5.联合索引不满足最左前缀原则,跳过前置索引列查询;6.MySQL判断全表扫描比索引查询更快时,会主动放弃索引;7.or连接的条件中,有字段无索引,会导致整体索引失效。5.简述Redis缓存穿透、缓存击穿、缓存雪崩的区别及解决方案?详细答案:1.缓存穿透:查询数据库和缓存都不存在的数据,大量请求直接打穿到数据库。解决方案:缓存空值、布隆过滤器、接口参数校验拦截非法请求。2.缓存击穿:热点key过期瞬间,大量并发请求同时访问数据库。解决方案:热点key永不过期、互斥锁、异步预热更新缓存。3.缓存雪崩:大量key同时过期,或Redis服务宕机,导致所有请求直达数据库,压垮数据库。解决方案:过期时间加随机值、Redis集群高可用、服务熔断降级、多级缓存。四、编程题(2题,共30分)1.基础编程:手写单例模式(双重检查锁DCL,保证线程安全)(15分)标准答案代码:java
publicclassSingleton{
//volatile禁止指令重排,避免半初始化对象泄露
privatestaticvolatileSingletoninstance;
//私有构造方法,禁止外部实例化
privateSingleton(){}
//双重检查锁实现单例
publicstaticSingletongetInstance(){
//第一次校验:避免每次进入同步代码块,提升效率
if(instance==null){
synchronized(Singleton.class){
//第二次校验:防止多线程等待锁时重复创建对象
if(instance==null){
instance=newSingleton();
}
}
}
returninstance;
}
}核心考点解析:1.私有构造方法,杜绝外部new创建;2.volatile修饰实例,防止new对象时指令重排导致的空指针问题;3.双重校验,兼顾线程安全和执行效率,是业务中最常用的单例实现方式。2.算法编程:数组去重并有序输出(不使用集合工具类,手写实现)(15分)需求:给定一个无序int数组,去除重复元素,返回升序排序后的新数组标准答案代码:java
publicclassArrayDistinctSort{
publicstaticvoidmain(String[]args){
int[]arr={2,5,1,2,5,3,1,4,3};
int[]result=distinctAndSort(arr);
//输出结果:[1,2,3,4,5]
for(intnum:result){
System.out.print(num+"");
}
}
publicstaticint[]distinctAndSort(int[]arr){
if(arr==null||arr.length==0){
returnnewint[0];
}
//1.冒泡排序先排序数组
intlen=arr.length;
for(inti=0;i<len-1;i++){
for(intj=0;j<len-1-i;j++){
if(arr[j]>arr[j+1]){
inttemp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
//2.统计去重后元素个数
intcount=1;
for(inti=1;i<len;i++){
if(arr[i]!=arr[i-1]){
count++;
}
}
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026上海出版印刷高等专科学校第三批招聘专任教师3人考试备考试题及答案解析
- 2026年天津市河西区事业单位人员招聘笔试试题与答案详解
- 2026年铁路运输行业产业分析报告及未来五至十年产业链与价值链重构分析
- 2026年江西省建筑设计研究总院集团有限公司第二批岗位招聘11人考试模拟试题及答案解析
- 2026年广西壮族自治区来宾市公务员人员招聘笔试试题与答案详解
- 2026沈阳市城市建设投资集团有限公司所属企业沈阳市绿化造园建设集团有限公司招聘考试备考试题及答案解析
- 江苏省连云港市新海实验中学2027届中考押题物理预测卷含解析
- 2026实木家具跨境电商物流解决方案报告
- 2026区块链技术在实木溯源防伪中的应用实践
- 2026景宁畲族自治县国有企业公开招聘工作人员12人笔试模拟试题及答案解析
- 2026福建闽投湄洲湾发电有限公司社会招聘21人笔试备考题库及答案详解
- 《新能源汽车电池及管理系统检修》 课件 项目四.动力电池热管理系统检修
- 老旧小区加装电梯连廊排水安全评估标准
- 职场新人职业规划攻略
- 2025财务制度新规定
- 2026年放射防护培训试题及答案
- 能源体系内审培训课件
- 浙江省台金七校联盟2025-2026学年高一上学期11月期中考试化学试卷
- 幼儿园小班语言《会响的小路》课件
- 助理值班员(中级)技能鉴定理论题及答案
- 2025年度化工厂危化品应急演练计划
评论
0/150
提交评论