Java经典面试题

作者: python测试开发 | 来源:发表于2019-07-31 18:57 被阅读8次

JAVA面试题

water.jpg
  • 如何在string和int之间转换?

String myString = "1234";
int foo = Integer.parseInt(myString); // int

Integer x = Integer.valueOf(str); // java.lang.Integer

反向:

Integer.toString(i)
String.valueOf(i)

  • 内部类和子类之间有什么区别?

内部类是嵌套在另一个类中的类。内部类具有嵌套它的类的访问权限,并且它可以访问外部类中定义的所有变量和方法。

子类是从另一个名为super class的类继承的类。 子类可以访问其超类的所有公共和受保护的方法和字段。

  • Java类的各种访问说明符是什么?

Ans:在Java中,访问说明符是在定义访问范围的类名之前使用的关键字。 类的访问说明符类型是:

1.Public :类,方法,字段可从任何地方访问。

2.Protected:方法,字段可以从它们所属的同一个类或从子类访问,也可以从同一个包的类访问,但不能从外部访问。

3.Default:方法,字段,类只能从同一个包访问,而不能从它的本机包外部访问。

4.Private:Method,Field可以从它们所属的同一个类访问。

  • 静态方法和静态变量的目的是什么?

Ans:当需要在类的多个对象之间共享方法或变量而不是为每个对象创建单独的副本时,我们使用static关键字为所有对象共享方法或变量。

  • 什么是数据封装及其意义?

Ans:Encapsulation是面向对象编程中的一个概念,用于在单个单元中组合属性和方法。

封装有助于程序员遵循模块化方法进行软件开发,因为每个对象都有自己的一组方法和变量,并且独立于其他对象提供其功能。 封装还用于数据隐藏目的。

  • 什么是singleton类? 举一个实际的例子来说明它的用法。

java中的单例类只能有一个实例,因此它的所有方法和变量只属于一个实例。 Singleton类概念对于需要限制类的对象数量的情况很有用。

单例使用场景的最佳示例是,由于某些驱动程序限制或任何许可问题,仅限于与数据库建立一个连接。

  • 什么是Java中的循环? 什么是三种类型的循环?

Ans:循环用于编程以重复执行语句或语句块。 Java中有三种类型的循环:

1)For

for循环在java中用于重复执行语句给定次数。 当程序员知道执行语句的次数时,使用For循环。

2)While

当需要重复执行某些语句直到满足条件时,使用循环。 在while循环中,在执行语句之前首先检查条件。

3)Do While

Do While循环与While循环相同,只是区别在执行语句块后检查条件。 因此,在do while循环的情况下,语句至少执行一次。

  • 什么是Java中的Final关键字? 举个例子。

Ans:在java中,使用关键字Final声明一个常量。 值只能分配一次,在赋值后,常量值不能改变。

在下面的示例中,声明了名为const_val的常量并赋予了avalue:

Private Final int const_val = 100

当一个方法被声明为final时,它不能被子类覆盖。这个方法比任何其他方法都快,因为它们在编译时被解析。

当一个类声明为final时,它不能被子类化。 示例String,Integer和其他包装类。

  • 如何在Java中生成随机数?

使用Math.random()可以生成大于或等于0.1且小于1.0的随机数;java.util中使用Random类

  • Java中的main()方法可以返回任何数据吗?

Ans:在java中,main()方法不能返回任何数据,因此,它总是以void返回类型声明。

  • 什么是Java包? 包裹有什么意义?

Ans:在Java中,package是类和接口的集合,它们彼此相关时捆绑在一起。 使用包可以帮助开发人员模块化代码并对代码进行分组以便正确地重用。 将代码打包到Packages中后,可以将其导入其他类并使用。

  • 我们可以在没有任何抽象方法的情况下将类声明为Abstract吗?

Ans:是的,我们可以通过在类名之前使用abstract关键字来创建抽象类,即使它没有任何抽象方法。 但是,如果一个类甚至有一个抽象方法,则必须将其声明为abstract,否则会产生错误。

  • Java中的抽象类和接口有什么区别?

Ans:抽象类和接口之间的主要区别在于接口只能拥有没有具体实现的公共静态方法的声明,而抽象类可以拥有具有或不具有具体实现的任何访问说明符 (public, private etc)的成员。

使用抽象类和接口的另一个关键区别是,实现接口的类必须实现接口的所有方法,而从抽象类继承的类不需要实现其超类的所有方法。

一个类可以实现多个接口,但它只能扩展一个抽象类。

  • 接口对抽象类的性能影响是什么?

Ans:与抽象类相比,接口的性能较慢。 开发人员需要考虑的另一个关键因素是任何类只能扩展一个抽象类,而类可以实现许多接口。

随着接口在类中实现,接口的使用也给开发人员带来了额外的负担; 开发人员被迫实现每个接口方法。

  • 如何在java中序列化对象?

Ans:在java中,要通过序列化将对象转换为字节流,类的实现名为Serializable的接口。 实现可序列化接口的类的所有对象都被序列化,并且它们的状态保存在字节流中。

  • 什么时候应该使用序列化?

Ans:当需要通过网络传输数据时使用序列化。 使用序列化,保存对象的状态并将其转换为字节流。字节流通过网络传输,并在目标处重新创建对象。

  • 在Java中实现多线程的两种方法是什么?

Ans:可以使用以下两种方法中的任何一种在Java中开发多线程应用程序:

1.使用Java.Lang.Runnable接口。 类实现此接口以启用多线程。 此接口中有一个Run()方法,该方法已实现。

2.通过编写一个扩展Java.Lang.Thread类的类。

  • 如何在Java中完成垃圾收集?

Ans:在java中,当一个对象不再被引用时,就会发生垃圾收集并自动销毁该对象。 对于自动垃圾收集,java调用System.gc()方法或 Runtime.gc()方法。

  • Java为对象集合的操作提供了哪些API?

Ans:Java提供了一个Collection API,它提供了许多可以应用于一组对象的有用方法。 Collection API提供的一些重要类包括ArrayList,HashMap,TreeSet和TreeMap。

参考资料

相关文章

网友评论

    本文标题:Java经典面试题

    本文链接:https://www.haomeiwen.com/subject/aqxtdctx.html