Java 基础笔试真题(含详细答案企业真实版)_第1页
Java 基础笔试真题(含详细答案企业真实版)_第2页
Java 基础笔试真题(含详细答案企业真实版)_第3页
Java 基础笔试真题(含详细答案企业真实版)_第4页
Java 基础笔试真题(含详细答案企业真实版)_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

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

文档简介

Java基础笔试真题(含详细答案,企业真实版)一、单项选择题(10题)1.以下关于Java基本数据类型的说法,正确的是()A.float类型精度高于doubleB.boolean类型可以赋值为0和1C.char类型占用2个字节D.long类型默认数值后缀为L/l可省略答案:C详细解析:A错:double是双精度浮点型,精度远高于float单精度;B错:Java中boolean只有true/false两个值,不兼容数字0/1,和C语言不同;C对:char采用Unicode编码,固定占用2字节;D错:long常量必须加L/l后缀,否则默认是int类型,数值过大直接报错。2.下列关于==和equals()的区别,说法错误的是()A.==对于基本类型比较数值大小B.==对于引用类型比较内存地址C.String的equals()方法默认比较内存地址D.重写equals()可以实现对象内容比较答案:C详细解析:String类已经重写了equals方法,底层是逐字符比较字符串内容,而非地址。Object原生的equals才是比较内存地址。3.以下不会产生编译错误的代码是()A.inta=0.5;B.doubleb=10L;C.charc='ab';D.booleand="true";答案:B详细解析:A错:浮点数值不能直接赋值给int,丢失精度编译报错;B对:long类型可以自动转换为double,属于大范围类型兼容小范围;C错:char只能接收单个字符,双字符报错;D错:字符串不能赋值给布尔类型,类型不匹配。4.Java中,接口和抽象类的区别,正确的是()A.抽象类可以有构造方法,接口没有构造方法B.抽象类和接口都能被多继承C.抽象类只能有一个抽象方法D.接口中可以定义实例变量答案:A详细解析:抽象类存在构造方法,用于子类初始化调用;接口无构造方法。Java类是单继承、多实现;抽象类可以有任意数量抽象方法;接口变量默认是publicstaticfinal常量,不能定义实例变量。5.以下集合中,线程安全的是()A.ArrayListB.HashMapC.VectorD.HashSet答案:C详细解析:ArrayList、HashMap、HashSet都是非线程安全集合;Vector是古老的线程安全集合,方法加了synchronized锁,并发性能较差。6.关于Java异常,说法正确的是()A.RuntimeException属于编译异常B.try块必须搭配finally块C.finally块一定会执行(除JVM退出场景)D.异常一旦抛出,程序必须终止答案:C详细解析:运行时异常无需编译校验;try可以只搭配catch,无需finally;只有执行System.exit(0)等JVM退出操作时,finally才不会执行;捕获异常后程序可以继续运行。7.下列关于String、StringBuilder、StringBuffer说法正确的是()A.String是可变字符串B.StringBuilder线程安全C.StringBuffer线程安全、效率低D.频繁字符串拼接优先用String答案:C详细解析:String不可变;StringBuilder无锁、线程不安全、效率高;StringBuffer加锁、线程安全、效率偏低;频繁拼接必须用Builder/Buffer,避免String频繁创建新对象。8.Java中重写(override)和重载(overload)的区别,错误的是()A.重载发生在同一个类中B.重写发生在父子类之间C.重写要求方法名、参数列表必须一致D.重载方法返回值必须一致答案:D详细解析:方法重载只要求方法名相同、参数列表不同,对返回值没有任何要求;重写要求方法签名一致,返回值兼容、访问权限不能变窄。9.下列关键字中,不能修饰局部变量的是()A.finalB.staticC.intD.String答案:B详细解析:static修饰的是类级别的静态变量,局部变量属于方法级别,不能用static修饰;final可以修饰局部常量。10.JVM中,用于存储对象实例的区域是()A.栈内存B.堆内存C.方法区D.本地方法栈答案:B详细解析:堆内存存放所有new出来的对象、数组实例;栈内存存放局部变量、方法引用;方法区存放类信息、常量、静态变量。二、填空题(5题)1.Java中,八大基本数据类型分为________、________两大类。答案:整数浮点型(数值型)、布尔字符型(通用标准答案:基本数值类型、特殊类型)精简标准答案:数值类型、布尔类型2.面向对象三大特性:________、________、________。答案:封装、继承、多态3.HashMap的底层数据结构是________+________,JDK1.8后链表长度大于8且数组长度大于64会转换为________。答案:数组、单向链表、红黑树4.Java中,被________关键字修饰的方法不能被重写,被________修饰的类不能被继承。答案:final、final5.异常体系中,________是所有异常和错误的父类,________是编译期异常父类。答案:Throwable、Exception三、简答题(4题,面试高频)1.简述ArrayList和LinkedList的区别?详细答案:1)底层结构:ArrayList基于动态数组,LinkedList基于双向链表;2)查询效率:ArrayList支持随机访问,下标查询速度极快;LinkedList必须遍历查找,查询慢;3)增删效率:ArrayList增删会涉及数组移位、扩容,中间位置增删慢;LinkedList只需要修改节点指针,首尾增删快;4)内存占用:ArrayList会预留冗余容量,占用内存稍大;LinkedList每个节点保存前后指针,内存开销更高;5)使用场景:查询多、增删少用ArrayList;频繁首尾增删、极少查询用LinkedList。2.说说Java值传递和引用传递的区别?详细答案:Java只有值传递,没有引用传递,这是核心考点。1)基本类型:传递的是变量的数值副本,方法内修改参数不会影响原变量;2)引用类型:传递的是对象的地址值副本,两个引用指向同一个对象;方法内修改对象的属性会影响原对象,但重新赋值引用不会改变原引用。3.为什么重写equals必须重写hashCode?详细答案:1)Java官方规范:两个对象equals相等,hashCode必须相等;但hashCode相等,对象不一定equals相等;2)如果只重写equals不重写hashCode,会导致内容相同的两个对象,hashCode不同;3)在HashMap、HashSet等哈希集合中,会先判断hashCode再判断equals,会造成内容相同的对象被判定为不同对象,出现存储重复、查询不到数据的bug。4.简述final、finally、finalize的区别?详细答案:1)final:修饰符,修饰类不可继承、方法不可重写、变量不可二次赋值;2)finally:异常处理关键字,搭配try-catch使用,代码块大概率一定会执行,常用于释放资源;3)finalize:Object类的废弃方法,JVM垃圾回收前会调用,效率极低、无法保证执行时机,JDK9之后已废弃,不推荐使用。四、编程题(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){

System.out.println(reverse("Java笔试真题"));

}

}解题思路:将字符串转为字符数组,双指针首尾交换,时间复杂度O(n),效率高于逐字符拼接。2.自定义学生类,重写equals和hashCode方法,实现根据学号判断学生对象是否相同参考答案代码:java

publicclassStudent{

privateStringstuNo;//学号唯一标识

privateStringname;

//构造器、get/set

publicStudent(StringstuNo,Stringname){

this.stuNo=stuNo;

=name;

}

//重写equals:只根据学号判断相等

@Override

publicbooleanequals(Objecto){

if(this==o)returntrue;

if(o==null||getClass()!=o.getClass())returnfalse;

Studentstudent=(Student)o;

returnstuNo.equals(student.stuNo);

}

//重写hashCode:和equals保持一致,只基于学号生成

@Override

publicinthashCode(){

returnstuNo.hashCode();

}

//gettersetter

publicStringgetStuNo(){

returnstuNo;

}

publicvoidsetStuNo(StringstuNo){

this.stuNo=stuNo;

}

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

温馨提示

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

最新文档

评论

0/150

提交评论