版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
58道Java高频笔试题及详细答案一、Java基础语法(1-12题)1、Java的基本数据类型有哪些?区别是什么?Java基本数据类型共8种,分为四大类,区别主要体现在占用字节、取值范围、默认值不同:1.整型:byte(1字节)、short(2字节)、int(4字节,默认整型)、long(8字节,后缀加L)2.浮点型:float(4字节,后缀加F)、double(8字节,默认浮点型)3.字符型:char(2字节,存储单个字符,可存汉字)4.布尔型:boolean(1字节,只有true/false,无默认数值)核心区别:基本类型直接存储数值,存放在栈内存;包装类是对象,存放在堆内存,支持泛型、为空值。2、==和equals()的区别?1.==:是运算符,可用于基本类型和引用类型。基本类型比较数值是否相等;引用类型比较对象内存地址。2.equals():是Object类的方法,仅用于引用类型。默认实现和==一致,比较内存地址;String、Integer等类重写后,比较对象内容是否相等。总结:日常对比字符串、对象内容一律用equals,对比基本类型用==。3、int和Integer的区别?1.类型不同:int是基本数据类型,Integer是int的包装类,属于引用类型。2.存储位置:int数据存栈内存;Integer对象存堆内存。3.默认值:int默认0;Integer默认null。4.泛型支持:int不能用于泛型,Integer可以。5.缓存机制:Integer存在-128~127缓存区间,该区间内对象复用,超出区间新建对象;int无缓存。4、final、finally、finalize的区别?1.final:修饰符。修饰变量为常量,不可修改;修饰方法不可重写;修饰类不可继承。2.finally:异常处理关键字。搭配try-catch使用,无论程序是否异常,最终都会执行(唯一不执行场景:调用System.exit(0))。3.finalize:Object类废弃方法。JVM垃圾回收前会调用该方法清理资源,执行时机不确定,现已废弃不推荐使用。5、break、continue、return的区别?1.break:跳出当前循环或switch语句,终止本次循环结构。2.continue:跳过本次循环剩余代码,直接进入下一次循环迭代。3.return:终止当前方法,返回方法指定返回值,直接退出方法。6、Java中重载和重写的区别?重载(Overload):发生在同一个类中,方法名相同,参数列表(个数、类型、顺序)不同,返回值、修饰符无要求。属于编译期多态。重写(Override):发生在父子类中,方法名、参数列表、返回值必须完全一致;子类修饰符权限大于等于父类;不能抛出更宽泛的异常。属于运行期多态。7、String、StringBuilder、StringBuffer的区别?1.String:不可变字符序列,每次拼接都会生成新对象,频繁拼接效率低。2.StringBuffer:可变字符序列,线程安全(方法加synchronized),多线程场景使用,效率偏低。3.StringBuilder:可变字符序列,线程不安全,无锁开销,单线程场景效率最高,日常开发首选。8、Java中的自动装箱和拆箱?装箱:基本类型自动转换为对应的包装类对象,例:Integera=10;拆箱:包装类对象自动转换为基本类型,例:intb=a;核心场景:集合存储基本类型时自动装箱,运算时自动拆箱。9、Java位运算符有哪些?作用是什么?1.&(按位与):两位都为1才为1,可做清零操作2.|(按位或):一位为1即为1,可做赋值操作3.^(按位异或):两位不同为1,相同为0,可做加密、交换数值4.~(按位取反):0变1,1变05.<<(左移):高位舍弃,低位补0,等价乘以2的n次方6.>>(右移):低位舍弃,高位补符号位,等价除以2的n次方10、switch语句支持哪些数据类型?JDK1.5之前:支持byte、short、char、int四种基本类型。JDK1.5新增:支持对应的包装类(Byte、Short、Character、Integer)、枚举类。JDK1.7新增:支持String字符串类型。不支持:long、float、double、boolean。11、数组和集合的区别?1.长度:数组长度固定,初始化后不可修改;集合长度可变,动态扩容。2.存储类型:数组可存基本类型和引用类型;集合只能存引用类型(基本类型自动装箱)。3.方法:数组无自带工具方法;集合提供增删改查、排序、遍历等丰富API。4.存储效率:数组内存连续,访问效率更高;集合功能更强,适配动态数据场景。12、Java的参数传递机制是什么?Java只有值传递,没有引用传递。1.基本类型:传递变量的数值副本,方法内修改不影响原变量。2.引用类型:传递对象的内存地址副本,方法内修改对象内容会影响原对象,修改地址不会影响。二、面向对象(13-22题)13、面向对象的三大特性及含义?1.封装:将属性私有化,通过公共方法访问,隐藏内部实现细节,保证数据安全。2.继承:子类继承父类的属性和方法,实现代码复用,简化开发。Java为单继承,可多实现接口。3.多态:同一行为,不同对象表现不同结果。分为编译期多态(重载)、运行期多态(重写)。14、抽象类和接口的区别?1.定义:抽象类用abstract修饰;接口用interface修饰。2.继承实现:类只能单继承抽象类;类可多实现接口。3.成员变量:抽象类可包含普通变量、常量;接口默认是publicstaticfinal常量。4.构造方法:抽象类有构造方法,用于子类初始化;接口无构造方法。5.方法:抽象类可包含普通方法、抽象方法;JDK1.8前只有抽象方法,1.8支持默认方法、静态方法,1.9支持私有方法。6.设计思想:抽象类是模板设计,是一类事物的共性;接口是行为规范,是事物的功能拓展。15、什么是向上转型和向下转型?向上转型(自动转换):子类对象赋值给父类引用,格式:父类引用=子类对象。只能调用父类方法,体现多态,是开发常用写法。向下转型(强制转换):父类引用赋值给子类对象,需要强制类型转换,存在类型转换异常风险,通常搭配instanceof判断使用。16、this和super的区别?1.this:代表当前类对象。调用当前类属性、方法、构造方法。2.super:代表父类对象。调用父类属性、方法、构造方法。3.规则:构造方法中,this()和super()必须放在第一行,且不能同时出现。17、Java中构造方法的特点?1.方法名必须和类名完全一致,无返回值类型。2.创建对象时自动调用,用于初始化成员变量。3.类默认提供无参构造,一旦自定义有参构造,默认无参构造会失效。4.构造方法可以重载,不能重写、静态、final、native修饰。18、static关键字的作用?1.修饰变量:静态变量,属于类,所有对象共享,内存仅加载一次。2.修饰方法:静态方法,属于类,可通过类名直接调用,不能访问非静态成员。3.修饰代码块:静态代码块,类加载时执行一次,用于初始化静态资源。4.修饰内部类:静态内部类,不依赖外部类对象。19、访问修饰符的权限范围?权限从大到小:public>protected>默认(包访问)>private1.public:公共,所有类可访问2.protected:受保护,本类、同包、子类可访问3.默认:本类、同包可访问4.private:私有,仅本类可访问20、内部类的分类及特点?1.成员内部类:属于外部类成员,依赖外部类对象,可访问外部类所有权限成员。2.静态内部类:static修饰,不依赖外部类,只能访问外部类静态成员。3.局部内部类:定义在方法、代码块中,仅当前作用域有效。4.匿名内部类:无类名,快速创建子类/接口实现类对象,简化代码。21、对象的创建过程?1.JVM加载对应类的字节码文件,初始化静态资源;2.在堆内存开辟对象内存空间,分配默认初始值;3.执行父类构造方法,完成父类初始化;4.执行子类成员变量显式初始化、代码块;5.执行子类构造方法,完成对象初始化;6.栈内存生成对象引用,指向堆内存对象。22、什么是序列化和反序列化?序列化:将Java对象转为字节序列,用于网络传输、文件持久化,实现方式:实现Serializable接口。反序列化:将字节序列还原为Java对象。transient关键字修饰的属性不会被序列化,静态属性不参与序列化。三、集合框架(23-32题)23、ArrayList和LinkedList的区别?1.底层结构:ArrayList基于动态数组;LinkedList基于双向链表。2.查询效率:ArrayList随机查询快(数组下标寻址);LinkedList查询慢,需遍历节点。3.增删效率:ArrayList尾部增删快,中间增删需移动元素;LinkedList任意位置增删只需修改指针,效率更高。4.内存占用:ArrayList内存连续,存在扩容冗余;LinkedList每个节点存储数据和指针,占用内存更大。场景:高频查询用ArrayList,高频增删用LinkedList。24、HashMap和HashTable的区别?1.线程安全:HashMap线程不安全;HashTable线程安全(方法加锁)。2.null值:HashMap允许key、value为null;HashTable不允许null。3.效率:HashMap无锁,效率高;HashTable全局锁,效率低。4.扩容:HashMap默认容量16,扩容2倍;HashTable默认容量11,扩容2倍+1。5.继承:HashMap继承AbstractMap;HashTable继承Dictionary。25、JDK1.8HashMap的底层原理?底层采用数组+链表+红黑树结构。1.通过key的hash值计算数组下标,存放键值对;2.下标位置无元素直接存入,有元素则发生哈希冲突,挂载链表;3.链表长度超过8且数组容量大于64,链表转为红黑树,提升查询效率;4.红黑树节点小于6时,退化为链表;5.默认负载因子0.75,数组元素达到容量75%时自动扩容。26、HashMap的key为什么不可变?HashMap存储位置由key的hash值决定,若key可变,修改key属性后hash值会变化。后续查询、删除时无法定位原存储位置,会导致数据丢失、查询异常,因此key推荐使用String、Integer等不可变类型。27、ConcurrentHashMap的原理?JDK1.7:分段锁机制,将数组分为多个Segment分段,仅锁定当前操作分段,并发度高。JDK1.8:取消分段锁,采用CAS+synchronized锁,只锁定当前数组节点,锁粒度更细,并发效率更高,同时保证线程安全。28、HashSet的底层实现?HashSet底层基于HashMap实现,存储元素时,将元素作为HashMap的key,value统一为固定空对象。因此HashSet无序、不可重复,去重逻辑和HashMapkey去重一致。29、TreeSet和HashSet的区别?1.底层:HashSet基于HashMap;TreeSet基于TreeMap(红黑树)。2.排序:HashSet无序;TreeSet默认自然排序,可自定义比较器排序。3.效率:HashSet增删查效率高;TreeSet需排序,效率偏低。4.去重:HashSet基于hashCode+equals去重;TreeSet基于比较器返回0去重。30、List、Set、Map的区别?1.List:有序可重复,基于索引存取,代表实现:ArrayList、LinkedList。2.Set:无序不可重复,无索引,代表实现:HashSet、TreeSet。3.Map:键值对存储,key唯一不可重复,value可重复,代表实现:HashMap、TreeMap。31、集合迭代器Iterator的特点?1.通用遍历集合的工具,迭代过程中不允许直接修改集合元素,否则抛出并发修改异常。2.仅支持单向遍历,可通过remove()方法安全删除元素。3.所有单列集合都支持Iterator迭代。32、什么是快速失败(fail-fast)?快速失败是集合的异常保护机制。迭代集合时,若检测到集合结构被修改(新增、删除元素),立即抛出ConcurrentModificationException异常,避免遍历结果出错。HashMap、ArrayList等非线程安全集合均采用该机制。四、异常与IO(33-38题)33、Java异常的分类?所有异常顶级父类为Throwable,分为两类:1.Error(错误):系统级严重错误,无法处理,如OOM内存溢出、栈溢出。2.Exception(异常):可处理的异常,分为:①编译期异常(受检异常):必须捕获或抛出,如IO异常、SQL异常;②运行期异常(非受检异常):代码逻辑问题导致,可不用处理,如空指针、数组越界、类型转换异常。34、try-catch-finally执行顺序?1.正常无异常:执行try代码块,跳过catch,执行finally。2.出现异常:中断try,执行对应catch,最后执行finally。3.特殊情况:finally代码块一定会执行,除非代码执行System.exit(0)终止JVM。35、throw和throws的区别?1.throw:语句,用于方法内部,主动抛出单个异常对象。2.throws:关键字,用于方法声明上,声明该方法可能抛出多个异常,交由调用者处理。36、IO流的分类?1.按数据方向:输入流(读取数据)、输出流(写入数据)。2.按数据类型:字节流(万能流,处理所有文件)、字符流(仅处理文本文件)。3.按功能:节点流(基础流,直接操作文件)、处理流(包装节点流,增强功能,如缓冲流)。37、字节流和字符流的区别?1.操作单位:字节流以字节为单位;字符流以字符为单位,自带编码解码。2.适用场景:字节流处理图片、视频、音频、文档等所有文件;字符流仅处理txt、java等文本文件。3.缓冲区:字节流无默认缓冲;字符流自带缓冲区,需手动刷新或关闭流才能写入数据。38、缓冲流的作用?缓冲流是包装流,内置缓冲区,减少频繁读写磁盘IO次数,大幅提升文件读写效率。开发中优先使用BufferedReader、BufferedInputStream等缓冲流操作文件。五、多线程与并发(39-48题)39、线程和进程的区别?1.进程:操作系统资源分配的最小单位,独立占用内存资源,进程间互不干扰。2.线程:进程内的执行单元,CPU调度的最小单位,共享进程资源,线程间通信成本低。3.关系:一个进程至少包含一个线程,线程依赖进程存在。40、Java创建线程的四种方式?1.继承Thread类,重写run()方法;2.实现Runnable接口,重写run()方法;3.实现Callable接口,重写call()方法,支持返回值、抛出异常;4.线程池创建线程,复用线程,减少创建销毁开销,开发主流方式。41、start()和run()的区别?1.start():启动线程,由JVM调用run()方法,开启新线程,实现多态并发。2.run():普通成员方法,直接调用仅执行普通代码,不会开启新线程,串行执行。42、线程的生命周期?五大状态:新建、就绪、运行、阻塞、终止。1.新建:创建线程对象,未调用start();2.就绪:调用start(),等待CPU调度;3.运行:获取CPU时间片,执行run();4.阻塞:sleep、wait、同步锁阻塞,释放CPU资源;5.终止:线程执行完毕或异常终止。43、synchronized和Lock的区别?1.实现方式:synchronized是JVM底层内置锁;Lock是Java代码实现的锁接口。2.锁机制:synchronized自动加锁、释放锁;Lock需手动lock()加锁、unlock()释放锁。3.灵活性:Lock可中断等待锁、可超时获取锁、支持公平锁;synchronized仅非公平锁,不可中断。4.性能:低并发下两者性能相近,高并发下Lock性能更优。44、volatile关键字的作用?1.保证变量可见性:一个线程修改变量,其他线程立即感知最新值;2.禁止指令重排,解决单例模式DCL重排问题;3.不保证原子性,无法替代锁,不能保证复合操作线程安全。45、wait、sleep、yield的区别?1.wait():Object方法,释放锁、释放CPU,进入等待池,需被唤醒,只能在同步代码块执行。2.sleep():Thread静态方法,不释放锁,仅休眠指定时间,时间到自动就绪,任意场景可执行。3.yield():Thread静态方法,让出本次CPU时间片,线程回到就绪状态,不释放锁。46、什么是线程安全?如何保证线程安全?线程安全:多线程并发操作共享资源,不会出现数据错乱、数据覆盖问题。保证方式:synchronized同步锁、Lock显式锁、volatile、原子类、线程安全集合、不可变对象。47、线程池的核心参数?1.核心线程数:线程池常驻线程数,空闲不销毁;2.最大线程数:线程池允许的最大线程数量;3.空闲超时时间:非核心线程空闲超时后销毁;4.任务队列:存储等待执行的任务;5.拒绝策略:任务超出最大承载量时的处理策略。48、四种线程池的特点?1.固定线程池:核心线程数=最大线程数,线程数量固定,处理大量均匀任务;2.缓存线程池:无核心线程,最大线程数无限,自动伸缩,处理短时大量任务;3.单线程池:只有一个线程,保证任务串行执行;4.定时线程池:支持定时、周期性执行任务。六、JVM与内存(49-53题)49、JVM内存区域划分?1.程序计数器:线程私有,记录当前线程执行行号,无内存溢出;2.虚拟机栈:线程私有,存储局部变量、方法栈帧,栈溢出在此发生;3.本地方法栈:线程私有,执行native本地方法;4.堆内存:线程共享,存储所有对象、数组,垃圾回收主要区域;5.方法区:线程共享,存储类信息、常量、静态变量、编译后的代码。50、GC垃圾回收的作用?回收哪些区域?GC作用:自动回收堆内存中无效对象,释放内存空间,避免内存泄漏。主要回收堆内存,方法区少量回收废弃类、常量;虚拟机栈、程序计数器、本地方法栈随线程销毁自动释放,无需GC。51、MinorGC和FullGC的区别?1.MinorGC:新生代垃圾回收,频率高、速度快,触发频繁;2.FullGC:整堆回收(新生代+老年代+方法区),频率低、速度慢,会造成系统卡顿,开发中尽量避免。52、对象的四种引用类型?1.强引用:默认引用,只要存在就不会被回收,容易造成内存泄漏;2.软引用:内存不足时才回
温馨提示
- 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美容纳米技术行业市场发展分析及前景趋势与投融资发展机会研究报告
- 量化投资入门全景进阶课件
- 2026年秋统编版九年级语文上册期中真题卷02含作文范文
- 医疗质量安全十八项核心制度(国家卫健委版)
- 2026苏教版二上数学第二单元第6课时《练习四》课件
- 2026年广东东莞市初二地理生物会考真题试卷(含答案)
- 建筑物消防安全疏散设计规范2025版
- 高三运动会课件
- 药械化监管培训课件
- 生态学基础概念知识点试题及答案
- 《家庭教育智慧宝典》详细资料
- 电池规格书模板
评论
0/150
提交评论