分享一些遇到的Java面试题

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:02   1380   0

一、JDK 和 JRE 的区别是什么?

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

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

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

Java 中 static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而 static方法是编译时静态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。

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

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

byte、short、int、long、float、double、boolean、char

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

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

Java中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名, 参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。

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

当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提 供构造函数的情况下,Java 编译器会为这个类创建一个默认的构造函数。

Java中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。

Java 不支持像 C++中那样的复制构造函数,这个不同点是因为如果你不自己写构造函数的情况下,Java 不会创建默认的复制构造函数。

六、java 支持多继承么?

Java 中类不支持多继承,只支持单继承(即一个类只有一个父类)。 但是 java中的接口支持多继承,即一个子接口可以有多个父接口。(接口的作用是用来扩展对象的功能,一 个子接口继承多个父接口,说明子接口扩展了多个功能,当类实现接口时,类就扩展了相应的功能)。

七、创建线程有几种不同的方式?你喜欢哪一种?为什么?

有三种方式可以用来创建线程:

1、继承Thread类

2、实现Runnable接口

3、应用程序可以使用Executor框架来创建线程池。

实现 Runnable 接口这种方式更受欢迎,因为这不需要继承Thread 类。在应用设计中已经继承了别的对象的情况下,这需要多继承(而Java不支持多继承),只能实现接口。同时, 线程池也是非常高效的,很容易实现和使用。

八、什么是迭代器(Iterator)?

Iterator接口提供了很多对集合元素进行迭代的方法。每一个集合类都包含了可以返回迭代器实例的

迭代方法。迭代器可以在迭代的过程中删除底层集合的元素,但是不可以直接调用集合的remove(Object Obj)删除,可以通过迭代器的remove()方法删除。

九、Iterator 和 ListIterator 的区别是什么?

下面列出了他们的区别:

Iterator可用来遍历Set和List集合,但是ListIterator只能用来遍历 List。

Iterator 对集合只能是前向遍历,ListIterator 既可以前向也可以后向。

ListIterator 实现了Iterator接口,并包含其他的功能,比如:增加元素,替换元素,获取前一个和后一个元素的索引,等等。

十、Java 中垃圾回收有什么目的?什么时候进行垃圾回收?

垃圾回收的目的是识别并且丢弃应用不再使用的对象来释放和重用资源。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP