Java程序设计笔试真题(含详细答案解析)_第1页
Java程序设计笔试真题(含详细答案解析)_第2页
Java程序设计笔试真题(含详细答案解析)_第3页
Java程序设计笔试真题(含详细答案解析)_第4页
Java程序设计笔试真题(含详细答案解析)_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

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

文档简介

Java程序设计笔试真题(含详细答案解析)适用场景:Java初级开发、实习生招聘笔试考试时长:90分钟满分:100分一、单项选择题(共15题,每题2分,共30分)1.以下关于Java基本数据类型的说法,正确的是()A.boolean类型可以赋值为0和1B.char类型占用2个字节,存储的是Unicode编码C.float类型精度高于double类型D.byte类型取值范围是0~2552.下列关于final、finally、finalize的描述,错误的是()A.final修饰的变量不可二次赋值B.finally代码块一定会执行C.finalize是Object类的方法,用于垃圾回收前资源释放D.final修饰的方法不能被重写3.Java中,以下关于接口和抽象类的区别,说法错误的是()A.抽象类可以有构造方法,接口没有构造方法B.抽象类可以包含普通方法,接口所有方法默认是publicabstractC.一个类只能继承一个抽象类,但可以实现多个接口D.抽象类和接口都可以定义实例变量4.下列代码的运行结果是()PlainText

Stringstr1="abc";

Stringstr2=newString("abc");

System.out.println(str1==str2);A.trueB.falseC.编译报错D.空值5.以下集合中,线程安全的是()A.ArrayListB.HashMapC.VectorD.HashSet6.Java异常体系中,以下属于运行时异常的是()A.IOExceptionB.NullPointerExceptionC.SQLExceptionD.FileNotFoundException7.下列关于Java泛型的说法,正确的是()A.泛型可以在运行时获取具体类型B.泛型仅作用于编译阶段,存在类型擦除C.基本数据类型可以作为泛型参数D.泛型类不能定义静态泛型方法8.下列关于equals和==的区别,说法正确的是()A.==仅比较内容,equals比较地址B.基本数据类型只能用==比较C.String类默认重写equals,比较对象地址D.equals方法可以比较基本数据类型9.以下关键字中,不能用于修饰局部变量的是()A.finalB.staticC.intD.String10.HashMap的底层数据结构在JDK1.8之后是()A.单纯数组B.数组+链表C.数组+链表+红黑树D.链表+红黑树11.下列关于Java重载和重写的说法,正确的是()A.重写方法参数列表必须和父类一致B.重载方法返回值类型必须一致C.重写方法权限修饰符必须比父类更严格D.重载发生在父子类之间12.以下循环语句中,能够正常编译运行的是()PlainText

A.for(inti=0;;i++){}

B.for(;;){}

C.以上都对

D.以上都错13.Java中,修饰符访问权限最大的是()A.privateB.defaultC.protectedD.public14.下列关于String、StringBuilder、StringBuffer的说法,错误的是()A.String是不可变字符序列B.StringBuffer线程安全,效率较低C.StringBuilder线程不安全,效率高D.三者都可以修改原有字符串内容15.下列不属于Java八种基本数据类型的是()A.shortB.StringC.floatD.boolean二、填空题(共10空,每空2分,共20分)1.Java中程序入口方法的修饰符是________、________、void、main,参数为String[]args。2.面向对象的三大特性是封装、________、________。3.Java中创建对象的关键字是________,释放资源、结束程序的关键字是________。4.数组的长度可以通过________属性获取,字符串长度通过________方法获取。5.多线程中,________关键字可以保证变量可见性,________关键字可以实现同步锁,保证线程安全。三、简答题(共4题,每题5分,共20分)1.简述Java中ArrayList和LinkedList的区别。2.简述Java中栈和堆的区别,以及基本类型、引用类型的存储位置。3.简述try-catch-finally语句的执行流程。4.简述HashMap和HashTable的区别。四、编程题(共2题,每题15分,共30分)1.编写Java程序,实现冒泡排序,对int数组{3,1,4,2,5,9,7,8,6}进行升序排序,并输出排序后的结果。2.编写Java程序,定义一个学生类Student,包含姓名、年龄、学号三个成员变量,提供无参、有参构造方法,重写toString方法,并在测试类中创建学生对象并打印对象信息。参考答案及详细解析一、单项选择题答案及解析1.答案:B解析:A选项,boolean仅支持true/false;C选项,double精度高于float;D选项,byte是有符号类型,取值范围-128~127。char占2字节,存储Unicode编码,表述正确。2.答案:B解析:finally并非绝对执行,若执行System.exit(0)退出JVM、程序卡死、断电等情况,finally代码块不会执行。3.答案:D解析:接口中定义的变量默认是publicstaticfinal常量,不能定义可修改的实例变量;抽象类可以定义普通实例变量。4.答案:B解析:==对于引用类型比较的是内存地址。str1指向字符串常量池中的对象,str2是new创建的堆内存对象,地址不同,结果为false。5.答案:C解析:ArrayList、HashMap、HashSet均为非线程安全集合;Vector是线程安全的动态数组。6.答案:B解析:NullPointerException(空指针异常)属于RuntimeException运行时异常;其余选项均为编译时受检异常。7.答案:B解析:Java泛型存在类型擦除,仅在编译阶段生效,运行时丢失泛型信息;基本类型不能作为泛型参数;泛型类可以定义静态泛型方法。8.答案:B解析:基本数据类型没有equals方法,只能用==比较数值;==引用类型比地址,String重写的equals方法比较内容。9.答案:B解析:static修饰静态成员,属于类级别,不能修饰局部变量。10.答案:C解析:JDK1.8优化HashMap底层结构,当链表长度大于8且数组容量大于64时,链表转为红黑树,提升查询效率。11.答案:A解析:重写要求方法名、参数列表、返回值(协变返回)与父类一致,权限修饰符不严于父类;重载发生在同类中,参数列表不同,返回值无要求。12.答案:C解析:for循环的初始化、条件判断、迭代语句均可省略,for(;;){}是合法的死循环。13.答案:D解析:权限范围:public>protected>default(包默认)>private。14.答案:D解析:String对象不可变,每次拼接都会生成新字符串对象;StringBuilder和StringBuffer可修改原字符序列。15.答案:B解析:Java八大基本类型:byte、short、int、long、float、double、char、boolean,String是引用类型。二、填空题答案1.public、static2.继承、多态3.new、return4.length、length()5.volatile、synchronized三、简答题答案1.ArrayList和LinkedList的区别(1)底层结构:ArrayList基于动态数组实现,LinkedList基于双向链表实现;(2)查询效率:ArrayList支持随机访问,通过下标查询速度快;LinkedList只能遍历查询,效率低;(3)增删效率:ArrayList增删元素需要移动数组元素,效率较低;LinkedList仅修改节点指针,增删效率高;(4)内存占用:ArrayList会预留扩容空间,存在内存冗余;LinkedList每个节点包含前后指针,单个元素内存占用更大;(5)使用场景:频繁查询、遍历用ArrayList,频繁增删元素用LinkedList。2.Java栈和堆的区别及存储规则(1)栈内存:线程私有,生命周期随线程,空间小、访问速度快,自动分配释放内存;主要存储局部变量、方法参数、方法调用栈帧,基本数据类型变量直接存储数值。(2)堆内存:所有线程共享,生命周期随JVM,空间大、访问速度慢,需要垃圾回收机制管理;主要存储所有new出来的对象、数组,引用类型的对象实体存放在堆中,栈中仅存储对象的引用地址。3.try-catch-finally执行流程(1)程序先执行try代码块中的代码;(2)若try中无异常,跳过catch代码块,直接执行finally代码块;(3)若try中出现异常,立即终止try后续代码执行,匹配对应的catch异常类型,执行catch代码块处理异常;(4)无论try是否出现异常、catch是否执行(除JVM退出等特殊情况),finally代码块最终都会执行;(5)finally主要用于关闭流、释放连接等资源回收操作。4.HashMap和HashTable的区别(1)线程安全:HashTable线程安全,方法加了synchronized锁;HashMap非线程安全;(2)null值支持:HashMap允许key和value为null;HashTable不允许key和value为null;(3)效率:HashMap无锁,并发效率高;HashTable锁粒度大,效率低;(4)继承关系:HashTable继承Dictionary类,HashMap继承AbstractMap类;(5)初始容量:HashMap初始容量16,HashTable初始容量11。四、编程题答案1.冒泡排序代码PlainText

publicclassBubbleSort{

publicstaticvoidmain(String[]args){

int[]arr={3,1,4,2,5,9,7,8,6};

//外层循环控制排序轮数

for(inti=0;i<arr.length-1;i++){

//内层循环控制每轮比较次数,每轮结束后末尾元素有序

for(intj=0;j<arr.length-1-i;j++){

//前一个元素大于后一个,交换位置

if(arr[j]>arr[j+1]){

inttemp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

}

}

}

//遍历输出结果

for(intnum:arr){

System.out.print(num+"");

}

}

}运行结果:1234567892.学生类定义及测试代码PlainText

//学生实体类

publicclassStudent{

//成员变量

privateStringname;

privateintage;

privateStringstuId;

//无参构造方法

publicStudent(){

}

//有参构造方法

publicStudent(Stringname,intage,StringstuId){

=name;

this.age=age;

this.stuId=stuId;

}

//重写toString方法

@Override

publicStringtoString(){

return"Student{"+

"姓名='"+name+'\''+

",年龄="+age+

温馨提示

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

最新文档

评论

0/150

提交评论