Java基础2019最新Java面试经典题解析

Java基础2019最新Java面试经典题解析

1简述JVM、JRE、JDK的区别
JVM:java虚拟机 ,加载.class并运行.class
JRE:java运行环境除了包含JVM以外还包含了运行java程序所必须的环境 。JRE=JVM+java系统类库
JDK:java开发工具包。除了包含JRE以外还包含了开发java程序所必须的命令工具。JDK=JRE+编译、运行等命令工具

2简述重载(Overload)和重写(Override)的区别
重载(Overload):在一个类中,方法名相同,参数列表不同(参数的顺序,数量,类型不同)的方法。
重写(Override):子类重写父类的方法,要求返回类型相同(或是其子类),方法名相同,参数列表相同,访问范围不能变小,抛出异常不能变大。

3:解释Java跨平台的原理
Java 是利用 JVM ( Java 虚拟机)实现跨平台的
Java 源代码( * . java )经过 Java 编译器编译成 Java 字节码( * . class ) ,执行 Java 字节码, Java 字节码经过 JVM 解释为具体平台的具体指令,并执行。
不同平台有不同的 JVM , 主流平台都提供了 JVM ,所以 Java 字节码可以在主流平台上能够解释执行。

4:描述抽象类和接口的相同与区别
相同之处:接口是特殊的抽象类;都不能创建对象;都可以包含抽象方法
不同之处:抽象类可以包含非抽象方法,接口不可以;一个类只能继承一个抽象类,但可以实现多个接口

5:简单描述面向对象的三大特性
面向对象的三大基本特征是:封装、继承、多态
1)封装是面向对象的三大特征之一,他是指将对象的状态信息隐藏在对象内部,不允许外部程序直接访问
对象的内部信息,而是通过该类所提供的方法来实现对类内部信息的操作和访问。
封装的目的是增强安全性和简化编程
2)继承是面向对象的三大特征之一,也是实现软件复用的重要手段。继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的属性或新的方法,也可以用父类的属性和方法。
3)多态是指不同子类对象调用父类相同的方法会引发不同的行为;子类对象可以直接赋值给父类引用,如果子类重写父类的方法,则在运行时执行子类的代码,实现子类的行为

6:String和StringBuffer的区别
StringBuffer对象的内容可以修改;而String对象一旦产生后就不可以被修改,重新赋值其实是两个对象。
StringBuffer 的内部实现方式和String不同,StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。所以在实际使用 时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。
String:在String类中没有用来改变已有字符串中的某个字符的方法,由于不能改变一个Java字符串中的某个单独字符,所以在JDK文档中称String类的对象是不可改变的。然而,不可改变的字符串具有一个很大的优点:编译器可以把字符串设为共享的。
StringBuffer:StringBuffer类属于一种辅助类,可预先分配指定长度的内存块建立一个字符串缓冲区。这样使用StringBuffer类的append方法追加字符 比 String使用 + 操作符添加字符 到 一个已经存在的字符串后面有效率得多。因为使用 + 操作符每一次将字符添加到一个字符串中去时,字符串对象都需要寻找一个新的内存空间来容纳更大的字符串,这无凝是一个非常消耗时间的操作。添加多个字符也就意味着要一次又一次的对字符串重新分配内存。使用StringBuffer类就避免了这个问题。
StringBuffer是线程安全的,在多线程程序中也可以很方便的进行使用,但是程序的执行效率相对来说就要稍微慢一些。

7::接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类?
接口可以继承接口,抽象类可以实现(implements)接口,抽象类是可以继承实体类,但前提是实体类必须有明确的构造函数

8:比较String、StringBuffer、StringBuilder
相同点:
三者都是用来处理字符串的
不同点:
1).String相对于StringBuffer和StringBuilder,其内容不可变,涉及到字符串拼接时,更耗内存;
2).StringBuffer和StringBuilder比较,二者功能完全一样;但StringBuffer线程安全,而StringBuilder线程不安全;效率上StringBuilder则更高。

9:简单说明什么是递归?什么情况会使用?
(1)递归做为一种算法在程序设计语言中广泛应用,是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象。 (2 )递归算法一般用于解决三类问题: 1 )数据的定义是按递归定义的。(F ibonacci (斐波那契)函数) 2 )问题解法按递归算法实现。(回溯) 3 )数据的结构形式是按递归定义的。(树的遍历,图的搜索)

猜你喜欢

转载自blog.csdn.net/weixin_44379413/article/details/89307585
今日推荐