在本文中,我们将讨论一些最重要的Java面试问题和答案,让您在面试中掌握最前沿的知识。Java是最流行、应用最广泛的编程语言和平台之一。Java是快速、可靠和安全的。从桌面到网络应用程序,从科学超级计算机到游戏机,从手机到互联网,Java应用于每个角落。这就是为什么如果你想脱颖而出,就应该掌握这些问题。
让我们先来看一些最常见的Java面试问题,
- 我们能在Java中重载或重写静态方法吗?
- 为什么java中的主方法是静态的?
- 如果从主方法中删除静态修饰符,会发生什么?
- 在以下情况下,Java中变量的范围是什么?
- java中的“this”关键字是什么?
- 什么是抽象类?抽象类在C++中与java相似或不同?
- 哪个类是每个类的超类?
- 我们能重载main()方法吗?
- 什么是对象克隆?
- C++中的继承与java不同?
- 为什么在java中改变返回类型不可能实现方法重载?
- 我们能在Java中重写私有方法吗?
- 什么是空白的最终变量?
- java中的“super”关键字是什么?
- Java中的静态变量是什么?
- Java中HashMap和HashTable的区别。
- Java对象如何存储在内存中?
- java中C++的功能缺失了什么?
让我们从一组Java面试问题开始。
问题1。我们可以吗 在java中重载或重写静态方法 ?
- 压倒一切的: 重写与运行时多态性有关。子类(或派生类)在运行时提供超类(或基类)中方法的特定实现。
- 超载: 重载与编译时(或静态)多态性有关。此功能允许不同的方法具有相同的名称,但签名不同,尤其是输入参数的数量和输入参数的类型。
- 我们能重载静态方法吗? 答案是 “是的” .我们可以有两个或更多的静态方法,名称相同,但输入参数不同
- 我们能在java中重写静态方法吗? 我们可以在子类中声明具有相同签名的静态方法,但它不被认为是重写的,因为不存在任何运行时多态性。因此答案是 “不” .无法重写静态方法,因为方法重写仅在方法的动态(即运行时)查找上下文中发生。静态方法(按其名称)是静态查找的(即在编译时)。
阅读 更多
问题2。为什么java中的主方法是静态的? 该方法是静态的,因为否则会有歧义:应该调用哪个构造函数?尤其是如果你的班级看起来像这样:
public class JavaClass{ protected JavaClass(int x) { } public void main(String[] args) { }}
JVM应该调用新的JavaClass(int)吗?x应该是什么?如果不是,JVM是否应该在不运行任何构造函数方法的情况下实例化JavaClass?因为这将是整个类的特殊情况——有时你有一个尚未初始化的实例,你必须在每个可以调用的方法中检查它。对于JVM来说,在调用入口点之前必须实例化一个类,有太多的边缘情况和模糊性,这是没有意义的。这就是为什么main是静态的。
问题3。如果从主方法中删除静态修饰符,会发生什么? 程序编译成功。但在运行时抛出一个错误“NoSuchMethodError”。
第四季度。问题是什么 变量的范围 在以下情况下使用Java?
- 成员变量 (类级作用域):成员变量必须在类内声明(在任何函数外)。它们可以在课堂上的任何地方直接访问
- 局部变量 (方法级作用域):方法内声明的变量具有方法级作用域,不能在方法外访问。
- 循环变量 (块作用域):在方法中的一对括号“{”和“}”内声明的变量的作用域仅在括号内。
阅读 更多
问题5。是什么 java中的“this”关键字 ? 在实例方法或构造函数中,这是对当前对象的引用,即调用其方法或构造函数的对象。您可以使用以下方法从实例方法或构造函数中引用当前对象的任何成员。 这个关键字的用法
- 用于引用当前类实例变量。
- 调用当前类构造函数。
- 它可以在方法调用中作为参数传递。
- 它可以在构造函数调用中作为参数传递。
- 用于返回当前类实例。
- 用于调用当前类方法(隐式)
问题6。什么是 抽象类 ? 抽象类在C++中与java相似或不同? 抽象类是包含一个或多个抽象方法的类。抽象方法是声明但不包含实现的方法。抽象类可能不会被实例化,需要子类来提供抽象方法的实现。
- 与C++一样,在java中,抽象类的实例不能创建,但是我们可以有抽象类类型的引用。
- 与C++一样,抽象类也可以包含java中的构造函数。当创建继承类的实例时,将调用抽象类的构造函数
- 在Java中,我们可以有一个抽象类,而不需要任何抽象方法。这允许我们创建不能被实例化,但只能被继承的类。
- 抽象类也可以有final方法(不能被重写的方法)。例如,以下程序编译并运行良好。
阅读 更多
问题7。哪个类是每个类的超类? 对象类
问题8。 我们能重载main()方法吗? Java中的主要方法不是外星方法。除了main()和其他任何方法一样可以以类似的方式重载之外,JVM总是寻找方法签名来启动程序。
- 普通的main方法充当JVM开始执行程序的入口点。
- 我们可以在Java中重载main方法。但是当我们运行程序时,程序不会执行重载的main方法,我们只需要从实际的main方法调用重载的main方法。
阅读 更多
问题9。是什么 对象克隆 ? 对象克隆意味着创建原始对象的精确副本。如果一个类需要支持克隆,它必须实现java。lang.Cloneable接口并重写对象类中的clone()方法。clone()方法的语法为:
protected Object clone() throws CloneNotSupportedException
如果对象的类没有实现可克隆接口,那么它会抛出一个异常“CloneNotSupportedException”。
阅读 更多
问题10。怎么样 C++中的继承与java不同?
- 在Java中,所有类都直接或间接地从对象类继承。因此,Java中总是有一个单一的类继承树,而对象类是树的根。
- 在Java中,祖父母类的成员不能直接访问。看见 这是一个事实 更多细节。
- 受保护的成员访问说明符在Java中的含义有些不同。在Java中,类“a”的受保护成员可以在同一个包的其他类“B”中访问,即使B不是从a继承的(它们必须在同一个包中)。
- Java使用 延伸 继承的关键字。与C++不同,java不提供公共、受保护或私有的继承说明符。因此,我们不能在Java中更改基类成员的保护级别,如果某个数据成员在基类中是公共的或受保护的,那么它在派生类中仍然是公共的或受保护的。和C++一样,基类的私有成员在派生类中是不可访问的。 与C++不同,在java中,我们不必记住继承的基本规则,即基类访问说明符和继承说明符的组合。
- 在Java中,默认情况下方法是虚拟的。在C++中,我们明确地使用虚拟关键字。看见 这是一个事实 更多细节。
- Java使用一个单独的关键字 界面 用于接口,以及 摘要 抽象类和抽象函数的关键字。
- 与C++不同,java不支持多重继承。一个类不能从多个类继承。不过,一个类可以实现多个接口。
- 在C++中,父类的默认构造函数被自动调用,但是如果我们要调用父类的参数化构造函数,必须使用 初始化成员列表 和C++一样,父类的默认构造函数在java中被自动调用,但是如果我们要调用参数化构造函数,那么我们必须使用Sub调用父构造函数。
参见示例 在这里
问题11。为什么在java中改变返回类型不可能实现方法重载? 在C++和java中,如果它们只在返回类型上不同,函数就不能被重载。函数的返回类型不是编译器为唯一标识每个函数而生成的损坏名称的一部分。参数数量、参数类型和参数序列是用于为每个函数生成唯一损坏名称的参数。正是基于这些独特的混乱名称,即使名称相同(重载),编译器也能理解调用哪个函数。
问题12。我们能在Java中重写私有方法吗? 不,不能重写私有方法,因为它在任何其他类中都不可见。阅读 更多
问题13。是什么 空白最终变量 ? Java中的最后一个变量只能赋值一次,我们可以在声明中或以后赋值。
final int i = 10; i = 30; // Error because i is final.
A. 空白决赛 Java中的变量是 最终的 声明期间未初始化的变量。下面是空白期末考试的一个简单例子。
// A simple blank final example final int i; i = 30;
阅读 更多
问题14。是什么 java中的“super”关键字 ? java中的super关键字是一个引用变量,用于引用父类对象。关键词“super”是随着继承的概念出现的。无论何时创建子类的实例,都会隐式创建父类的实例,即由超级引用变量引用。 使用java super关键字的各种场景:
- super用于引用直接父实例变量
- super用于调用父类方法
- super()用于调用直接父构造函数
阅读 更多
问题15。是什么 Java中的静态变量 ? java中的static关键字主要用于内存管理。我们可以将java静态关键字应用于变量、方法、块和嵌套类。static关键字属于类而不是类的实例。
静电干扰可以是:
- 变量(也称为类变量)
- 方法(也称为类方法)
- 块
- 嵌套类
问题16。区别 Java中的HashMap和HashTable . 1.HashMap是非同步的。它不是线程安全的,如果没有正确的同步代码,就不能在多个线程之间共享,而哈希表是同步的。它是线程安全的,可以与多个线程共享。 2.HashMap允许一个空键和多个空值,而Hashtable不允许任何空键或值。 3.如果不需要线程同步,HashMap通常优于HashTable 阅读更多
问题17。Java怎么样 存储在内存中的对象 ? 在Java中,所有对象都是在 堆 这与C++在堆栈或堆上可以分配对象的不同。在C++中,当使用New()分配对象时,对象将在堆上分配,否则将在堆栈上分配,而不是全局或静态。 在Java中,当我们只声明一个类类型的变量时,只创建一个引用(不为对象分配内存)。为了给对象分配内存,我们必须使用new()。所以对象总是在堆上分配内存。阅读 更多
问题18。java中C++的功能缺失了什么? 在看到答案之前,试着自己回答这个问题—— 在这里 .
另见:
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。