专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 2020年互联网经典Java常见面试题目

2020年互联网经典Java常见面试题目

更新时间:2020-05-11 14:41:41 来源:动力节点 浏览1769次

什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?

Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟

机执行的字节码文件。

Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写

或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其特性。

JDK和JRE的区别是什么?

Java运行时环境(JRE)是将要执行Java程序的Java虚拟机。它同时也包含了执行applet需要的浏览器插件。Java开发工具包(JDK)是完整的Java软件开发包,包含了JRE,编译器和其他的工具(比如:JavaDoc,Java调试器),可以让开发者开发、编译、执行Java应用程序。

”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?

“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。

Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。private也是不支持覆盖的,因为私有的成员外界是看不到的所以也就不存在覆盖的问题。

是否可以在static环境中访问非static变量?

static变量在Java中是属于类的,它在所有的实例中的值是一样的。当类被Java虚拟机载入的时候,会对static变量进行初始化。如果你的代码尝试不用实例来访问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。

Java支持的数据类型有哪些?什么是自动拆装箱?

Java语言支持的8中基本数据类型是:

  • 整型:byteshortintlong
  • 浮点型:floatdouble
  • 布尔型:boolean
  • 字符型:char

自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把int转化成Integer,double转化成double,等等。反之就是自动拆箱。

Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?

重写方法的规则:(方法重写也称为方法覆盖)

  • 参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。
  • 返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。
  •  访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
  •  重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。例如:

父类的一个方法申明了一个检查异常IOException,在重写这个方法是就不能抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常。

而重载的规则:

  • 必须具有不同的参数列表;
  • 可以有不责骂的返回类型,只要参数列表不同就可以了;
  • 可以有不同的访问修饰符;
  • 可以抛出不同的异常;

重写与重载的区别在于:

重写多态性起作用,对调用被重载过的方法可以大大减少代码的输入量,同一个方法名只要往里面传递不同的参数就可以拥有不同的功能或返回值。

用好重写和重载可以设计一个结构清晰而简洁的类,可以说重写和重载在编写代码过程中的作用非同一般.

Java中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?

当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提

供构造函数的情况下,Java编译器会为这个类创建一个默认的构造函数。

Java中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。Java不支持像C++中那样的复制构造函数,这个不同点是因为如果你不自己写构造函数的情况下,Java不会创建默认的复制构造函数。

Java支持多继承么?支持多实现吗?

不支持,Java不支持多继承。每个类都只能继承一个类,但是可以实现多个接口。

接口可以继承接口吗?如果可以继承请列举一个案例?

可以,List继承Collection

接口和抽象类的区别是什么?接口和抽象类有什么区别你选择使用接口和抽象类的依据是什么?

接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。

抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,苏格兰折耳猫,布偶猫,这两个类(如果是类的话„„),他们的抽象类是猫。说明,他们都是猫。猫可以吃东西,耗子也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它.所以,在高级语言上,一个类只能继承一个类(抽象类)(正如猫不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。

第一点.接口是抽象类的变体,接口中所有的方法都是抽象的。而抽象类是声明方法的存在而不去实现它的类。

第二点.接口可以多继承,抽象类不行

第三点.接口定义方法,不能实现,而抽象类可以实现部分方法。

第四点.接口中基本数据类型为static而抽类象不是的。

第五点.Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。

第六点.Java接口中的成员函数默认是public的。抽象类的成员函数可以是private,protected或者是public。

当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口。

抽象类的功能要远超过接口,但是,定义抽象类的代价高。因为高级语言来说(从实际设计上来说也是)每个类只能继承一个类。在这个类中,你必须继承或编写出其所有子类的

所有共性。虽然接口在功能上会弱化许多,但是它只是针对一个动作的描述。而且你可以在一个类中同时实现多个接口。在设计阶段会降低难度的。接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化

2020年互联网经典Java常见面试题目

以上就是动力节点java培训机构的小编针对“2020年互联网经典Java常见面试题目”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>