版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java经典笔试真题(含详细答案解析)本套试题为企业高频Java笔试真题,涵盖Java基础核心、面向对象、字符串、集合、异常、多线程、基础算法等核心考点,题型包含选择题、判断题、简答题、编程题,适配初级开发岗位笔试场景,解析通俗易懂、贴合实际开发。一、单项选择题(10题)1、以下关于Java基本数据类型说法正确的是()A、boolean类型占用1个字节B、char类型可以存储中文汉字C、float类型赋值可以直接写10.0D、long类型后缀可以不加L答案:B解析:1.boolean类型没有明确固定字节大小,虚拟机规范仅定义取值为true/false,A错误;2.char是16位无符号类型,占用2字节,可存储单个中文汉字,B正确;3.小数默认是double类型,float赋值必须加后缀f/F,10.0会编译报错,C错误;4.整数默认是int类型,超出int范围的long值必须加L/l,规范写法统一用大写L,D错误。2、下列关于String、StringBuilder、StringBuffer说法错误的是()A、String是不可变字符序列B、StringBuffer线程安全C、StringBuilder线程不安全,效率更高D、三者底层都是数组,使用场景无区别答案:D解析:三者使用场景差异极大。String适用于少量、不频繁修改的字符串;StringBuilder适用于单线程高频字符串拼接,效率最高;StringBuffer加了synchronized锁,适用于多线程环境字符串操作,效率偏低。3、Java中接口和抽象类的区别,说法正确的是()A、抽象类可以有构造方法,接口不能有构造方法B、抽象类和接口都能定义普通成员变量C、一个类只能实现一个接口,只能继承一个抽象类D、抽象类和接口都可以被实例化答案:A解析:1.抽象类有构造方法,用于子类初始化;接口无构造方法,A正确;2.接口中变量默认是publicstaticfinal常量,不能定义普通成员变量,B错误;3.类可以实现多个接口,只能单继承类(含抽象类),C错误;4.抽象类和接口都不能直接实例化,D错误。4、ArrayList和LinkedList的核心区别,描述错误的是()A、ArrayList底层是动态数组,查询快、增删慢B、LinkedList底层是双向链表,增删快、查询慢C、ArrayList默认初始容量为16D、二者都不是线程安全的集合答案:C解析:ArrayList默认初始容量为10,JDK1.7及以上采用懒加载机制,首次扩容才会初始化数组;LinkedList无初始容量概念。5、以下关键字中,不能修饰局部变量的是()A、finalB、staticC、volatileD、int答案:B解析:static修饰的是类级别的静态变量,属于类本身,而局部变量属于方法、代码块级别,生命周期不同,static绝对不能修饰局部变量。6、HashMap的底层数据结构在JDK1.8之后是()A、单纯数组B、数组+单向链表C、数组+单向链表+红黑树D、数组+双向链表答案:C解析:JDK1.8优化了HashMap结构,底层为数组+链表+红黑树。当链表长度大于8且数组容量大于64时,链表转为红黑树,提升查询效率;JDK1.7及之前只有数组+链表。7、以下关于异常的说法正确的是()A、Error属于可捕获异常B、RuntimeException是受检异常C、try代码块可以单独存在,无需catch和finallyD、finally代码块一定会执行(除JVM退出场景)答案:D解析:1.Error是系统级严重错误,无法捕获和处理,A错误;2.RuntimeException是非受检异常,无需显式捕获,受检异常必须捕获或抛出,B错误;3.try不能单独存在,必须搭配catch或finally,C错误;4.正常情况下finally必执行,仅System.exit(0)退出JVM时不执行,D正确。8、Java中重写(Override)和重载(Overload)的区别,说法正确的是()A、重写方法参数列表必须不同B、重载方法返回值必须一致C、重写发生在父子类之间,方法名、参数列表、返回值必须一致D、重载只能存在于父子类中答案:C解析:1.重写:父子类中,方法名、参数列表、返回值完全一致,权限不能更严格,异常范围不能更大;2.重载:同一个类中,方法名相同,参数个数、类型、顺序不同,返回值、权限无要求。9、以下关于final关键字说法错误的是()A、final修饰的类不能被继承B、final修饰的方法不能被重写C、final修饰的变量不可修改,必须初始化D、final修饰的对象,对象内部属性不能修改答案:D解析:final修饰引用类型变量时,仅表示引用地址不可修改,对象内部的成员属性依然可以正常修改。10、volatile关键字的主要作用是()A、保证原子性B、保证可见性和禁止指令重排C、实现线程同步锁D、提升代码执行效率答案:B解析:volatile核心两大特性:保证多线程变量可见性、禁止指令重排序;不保证原子性,无法替代synchronized和Lock锁实现线程安全。二、判断题(5题)1、==比较的是对象地址,equals默认也是比较对象地址。()答案:正确解析:Object类的原生equals方法底层就是==比较地址,String、Integer等类重写了equals方法,才会比较内容。2、接口中所有方法默认都是publicabstract修饰。()答案:正确解析:JDK8之前接口只有抽象方法,默认publicabstract;JDK8新增默认方法、静态方法,依然默认public权限。3、HashMap可以存储null键和null值,Hashtable不可以。()答案:正确解析:HashMap允许一个null键、多个null值;Hashtable线程安全,不允许null键和null值,会直接空指针报错。4、基本数据类型存储在堆内存,引用类型存储在栈内存。()答案:错误解析:局部基本类型变量存在栈内存;成员变量随对象存在堆内存;引用变量地址存在栈,对象实体存在堆。5、sleep()和wait()都会释放锁资源。()答案:错误解析:sleep()是线程休眠,不释放锁;wait()是对象等待,释放锁资源,只能在同步代码块中调用。三、简答题(4题)1、简述Java堆内存和栈内存的区别?答案解析:1.存储内容:栈内存存储局部变量、方法引用、基本数据类型变量;堆内存存储所有对象实体、数组、成员变量。2.生命周期:栈内存随方法调用创建,方法执行结束立即释放;堆内存随对象创建产生,由垃圾回收器GC回收。3.线程归属:栈是线程私有,每个线程有独立栈空间;堆是线程共享,所有线程共用堆内存。4.空间特点:栈空间小、读写速度快;堆空间大、读写速度相对较慢。2、为什么重写equals必须重写hashCode?答案解析:1.Java官方约定:两个对象equals相等时,hashCode必须相等;但hashCode相等,对象不一定equals相等。2.若只重写equals不重写hashCode,会导致内容相同的两个对象,hashCode值不同。3.在HashMap、HashSet等哈希集合中,会先判断hashCode再判断equals,hashCode不同会判定为两个不同对象,导致集合存储重复数据、去重失效,引发业务bug。3、synchronized和Lock锁的区别?答案解析:1.底层层面:synchronized是JVM原生关键字,底层由虚拟机实现;Lock是Java接口,基于代码层面实现锁机制。2.锁释放:synchronized自动加锁、自动释放锁;Lock需要手动lock()加锁、unlock()解锁,需在finally中释放避免死锁。3.锁特性:synchronized不可中断、无法公平锁、不支持超时;Lock可中断、支持公平/非公平锁、支持超时锁。4.条件等待:synchronized只有一个等待队列;Lock可创建多个Condition条件队列,精准唤醒线程。4、简述JavaGC垃圾回收机制,以及常见GC垃圾回收器?答案解析:GC是Java自动内存回收机制,无需手动释放对象内存,JVM会自动识别堆中无效对象,回收其占用内存,避免内存泄漏。核心回收区域为堆内存,分为新生代、老年代。常见垃圾回收器:1.Serial:单线程串行回收,适合客户端、小内存程序;2.Parallel:多线程并行回收,JDK默认新生代回收器,侧重吞吐量;3.CMS:并发标记清除回收器,侧重低延迟、低停顿;4.G1:分区式回收器,兼顾吞吐量和低延迟,大内存服务端首选;5.ZGC、Shenandoah:低延迟高性能回收器,适用于超大内存、高并发场景。四、编程题(2题,附完整代码+解析)1、编写代码,实现字符串反转(不使用自带reverse方法)参考答案:java
publicclassStringReverse{
publicstaticStringreverse(Stringstr){
//空值和空字符串校验
if(str==null||str.length()==0){
returnstr;
}
char[]chars=str.toCharArray();
intleft=0;
intright=chars.length-1;
//双指针交换字符
while(left<right){
chartemp=chars[left];
chars[left]=chars[right];
chars[right]=temp;
left++;
right--;
}
returnnewString(chars);
}
publicstaticvoidmain(String[]args){
Stringresult=reverse("Java笔试真题");
System.out.println(result);
}
}解析:采用双指针法,首尾字符两两交换,时间复杂度O(n),效率高于逐字符拼接,同时做空值校验,避免空指针异常,适配业务场景。2、编写程序,遍历ArrayList并去除集合中重复元素参考答案:java
importjava.util.ArrayList;
importjava.util.HashSet;
importjava.util.List;
importjava.util.Set;
publicclassListDistinct{
publicstaticvoidmain(String[]args){
List<Integer>list=newArrayList<>();
list.add(1);
list.add(2);
list.add(2);
list.add(3);
list.add(1);
list.add(4);
//利用Set去重(最简高效方式)
Set<Integer>set=newHashSet<>(list);
List<Integer>newList=newArrayList<>(set);
System.out.println("去重后集合:"+newList);
}
}拓展解析:HashSet底层基于HashMap,自动去重,代码简洁、效率高。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年迪庆市烟草专卖局人员招聘参考题库及详细答案解析
- 2026年中共国家电网有限公司党校(国家电网管理学院)人员招聘参考题库及详细答案解析
- 2026年中国农业发展集团有限公司人员招聘考试参考试题及详细答案解析
- 2026年遵义市烟草专卖局人员招聘笔试参考试题及详细答案解析
- 2026年海南省烟草专卖局人员招聘笔试备考题库及详细答案解析
- 2026年其他室内娱乐活动行业发展前景规划报告及未来五至十年长尾挖掘与利基深耕
- 2026年泰州市烟草专卖局人员招聘考试模拟试题及详细答案解析
- 2026年有色金属压延加工行业洞察报告及未来五至十年发展趋势报告
- 2026年石家庄市烟草专卖局人员招聘考试参考试题及详细答案解析
- 2026年中国移动重庆分公司人员招聘参考题库及详细答案解析
- 紧急订单交付应急预案
- 国家职业技术技能标准 6-31-03-03 生化检验员(试行) 2024年版
- 学校校服厂管理制度
- 银座运营管理制度手册
- 重医大《护理学基础》教学大纲
- 课件英语选择性必修三Unit3Usinglanguage
- 花时间了花就开了 小学二年级家长会 课件
- PCR原理完整版本
- DL∕ T 855-2004 电力基本建设火电设备维护保管规程
- 交投国企招聘笔试真题答案
- 贵州省康复医院环评报告
评论
0/150
提交评论