📜  Java编程面试常见问题 |设置 1

📅  最后修改于: 2022-05-13 01:54:34.978000             🧑  作者: Mango

Java编程面试常见问题 |设置 1

为什么Java被称为“平台无关编程语言”?平台独立性意味着程序的执行不依赖于操作系统的类型(可以是任何操作系统:Linux、windows、Mac ..etc)。因此,只需编译一次代码并在任何系统上运行它(在 C/C++ 中,我们需要为运行它的每台机器编译代码)。 Java是基于编译器(javac)和解释器(jvm)的语言。您的Java源代码首先使用 javac 编译器编译成字节码。使用 JVM 可以轻松地将这个字节码转换为等效的机器码。 JVM(Java虚拟机)在我们安装的所有操作系统中都可用。因此,javac生成的字节码是通用的,可以在任何操作系统上转换为机器码,这就是Java独立于平台的原因。解释Java中的 Final 关键字? Java中的final关键字用于限制变量、类和方法的使用。变量:Final 变量的值是不变的,你不能改变它。方法:您不能覆盖 Final 方法。类:你不能从 Final 类继承。有关详细信息,请参阅此

什么时候使用 super 关键字? super 关键字用于指代:

  • 直接父类构造函数,
  • 直接父类变量,
  • 直接父类方法。

有关详细信息,请参阅此。 StringBuffer 和 String 有什么区别? String 是一个不可变类,即一旦创建就不能修改它的内容。虽然 StringBuffer 是一个可变类,但意味着您可以稍后更改其内容。每当我们更改 String 对象的内容时,它都会创建一个新字符串并引用它,它不会修改现有字符串。这就是使用 StringBuffer 的性能优于使用 String 的原因。有关详细信息,请参阅此。为什么Java不支持多重继承? Java支持多重继承,但不支持通过类,它仅通过其接口支持。不支持多重继承的原因是为了避免由此产生的冲突和复杂性,并使Java保持为一种简单的面向对象语言。如果我们在 C++ 中回忆这一点,有一个多重继承的特殊情况(菱形问题),你有一个多重继承,两个类有冲突的方法。因此, Java开发人员决定避免这种冲突,并且根本不允许通过类进行多重继承。顶级类可以是私有的还是受保护的? Java中的顶级类不能是私有的或受保护的,但Java中的内部类可以。不将顶级类设为私有的原因很明显,因为没有人可以看到私有类,因此他们无法使用它。将一个类声明为受保护的也没有任何意义。默认可见性和受保护可见性之间的唯一区别是我们可以通过继承它在任何包中使用它。由于在Java中没有包继承的概念,将类定义为 protected 与默认值没有什么不同。 Java异常处理中的“抛出”和“抛出”有什么区别?以下是两者之间的区别:

  • throw 关键字用于从任何方法或静态块中抛出异常,而 throws 用于指示该方法可能会抛出哪个异常
  • 如果任何方法抛出检查异常,那么调用者可以处理这个异常(使用 try catch 块)或者可以通过在方法声明中声明另一个“抛出”子句来重新抛出它。
  • throw 子句可用于您认为需要向调用方法抛出特定异常的代码的任何部分

例如throw throw new Exception(“You have some exception”) throw new IOException(“Connection failed!!”) throws throws IOException, NullPointerException, ArithmeticException什么是 finalize() 方法?与 c++ 不同,我们不需要在Java中显式地销毁对象。 “垃圾收集器”会自动为我们做这件事。垃圾收集器检查是否不存在对某个对象的引用,假定不再需要该对象,并且可以释放该对象占用的内存。有时一个对象可以持有非java资源,例如文件句柄或数据库连接,那么你要确保这些资源在对象被销毁之前也被释放。为了执行这样的操作, Java在对象类中提供了受保护的 void finalize()。您可以在您的类中覆盖此方法并执行所需的任务。在释放对象之前, Java运行时调用该对象的 finalize() 方法。有关更多详细信息,请参阅此。 Set和List界面的区别? Set 和 List 都是 Collection 接口的子接口。它们之间有以下两个主要区别

  • List 可以保存重复的值,但 Set 不允许这样做。
  • 在 List 界面中,数据按您插入的顺序存在,但在 Set 插入顺序的情况下不保留。

如果将 System.exit(0) 放在 try 或 catch 块上会发生什么?最终会阻塞执行吗?通过在 try 或 catch 块中调用 System.exit(0),我们可以跳过 finally 块。 System.exit(int) 方法可以抛出 SecurityException。如果 System.exit(0) 在没有抛出异常的情况下退出 JVM,那么 finally 块将不会执行。但是,如果 System.exit(0) 确实引发了安全异常,那么 finally 块将被执行。

  • Java编程面试常见问题 |设置 2
  • Java专业人士的面试问题
  • Java的练习测验
  • Java文章

本文由Dharmesh Singh编译。您可能希望看到以下内容:常见的 C 编程面试问题 |设置 1
常见的 C 编程面试问题 |设置 2
亚马逊被问到最多的面试问题
微软问得最多的面试问题
埃森哲最常问的面试问题
常见的 OOP 面试问题
常见的 C++ 面试问题
DBMS 面试常见问题 |设置 1
DBMS 面试常见问题 |设置 2
常见的操作系统面试问题 |设置 1
常见的数据结构面试问题。
常见的算法面试问题
常见的计算机网络面试问题
面试问题中的前 10 种算法