一些简单的面试题

以下内容仅仅为学习过程中经由老师提及的学习部分,后续也将会持续更新或增加。




一、JDK和JRE的区别?

JDK(Java Development Kits)-- Java 开发工具集

JRE(Java Runtime Environment)Java 运行时环境

JDK用于开发,是给开发人员用的,JRE 用于运行java程序,和JVM是给普通用户使用的。如果只是运行Java程序,可以只安装JRE,无序安装JDK。也就是说:使用JDK开发完成的java程序,交给JRE去运行。

JDK包含了JRE,JDK 和 JRE 中都包含 JVM。也可以说JDK是JRE+Java的开发工具。JRE包含了JVM+Java语言的核心类库。

二、JVM(Java virtual machine)是什么?

JVM 可以理解成一个可运行 Java 字节码的虚拟计算机系统

 它有一个解释器组件,可以实现 Java 字节码和计算机操作系统之间的通信

对于不同的运行平台,有不同 的 JVM。

三、封装

在开发中, 为了避免出现逻辑错误, 我们建议对所有属性进行封装(private关键词进行修饰),并为其提供setter及getter方法进行设置和取的操作。

四、static关键字

static表示“静态”的意思,可以用来修饰成员变量和成员方法。

static的主要作用在于创建独立于具体对象的域变量或者方法。

简单理解:

被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访

问。并且不会因为对象的多次创建 而在内存中建立多份数据。

特点:

1. 静态成员 在类加载时加载并初始化。

2. 无论一个类存在多少个对象 , 静态的属性, 永远在内存中只有一份( 可以理解为所有对象公用 )

3. 在访问时: 静态不能访问非静态 , 非静态可以访问静态 !

五、JAVA三大特性

即封装、多态、继承

1.封装

封装指的是属性私有化,根据需要提供setter和getter方法来访问属性。即隐藏具体属性和实现细节,仅对外开放接口,控制程序中属性的访问级别。

封装目的:增强安全性和简化编程,使用者不必在意具体实现细节,而只是通过外部接口即可访问类的成员。

2.继承

继承是指将多个相同的属性和方法提取出来,新建一个父类。

Java中一个类只能继承一个父类,且只能继承访问权限非private的属性和方法。 子类可以重写父类中的方法,命名与父类中同名的属性。

继承目的:代码复用。

3.多态

多态可以分为两种:设计时多态和运行时多态。

设计时多态:即重载,是指Java允许方法名相同而参数不同(返回值可以相同也可以不相同)。

运行时多态:即重写,是指Java运行根据调用该方法的类型决定调用哪个方法。

多态目的:增加代码的灵活度。

六、抽象类和接口的区别

1、抽象类要被子类继承,接口要被类实现。

2、接口只能声明抽象方法,抽象类中可以声明抽象方法,也可以写非抽象方法。

3、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。

4、抽象类使用继承来使用, 无法多继承。 接口使用实现来使用, 可以多实现

5、抽象类中可以包含static方法 ,但是接口中不允许(静态方法不能被子类重写,因此接口中不能声明静态方法)

6、接口不能有构造方法,但是抽象类可以有

七、方法重载和重写的区别

重写(override)规则:

1、 参数列表必须完全与被重写方法的相同;

2、返回类型必须完全与被重写方法的返回类型相同;

3、访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected.

4、父类的成员方法只能被它的子类重写 。

5、声明为static和private的方法不能被重写,但是能够被再次声明。

区别    

1、发生的位置

    重载:一个类中

    重写:子父类中

2、参数列表限制

    重载:必须不同的

    重写:必须相同的

3、返回值类型

    重载:与返回值类型无关

    重写:返回值类型必须一致

4、访问权限:

    重载:与访问权限无关

    重写:子的方法权限必须不能小于必父的方法权限

5、异常处理:

    重载:于异常无关

    重写:异常范围可以更小,但是不能抛出新的异常。

八、多态的表现形式

设计时多态:即重载,是指Java允许方法名相同而参数不同(返回值可以相同也可以不相同)。 是一个类中方法的多态性体现。

运行时多态:即重写,是指Java运行根据调用该方法的类型决定调用哪个方法。是子父类中方法的多态性体现。

九、异常处理常见面试题

1. try-catch-finally 中哪个部分可以省略?

答: catch和finally可以省略其中一个 , catch和finally不能同时省略

注意:格式上允许省略catch块, 但是发生异常时就不会捕获异常了,我们在开发中也不会这样去写代码.2. try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?

答:finally中的代码会执行

详解:

执行流程:

1. 先计算返回值, 并将返回值存储起来, 等待返回

2. 执行finally代码块

3. 将之前存储的返回值, 返回出去;

需注意:

1. 返回值是在finally运算之前就确定了,并且缓存了,不管finally对该值做任何的改变,返回的值都不

会改变

2. finally代码中不建议包含return,因为程序会在上述的流程中提前退出,也就是说返回的值不是try或

catch中的值

3. 如果在try或catch中停止了JVM,则finally不会执行.例如停电- -, 或通过如下代码退出

JVM:System.exit(0)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。