Java 基础在线笔试题(含详细答案解析)_第1页
Java 基础在线笔试题(含详细答案解析)_第2页
Java 基础在线笔试题(含详细答案解析)_第3页
Java 基础在线笔试题(含详细答案解析)_第4页
Java 基础在线笔试题(含详细答案解析)_第5页
已阅读5页,还剩1页未读, 继续免费阅读

下载本文档

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

文档简介

Java基础在线笔试题(含详细答案解析)本次试题为企业通用初级Java笔试题库,适用于应届生、初级开发岗位面试自测,满分100分,答题时间60分钟。试题涵盖Java基础语法、面向对象、集合、异常、多线程、JDK特性等核心高频考点,题型包含选择题、填空题、简答题、编程题,答案解析通俗易懂,贴合实际开发场景。一、单项选择题(共10题,每题3分,共30分)1.以下关于Java基本数据类型的说法,正确的是()A.boolean类型占用1个字节B.float类型数值精度高于doubleC.char类型可以存储中文汉字D.byte类型取值范围是0~2552.下列关于==和equals()的区别,说法错误的是()A.==对于基本类型比较的是数值大小B.==对于引用类型比较的是内存地址C.String类重写了equals方法,用于比较字符串内容D.所有类的equals方法默认都是比较对象内容3.以下不会出现编译错误的代码是()A.inta=1.5;B.shorts=1;s=s+1;C.byteb=127;D.charc='ab';4.Java中接口和抽象类的区别,描述正确的是()A.抽象类和接口都能被实例化B.抽象类可以有构造方法,接口没有构造方法C.抽象类和接口都支持多继承D.抽象类中不能有普通成员方法5.下列关于ArrayList和LinkedList的说法,正确的是()A.LinkedList底层是数组结构B.ArrayList查询效率高,增删效率低C.两者都是线程安全的集合D.LinkedList占用内存空间更小6.以下关键字中,不能修饰局部变量的是()A.finalB.staticC.volatileD.transient7.Java中异常体系的顶级父类是()A.ErrorB.ExceptionC.ThrowableD.RuntimeException8.下列关于String、StringBuilder、StringBuffer的说法,错误的是()A.String是不可变字符序列B.StringBuffer线程安全,效率较低C.StringBuilder线程不安全,效率高D.三者都可以修改原有字符串内容9.多线程中,synchronized关键字的作用是()A.实现线程异步执行B.保证线程安全,实现资源同步访问C.提高线程执行效率D.终止线程运行10.JDK1.8新增的核心特性是()A.泛型B.Lambda表达式、Stream流C.枚举类D.注解二、填空题(共5题,每题4分,共20分)1.Java中面向对象的三大特性是________、________、________。2.重写(override)和重载(overload)中,________是运行时多态,________是编译时多态。3.HashMap底层数据结构在JDK1.8中是________+________。4.Java中创建对象的四种方式:new关键字、________、________、________。5.线程的五大状态分别是:新建、就绪、________、________、终止。三、简答题(共3题,每题10分,共30分)1.简述Java中栈、堆、方法区的区别和各自存储的内容?2.简述HashMap的工作原理,以及JDK1.7和JDK1.8的核心区别?3.简述Java线程安全的解决方案有哪些,各自的优缺点?四、编程题(共1题,20分)需求:编写一个Java程序,实现字符串去重并排序功能。具体要求:1.接收任意一串英文字符串(区分大小写);2.去除字符串中重复的字符;3.按照字符ASCII码升序排序;4.输出最终处理后的字符串。示例:输入:abcacb123输出:123abc完整答案及详细解析一、单项选择题答案解析1.答案:C解析:boolean类型占用1位(并非1字节);double精度远高于float;char是2字节,可存储中文汉字;byte是有符号类型,取值范围-128~127。2.答案:D解析:Object类的equals方法默认底层就是==,比较对象内存地址,只有重写后的类(String、Integer等)才会比较内容。3.答案:C解析:A浮点型转整型需强制转换;Bs+1会自动提升为int类型,short接收需强转;Dchar只能存储单个字符;Cbyte取值包含127,编译正常。4.答案:B解析:抽象类和接口都不能实例化;Java类是单继承、接口多实现;抽象类可以包含普通方法、构造方法,接口无构造方法。5.答案:B解析:ArrayList底层是动态数组,查询快、头尾增删慢;LinkedList底层是双向链表,增删快、查询慢;两者均非线程安全;LinkedList每个节点包含前后指针,占用内存更大。6.答案:B解析:static修饰的是类级别的变量,属于类本身,局部变量是方法级别的,无法使用static修饰。7.答案:C解析:Throwable是异常体系顶层父类,分为Error(系统级错误,无需处理)和Exception(代码异常,可捕获处理)。8.答案:D解析:String赋值修改后会生成新字符串,原字符串不可变;只有StringBuilder、StringBuffer可以修改原字符序列。9.答案:B解析:synchronized是同步锁,用于保证多线程下共享资源的原子性、可见性、有序性,解决线程安全问题,会降低执行效率。10.答案:B解析:泛型、枚举、注解均为JDK1.5特性,Lambda表达式、Stream流、函数式接口是JDK1.8核心新增特性。二、填空题答案1.封装、继承、多态2.重写、重载3.数组、链表(红黑树)4.反射机制、clone()方法、反序列化5.运行、阻塞三、简答题详细答案1.简述Java中栈、堆、方法区的区别和各自存储的内容?(1)虚拟机栈(栈内存):线程私有,随线程创建而生、线程销毁而回收。主要存储局部变量、方法参数、方法调用栈帧、基本数据类型变量、对象引用地址。栈内存空间小、读写速度快,不存在垃圾回收,栈满会抛出StackOverflowError。(2)堆内存:线程共享,虚拟机启动时创建。主要存储所有对象实例、数组,是GC垃圾回收的主要区域。空间大、读写速度慢,内存不足会抛出OutOfMemoryError。(3)方法区:线程共享,用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译后的代码数据等。JDK1.8后方法区被元空间替代,使用本地内存,不再占用堆内存。2.简述HashMap的工作原理,以及JDK1.7和JDK1.8的核心区别?工作原理:HashMap基于哈希表原理实现,通过hash算法计算key的哈希值,确定元素在数组中的存储下标。若无哈希冲突,直接存入数组;若存在冲突,通过链表/红黑树解决冲突。存储时以键值对形式存储,允许key、value为null,非线程安全。核心区别:(1)数据结构:JDK1.7仅为「数组+链表」;JDK1.8优化为「数组+链表+红黑树」,链表长度超过8且数组容量大于64时,链表转为红黑树,降低查询时间复杂度。(2)插入方式:1.7头插法,多线程环境下易出现环形链表,导致死循环;1.8改为尾插法,规避环形链表问题。(3)扩容优化:1.8扩容时会重新计算哈希下标,优化了元素迁移逻辑,效率更高。3.简述Java线程安全的解决方案有哪些,各自的优缺点?(1)synchronized同步锁:JVM原生锁,可修饰方法和代码块。优点:使用简单、自动加锁释放锁、安全性高;缺点:属于重量级锁,竞争激烈时并发效率低。(2)Lock锁(ReentrantLock):手动锁,需要主动加锁、释放锁。优点:灵活性高、可超时锁、可中断、支持公平锁;缺点:需手动处理锁逻辑,编码复杂度高,忘记释放锁会导致死锁。(3)线程安全集合:如ConcurrentHashMap、CopyOnWriteArrayList。优点:无需手动加锁,底层封装同步逻辑,并发性能优秀;缺点:部分场景存在弱一致性,不适合强一致性业务。(4)volatile关键字:保证可见性、有序性,不保证原子性。优点:轻量级、开销小;缺点:无法解决复合操作的线程安全问题,适用场景有限。四、编程题参考答案(可直接运行)java

importjava.util.TreeSet;

/**

*字符串去重并按ASCII升序排序

*/

publicclassStringSortTest{

publicstaticvoidmain(String[]args){

//测试输入

Stringinput="abcacb123";

Stringresult=distinctAndSort(input);

System.out.println("处理后结果:"+result);

}

publicstaticStringdistinctAndSort(Stringstr){

//判空处理

if(str==null||str.length()==0){

returnstr;

}

//TreeSet自动去重+自然排序(ASCII升序)

TreeSet<Character>set=newTreeSet<>();

//遍历字符串存入集合

for(inti=0;i<str.length();i++){

set.add(str.charAt(i));

}

//拼接结果

StringBuilder

温馨提示

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

评论

0/150

提交评论