版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2025年海量高质量java基础试题试卷及答案一、单项选择题(每题2分,共20分)1.以下关于Java基本数据类型的描述,正确的是()A.boolean类型变量在JVM中实际存储为1字节B.char类型采用UTF-8编码,可存储任意Unicode字符C.float类型变量声明时赋值3.14会导致编译错误D.long类型变量的默认初始值为0L2.关于类的访问修饰符,以下说法错误的是()A.类的访问修饰符可以是public、default、protectedB.一个Java源文件中最多只能有一个public类C.默认访问修饰符(包级私有)的类只能被同包类访问D.protected修饰的类无法被跨包的非子类访问3.给定代码片段:```javaStrings1="abc";Strings2=newString("abc");System.out.println(s1==s2);```输出结果为()A.trueB.falseC.编译错误D.运行时异常4.以下关于方法重载(Overload)的要求,错误的是()A.参数列表必须不同(类型、顺序或个数)B.方法名必须相同C.返回值类型必须不同D.可以有不同的访问修饰符5.关于异常处理,以下代码的输出是()```javatry{inta=10/0;}catch(ArithmeticExceptione){System.out.println("捕获算术异常");}catch(Exceptione){System.out.println("捕获通用异常");}finally{System.out.println("执行finally");}```A.捕获算术异常→执行finallyB.捕获通用异常→执行finallyC.执行finally(无异常输出)D.运行时异常未被捕获6.以下集合类中,底层基于哈希表实现且线程安全的是()A.HashMapB.HashtableC.TreeMapD.LinkedHashMap7.给定线程代码:```javapublicclassMyThreadextendsThread{publicvoidrun(){System.out.println(Thread.currentThread().getName());}}publicstaticvoidmain(String[]args){MyThreadt=newMyThread();t.run();}```程序输出为()A.主线程名称(如main)B.新线程名称(如Thread-0)C.编译错误D.运行时异常8.关于接口和抽象类的区别,以下说法正确的是()A.抽象类可以有构造方法,接口不能有B.接口中所有方法默认是publicabstract,抽象类中方法默认是protectedC.一个类可以实现多个接口,但只能继承一个抽象类D.接口可以有成员变量,抽象类不能有9.以下IO流中,属于字节流且支持缓冲的是()A.FileReaderB.BufferedInputStreamC.ObjectOutputStreamD.PrintWriter10.关于JVM内存区域,以下哪部分由垃圾回收器管理()A.程序计数器B.虚拟机栈C.堆D.本地方法栈二、填空题(每空2分,共20分)1.Java中实现多态的三个必要条件是:继承、______、______。2.String类被声明为final,因此不能被______;其内部使用______数组存储字符(JDK9及以后)。3.异常处理中,______块中的代码无论是否发生异常都会执行;若要在catch块中抛出新异常同时保留原始异常信息,需使用______关键字。4.集合框架中,List接口的典型实现类有ArrayList(基于______)和LinkedList(基于______)。5.线程的生命周期包括新建、就绪、运行、______和终止五种状态;调用Thread的______方法会使线程进入阻塞状态,直到被唤醒。三、简答题(每题8分,共32分)1.请说明值传递与引用传递的区别,并举例说明Java中参数传递的实际方式。2.简述synchronized关键字的三种使用方式及其底层实现原理。3.对比ArrayList和LinkedList在插入、删除和随机访问操作上的性能差异,并说明各自适用场景。4.什么是内存泄漏?Java中可能导致内存泄漏的常见场景有哪些?四、编程题(共28分)1.(10分)编写一个方法,输入一个字符串,统计其中每个字符(区分大小写)出现的次数,返回结果用Map<Character,Integer>表示。要求处理空字符串和null输入,确保线程安全。2.(10分)实现一个线程安全的饿汉式单例模式,并解释其线程安全的原理。若需要延迟加载(懒汉式),需如何修改?此时为什么需要双重检查锁定(Double-CheckedLocking)?3.(8分)给定一个整数数组,使用JavaIO将数组中的偶数写入文件“even.txt”,奇数写入文件“odd.txt”,要求使用缓冲流提高效率。答案一、单项选择题1.C(float赋值需加f,3.14默认是double,直接赋值会编译错误)2.A(类的访问修饰符只能是public或默认,protected和private不能修饰顶层类)3.B(s1指向字符串常量池,s2指向堆内存新对象,==比较地址)4.C(重载不要求返回值不同)5.A(ArithmeticException是具体异常,优先匹配)6.B(Hashtable线程安全,HashMap非线程安全)7.A(直接调用run()方法不会启动新线程,仍在主线程执行)8.C(抽象类和接口都可以有构造方法/成员变量;接口方法默认publicabstract,抽象类方法默认包级私有)9.B(BufferedInputStream是字节缓冲流)10.C(堆是GC主要管理区域)二、填空题1.方法重写;父类引用指向子类对象2.继承;byte(JDK9后String使用byte数组+编码标识)3.finally;initCause(或addSuppressed)4.动态数组;双向链表5.阻塞;wait(或sleep、join)三、简答题1.区别:值传递是复制变量的实际值,修改副本不影响原变量;引用传递是复制对象的引用地址,修改副本指向的对象会影响原变量。Java中所有参数传递都是值传递:基本类型传递值的拷贝,引用类型传递引用地址的拷贝。例如:```javapublicstaticvoidchange(inta,int[]b){a=10;//不影响原int变量b[0]=10;//会修改原数组内容(地址拷贝)}```2.三种方式:-修饰实例方法:锁当前对象(this),底层通过对象头的MarkWord实现-修饰静态方法:锁当前类的Class对象,底层通过Class对象的Monitor实现-修饰代码块:锁指定对象(如synchronized(obj)),底层通过MonitorEnter/MonitorExit指令3.性能差异:-随机访问(get/set):ArrayList是O(1)(数组下标),LinkedList是O(n)(遍历链表)-中间插入/删除:ArrayList需移动元素(O(n)),LinkedList只需修改指针(O(1),但定位节点需O(n))-尾部插入:ArrayList可能触发扩容(均摊O(1)),LinkedList是O(1)适用场景:ArrayList适合频繁随机访问,LinkedList适合频繁首尾操作或中间插入(数据量较大时)4.内存泄漏指对象不再被使用但未被GC回收,导致内存占用持续增加。常见场景:-未关闭的资源(如IO流、数据库连接)-静态集合类持有对象引用(生命周期与类加载一致)-内部类持有外部类强引用(如非静态内部类)-缓存未设置过期策略(如HashMap未清理旧数据)四、编程题1.实现代码:```javaimportjava.util.Collections;importjava.util.HashMap;importjava.util.Map;publicclassCharCounter{//使用线程安全的ConcurrentHashMap或同步方法保证线程安全publicstaticMap<Character,Integer>countChars(Stringinput){if(input==null){returnCollections.emptyMap();}Map<Character,Integer>result=newHashMap<>();for(charc:input.toCharArray()){result.put(c,result.getOrDefault(c,0)+1);}//返回不可修改的Map防止外部修改returnCollections.unmodifiableMap(result);}}```2.饿汉式单例:```javapublicclassSingleton{//类加载时初始化,天然线程安全(类加载机制保证)privatestaticfinalSingletonINSTANCE=newSingleton();privateSingleton(){}//私有构造publicstaticSingletongetInstance(){returnINSTANCE;}}```懒汉式修改(双重检查锁定):```javapublicclassSingleton{//volatile防止指令重排(避免INSTANCE未初始化时被其他线程获取)privatestaticvolatileSingletonINSTANCE;privateSingleton(){}publicstaticSingletongetInstance(){if(INSTANCE==null){//第一次检查(减少锁竞争)synchronized(Singleton.class){if(INSTANCE==null){//第二次检查(防止多线程重复创建)INSTANCE=newSingleton();}}}returnINSTANCE;}}```双重检查原因:第一次检查避免不必要的锁竞争;第二次检查防止多个线程同时通过第一次检查后重复创建实例;volatile保证INSTANCE的可见性和禁止指令重排(避免构造函数未完成时返回引用)。3.文件写入代码:```javaimportjava.io.;importjava.util.Arrays;publicclassNumberFileWriter{publicstaticvoidwriteNumbers(int[]arr)throwsIOException{try(BufferedWriterevenWriter=newBufferedWriter(newFileWriter("even.txt"));BufferedWriteroddWriter=newBufferedWriter(newFileWriter("odd.txt"))){for(intnum:arr){if(num%2==0){evenWriter.write(String.valueOf(num));evenWriter.newLine();}else{
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 民政部门采购内控制度
- 2026江西宜昌市公安局夷陵区分局招聘辅警34人备考题库及答案详解一套
- 2026上海同济大学自主智能机器人研究院数字集成电路设计工程师岗位招聘2人备考题库及参考答案详解1套
- 2026吉林延边州延吉市建工社区卫生服务中心招聘医师备考题库含答案详解(基础题)
- 2026广东广州天河区凤凰中学急聘英语教师一名备考题库附答案详解(能力提升)
- 2026上海同济大学自主智能机器人研究院嵌入式硬件工程师岗位招聘2人备考题库附答案详解(轻巧夺冠)
- 2026广东中山坦洲镇永一村党群服务中心招聘工作人员3人备考题库及答案详解(网校专用)
- 2026新疆塔城地区水务集团有限公司招聘37人备考题库含答案详解(完整版)
- 2026北京市海淀区红英阳光幼儿园招聘2人备考题库附答案详解(典型题)
- 2026凯盛集团成员企业洛玻集团和凯盛新能招聘1人备考题库及答案详解(全优)
- DB44∕T 2331-2021 公路混凝土桥梁火灾后安全性能评定技术规程
- 河南洛阳产融集团有限公司招聘笔试题库2025
- 香水标签管理办法
- 部编版八下历史期末复习常考观点速记(新考向)
- 毕业设计(论文)-大直径线圈平衡绕线机设计
- 扶梯施工安装管理制度
- 变电站运维方案
- GB/T 45554-2025种猪生产性能测定技术规范
- 《DLT 5582-2020架空输电线路电气设计规程》贯标培训教程
- 伐木承揽合同标准文本
- 2025新人教版七年级下册英语 Unit 8知识点梳理及语法讲义(答案版)
评论
0/150
提交评论