Java基础高频面试题及参考答案.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

Java基础高频面试题及参考答案

一、基础概念类

问:Java的跨平台特性是怎么实现的?

答:核心是“一次编译,到处运行”。Java源码(.java)先通过javac编译器编译成字节码文件(.class),字节码不依赖具体操作系统,再由对应平台的Java虚拟机(JVM)解释执行。不同系统(Windows、Linux、Mac)有适配的JVM,相当于JVM充当了字节码和操作系统之间的“翻译官”,从而实现跨平台。

问:JDK、JRE、JVM三者的区别是什么?

答:三者是包含关系:JDKJREJVM。JDK(JavaDevelopmentKit)是开发工具包,包含JRE、编译器(javac)、调试工具等,开发者必备;JRE(JavaRuntimeEnvironment)是运行环境,包含JVM和核心类库(如java.lang包),仅需运行Java程序时安装;JVM(JavaVirtualMachine)是虚拟机,负责执行字节码,是跨平台的核心,但不能单独运行,必须依赖JRE提供的类库支持。

问:Java中的基本数据类型有哪些?对应的包装类是什么?

答:基本数据类型共8种,分四类:

整数型:byte(包装类Byte)、short(Short)、int(Integer)、long(Long)

浮点型:float(Float)、double(Double)

字符型:char(Character)

布尔型:boolean(Boolean)

注意:包装类都是引用类型,默认值为null;基本数据类型有默认值(如int默认0,boolean默认false)。

二、面向对象类

问:面向对象的三大特征是什么?分别解释一下。

答:三大特征是封装、继承、多态。

封装:把对象的属性和行为(方法)封装起来,隐藏内部实现细节,只通过公共接口(如getter/setter方法)对外暴露,提高代码安全性和可维护性(比如实体类的属性私有化)。

继承:子类继承父类的非私有属性和方法,减少代码冗余,实现代码复用(关键字extends,Java单继承)。

多态:同一行为在不同对象上有不同表现形式,核心是“方法重写+父类引用指向子类对象”,比如Animal类有eat()方法,Cat和Dog子类重写eat(),Animala=newCat()时,a.eat()执行Cat的实现。

问:重载(Overload)和重写(Override)的区别?

答:核心区别在“是否同一类”和“方法签名”:

重载:同一类中,方法名相同,参数列表(参数个数、类型、顺序)不同,返回值类型可不同,与访问修饰符无关,是“编译时多态”(比如System.out.println()的多种参数形式)。

重写:子类继承父类后,重写父类的方法,要求方法名、参数列表、返回值类型完全一致(子类返回值可是父类的子类,即协变返回),访问修饰符不能比父类更严格,是“运行时多态”(比如上面的eat()方法重写)。

问:final关键字有哪些用法?

答:主要三种用法,对应不同场景:

修饰变量:变量不可修改(基本类型值固定,引用类型地址固定,内容可改),比如finalinta=10;a不能再赋值;finalListlist=newArrayList();list不能指向其他集合,但可以add元素。

修饰方法:方法不能被子类重写,比如父类中finalvoidtest(),子类不能重写该方法。

修饰类:类不能被继承,比如String类是final的,不能创建String的子类。

三、核心语法类

问:String、StringBuffer、StringBuilder的区别?

答:核心差异在“可变性”和“线程安全”:

String:不可变字符串(底层是finalchar数组),每次修改都会创建新对象(比如str+=a会生成新String),效率低,适合少量、不频繁修改的场景。

StringBuffer:可变字符串,线程安全(方法加了synchronized),修改时直接操作原数组,效率比String高,适合多线程环境下的字符串拼接。

StringBuilder:可变字符串,线程不安全,效率比StringBuffer更高(无同步开销),适合单线程环境下的高频字符串修改(比如循环拼接)。

问:ArrayList和LinkedList的区别?

答:底层数据结构不同,导致性能差异:

ArrayList:底层是动态数组(初始容量10,扩容时默认1.5倍),查询快(通过索引直接访问,O(1)),增删

文档评论(0)

151****9429 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档