Java面试的前20个问题–如何回答?

8571

问题:告诉我迭代器和枚举接口之间的区别?

这让你震惊了吗?你读了这个话题,但前一天你没有刷新它,错过了一个你应该在面试中回答的问题。如果这听起来很熟悉,那么停止责备自己,继续读下去。

热门Java面试问题

如果你没有准备好,JAVA面试可能会非常困难,而且主题非常广泛,不可能总是无所不知。公司通常雇佣比其他应聘者更了解该主题的个人,而且通常比他们的基准更高。

面试问题可以在任何地方提出,在面试前一晚阅读并记住所有内容是很困难的。选择一些重要的问题可能会有所帮助。在本文中,我们将列出一些关于JAVA的最常见和最重要的问题。

在我们开始讨论这些问题之前,有一项重要的任务是建立一份合适的简历。

简历:

第一件事是写一份简历,用JAVA写得足够好,能让你入围。所以在简历中提及你参加过的所有相关培训或认证项目。然后提JAVA作为一种感兴趣的语言,把你做过的所有项目都写在简历的项目部分。

提及并描述所有项目的细节,它做了什么,它是如何创建的,使用了哪些技术以及为什么它比现有系统更好。提到任何你可能已经完成或正在进行的高级水平。

对于那些想要在Java领域建立职业生涯的开发人员,下面的列表将为你提供一些在面试时经常被问到的最重要的问题。

Java面试问题及答案:

1.什么是不可变对象?给一个例子。

对象一旦创建就不能修改的Java类称为不可变类。如果修改不可变对象,它将创建一个新对象。

例子:

字符串是一个不可变的对象。基本上,不可变的对象是防止方法重写的最终对象。

2.说明JDK和JRE之间的区别?

这是Java面试中最常见的问题,因为很多人混淆了这些术语。JDK是Java开发工具包,它是用于开发基于Java的软件的一组软件。它包含JRE、Java源代码编译器、部署工具和其中的所有开发工具。

JRE -Java运行时环境是执行Java程序的Java虚拟机的实现。它包含JVM在运行时使用的所有库集和所有其他文件。

3.字符串缓冲区和字符串生成器之间的区别是什么?

字符串生成器方法是同步的,这意味着两个线程不能同时调用这些方法。字符串缓冲区不同步,这意味着它是线程安全的。字符串生成器也比字符串缓冲区更高效。

4.异常处理是什么意思?

异常是Java中的对象。当抛出异常时,我们基本上会抛出一个对象。Throwable是Java.lang中声明的整个类族的基类。它是处理错误的过程,以便程序能够在没有任何错误的情况下成功执行。它有助于维持正常的执行流。有o异常类型–已检查异常和未检查异常。

5.未检查异常、已检查异常和错误之间的区别是什么?

未经检查的异常:

继承运行时异常的类称为未检查异常。

例子:

算术异常、NullPointerException、ArrayIndexOutOfBoundsException等。它们基本上是在运行时检查的。

检查例外:

扩展除RuntimeException和Error之外的Throwable类的类称为checked Exception。

例子:

IOException、SQLException等。它在编译时检查,而不是在上一次检查时检查。

错误-更复杂的问题抛出,例如OutofMemoryError。

6.什么是单例类?

它是一个java类,在整个java应用程序中只有一个实例。

例子:

java.lang.Runtime。它可以很容易地由Enum创建。单例类控制对所有资源的访问,如数据库连接或套接字。

7.Throw和Throws关键字的区别是什么?

把:

它用于显式抛出异常。不能使用throw传播选中的选项。它后跟一个实例并在方法中使用。不可能抛出多个异常。

例子:

空白(){
抛出新的算术异常(“hello”);
}

抛出:

此关键字用于声明异常。您可以通过传播检查的异常,然后是一个类,并在类签名中使用。可以轻松声明多个异常,如public void method()抛出IOException、SQLException。

例子:

void a()引发算术异常{
/ /方法的代码
}

Java throw和throw示例:

void a()引发算术异常{
抛出新的算术异常(“hello”);
}

8.什么是FileReader和FileWriter?分别编写代码。

Java FileWriter类用于编写面向字符的数据。它还用于文件处理。在这个类的帮助下,您不必将字符串转换为字节数组,因为它提供了方法,所以您可以直接编写字符串。

例子:

导入java.io.FileWriter;
public class File{/ /文件
公共静态void main(字符串参数[]){
试一试{
FileWriter fwr=新的FileWriter(“E:\\test.txt”);
fwr.write(“你好。”);
fwr.close();
}捕捉(例外的前女友){System.out.println (ex);}
System.out.println(“Yaay…”);
}
}

假设它在“test.txt”文件中写为“Hello”:

输出:Yaay

Java FileReader帮助从任何外部文件读取数据。与fileInputStream一样,它以字节格式返回数据。它基本上用于Java中的文件处理,因为它是一个面向字符的类。

例子:

进口java.io.FileReader;
公共类文件读取器{
public static void main(String args[])throws Exception{
FileReader fre=新的FileReader(“E:\\test.txt”);
INTA;
在((= fre.read ()) ! = 1)
系统输出打印((字符)a);
fre.close();
}
}

假设在test.txt文件中写入了“Hello”:

输出:你好

9.ArrayList和LinkedList的基本区别是什么?

这是Java访谈中最重要的问题之一。ArrayList使用动态数组存储元素,而LinkedList使用双链接列表存储元素。ArrayList中的操作或更改速度比另一个稍慢。LinkedList既可以用作列表,也可以用作队列,但ArrayList仅用作列表。因此ring和访问ArrayList更好,对于操作和更改,LinkedList更好。

10.Sleep()与Wait()的比较

Sleep()用于将进程保持几秒钟,但在wait()的情况下,线程将进入等待状态,在调用notify()或notifyAll()之前,它不会自动返回。

另一个主要的区别是wait()会释放锁,而sleep()不会。等待基本上用于线程间通信,而睡眠用于执行时的暂停。

11.我们可以重载静态方法吗?

是的,可以重载静态方法。我们需要有多个名称相同但参数不同的静态方法。

例子:

public class StaticTest{/ /静态测试
Public static void big() {
System.out.println(“StaticTest.big()被称为“);
}
Public static void big(int a) {
System.out.println(“StaticTest.big(int)调用”);
}
公共静态void main(字符串参数[])
{
StaticTest.big ();
StaticTest.big (50);
}
}

输出:调用StaticTest.big()
StaticTest.big (int)

12.什么是类加载器?解释每一个类加载器。

Classloader是Java运行时环境的一部分,它可以动态或按需将类加载到Java虚拟机中。它可以从本地系统、web甚至任何远程系统加载类。有三个Classloader——

1.引导类加载器-它加载核心Java API

2.扩展类加载器——它从文件夹中加载所有jar文件

3.系统/应用程序类加载器-它从classpath环境变量中的指定路径加载jar文件。

13.内部类和子类之间的区别是什么?

嵌套在另一个类中的类称为内部类。它可以访问嵌套它的类,也可以访问外部类中定义的所有变量和方法。

从另一个类继承的类称为子类。它还可以访问在超类中定义的所有公共和受保护的方法和字段。

14解释Java中的Final关键字?

当您想使某个对象成为常量时,可以使用Final。声明Final对象后,只能为该值赋值一次,此后不能更改该值。当方法声明为Final时,它不能被任何子类重写。编译器在编译时会对其进行解析。当您声明类Final时当该类不能被子类化时。

15.Java中抽象类和接口有什么区别?

抽象类和接口之间的主要区别在于接口只能有抽象方法,而抽象类将同时有抽象和非抽象方法。抽象类不支持多个继承,它可以有final、non-final、static和non-static变量。但是使用接口可以执行多个操作Java中的继承,它只有静态变量和最终变量。Java中的类可以实现接口,但它只能扩展抽象类。

16.描述JAVA中主要功能的各个部分。

如果可能的话,在任何空白页中编写主要函数。然后开始一个接一个的解释标记。

  • public static void main(String[] args)
  • 公共–意味着该方法在任何地方都可以访问
  • 静态意味着您不必创建类的实例来调用该方法。
  • Void表示主方法不返回任何内容。
  • Main是预定义的方法名。
  • String[]表示main方法接受数组字符串作为参数。
  • Args是参数名。你可以给它取任何你想要的名字。

17.什么是超级关键词?举个例子。

它是一个引用变量,用于引用直接父类对象。当我们创建子类的实例时,父类的实例将被隐式创建并由超引用变量引用。

使用:

  • 它用于引用直接父类实例变量。
  • 也可以使用Super来调用直接父类方法。
  • Super()也可以用来调用直接父类构造函数。

18.说明最终、最终和最终之间的区别。

最终:

它是一个关键字,用于限制类、方法和变量。您不能继承final类或重写final方法并更改final变量的值。

例子:

类FinalExam {
公共静态void main(字符串[]args){
最终整数x=100;
x=200 //编译时间错误
}}

最后:

它是一个块,用于放置一些代码,这些代码与您需要执行的内容无关,即使是否处理了任何异常。

最后一个例子:

类FinallyExam {
公共静态void main(字符串[]args){
试一试{
int x=300;
}catch(异常e){System.out.println(e);}
finally{System.out.println(“最终执行块”);}
}}

完成:

它是一种用于在JAVA中执行对象垃圾清理的方法。

最后确定示例:

类FinalizeExam {
公共空间finalize () {system . out。Println (" finalize正在被调用");}
公共静态void main(字符串[]args){
FinalizeExam f1=new FinalizeExam ();
FinalizeExam f2=new FinalizeExam ();
f1 =零;
f2=零;
gc();
}}

19.方法重载和重载之间的区别。

方法重载增加了程序的可读性。如果一个类有多个方法,并且所有方法的名称都相同,那么您可以使用不同的参数重载它们,以实现不同的工作方式。您可以通过更改返回类型或更改参数的数量来重载。

例子:

类添加{
Static int addmethod(int a,int b){return a*b;}
Static int addmethod(int a,int b,int c){return a+b+c;}
}
类重载1{
公共静态void main(字符串[]args){
2) System.out.println (Add.addmethod(10日);
System.out.println (Add.addmethod(10、11、12));
}}

输出:20
33

方法重写:

如果子类或子类具有与父类中声明的相同的方法,则称为方法重写。

例子:

类车{
void fly(){System.out.println(“汽车正在运行”);}
}
class Bike extends Car{
void fly(){System.out.println(“自行车正在运行”);}

公共静态void main(字符串参数[]){
自行车obj = new Bike();
obj.fly();
}
}

输出:自行车在跑。

20.如何避免死锁?

通过打破循环等待条件,我们可以摆脱僵局。

  • 不要使用多个死锁
  • 不要一次使用多个锁,也不要在持有锁的同时执行外部代码
  • 总是按照相同的顺序获取锁

虽然这个问题列表并不详尽,但它确实给了你面试官想要测试你的关键领域。如果你刚开始学习Java并和乔布斯面试,面试官会问你一些测试你对Java基本概念理解的问题。

我们建议您阅读、练习并编写一些关于这些主题的示例,以更详细地理解这些概念。

带着更多的自信进入下一次面试,尽可能多地阅读和练习。