爪哇面试的前100个核心问题

爪哇核心面试问题

本文包含最常见的核心Java面试最常见问题及其答案的详细列表。我们以一种非常简单的语言涵盖了大约100多个最佳的核心Java面试问题,以帮助您理解Java的基本概念。答案简短明了,并附带相关示例。

本文涵盖了许多JAVA主题,例如 爪哇基础知识,OOP概念,JDBC,Spring,Hibernate,JSP,异常和线程等 

您可以使用部分直接轻松访问类别问题‘quick links’. Let’s get started:

快速链接


爪哇核心面试问题


1)什么是Java?

爪哇是一种高级的,面向对象的,多线程,可移植且与平台无关的编程语言。它最初是由 詹姆斯·高斯林 1991年6月在Sun Microsystems举行。1995年,它作为Sun Microsystems的核心组件发布。

后来,Sun Microsystems被Oracle收购,因此Java由Oracle后来开发。当前,Java是世界上最受欢迎的编程语言之一。由于它具有自己的JRE和API,因此也被视为平台。

2)Java的主要功能是什么?

的 main features/ 烧焦acteristics of 爪哇 are as follows:

简单-Java is a simple programming 郎uage. 的 concept of pointer which is very difficult is completely eliminated from 爪哇.
面向对象-Java is an object-oriented programming 郎uage. This means that 爪哇 programs use classes 和 objects.
分散式-信息分布在网络上的不同计算机上。这是可能的,因为Java可以处理诸如TCP / IP和UDP之类的协议。
强大的- 强大的 means strong. 爪哇 programs are robust 和 do not crash as easily as 和 C 'and' C ++ 'programs. 的re are two reasons for 这个. Firstly, 爪哇 has got excellent inbuilt exception handling features 和 secondly its memory management facility.
大多数“ C”和“ C ++”程序由于未分配足够的内存而中途崩溃。 爪哇不会出现此类问题,因为用户不必在Java中分配或处理内存。一切都会由JVM处理。
安全-Java可以消除病毒,窃听和篡改等安全问题。
系统独立-Java’字节码与机器(系统)无关。这意味着这些代码可以在具有任何处理器和任何操作系统的不同机器上运行。
随身携带-如果程序产生的结果与每台计算机的结果相同,则该程序称为可移植程序。 爪哇程序是可移植的。
多线程-线程代表执行一组语句的单个进程。 虚拟机使用多个线程来执行不同的代码块。创建多个线程称为‘multithreading’.

3)为什么从Java中消除了指针?

从Java中删除了指针,因为:

指针导致程序混乱。
指针可能会使程序容易崩溃。例如,如果添加了两个指针,程序将立即崩溃。当我们忘记释放分配给一个变量的内存并将其重新分配给另一个变量时,也会发生同样的事情。
指针破坏了安全性。通过使用指针,可以开发有害程序,例如病毒和其他黑客程序。

4)什么课?您如何访问班级成员?

在某些情况下,某些对象可能具有相似的属性和功能。这些对象属于同一类别,称为“类”。例如,Jacob,James,Smith等都属于人类。它们具有相同的属性和动作。

我们可以将类用作创建对象的模型。对象用于访问类的成员。

类 Person
{
String name;
int age;
虚空 talk();    //member of class
虚空 eat();
}
Person Jacob= 新 Person();  //Creating object 'Jacob'
Jacob. talk();    //accessing member of class
Jacob. eat();
滚动⇀

5)用Java定义一个对象。用Java如何创建对象?

对象表示类的实例。它是一个包含状态和行为的真实实体。一个对象基本上由以下三个特征组成:

行为
身分识别

要创建一个对象,我们可以使用‘new’ keyword as below:

类Name obj = 新 类Name();
滚动⇀

6)可执行文件和类文件有什么区别?

可执行文件(.exe)包含用于微处理器的机器语言指令,并且与系统有关。此外,该类文件包含用于JVM的字节码指令,并且是与系统无关的。

7)什么是BYTE代码?

BYTE代码是由JVM解释的中间级代码。它不能在计算机上直接执行。 BYTE代码是Java程序和操作系统(OS)的机器代码之间的中介程序代码,可在‘.class’ file. A ‘.class’编译Java程序或应用程序时将生成文件。对于任何操作系统,BYTE代码均相同,但每个操作系统上的机器代码均不同。

8)什么是JVM?解释其工作原理?

虚拟机(Java虚拟机) 是一种抽象机器,旨在在现有处理器的顶部实现。它对Java应用程序隐藏了底层操作系统(OS)。实际上,它是整个Java程序执行过程的核心。

用Java编写的程序被编译为Java字节码;然后由特定Java解释器为特定平台解释。该Java解释器称为“ 爪哇虚拟机”。 虚拟机的机器语言称为Java字节码。

首先,Java编译器使用字节码指令将Java程序转换为类文件。此类文件提供给JVM,它具有一个称为类加载器子系统的模块,该模块执行以下操作:

首先,它将类文件加载到内存中。
然后,它验证所有字节码指令是否适当。如果发现任何可疑的指令,则立即拒绝执行。
如果字节指令合适,它将分配执行程序所需的内存。
下图定义了Java源代码在被编译器执行之前如何经过各个阶段:

爪哇核心面试问题-Java程序的执行

9)什么是JRE?

杰瑞代表“爪哇运行时环境'。它是一个平台,由Java虚拟机,Java库以及运行Java应用程序和applet所需的所有其他组件组成。

10)什么是Java编译器?

爪哇编译器是将Java源代码转换为Java字节码的程序。
基本的Java编译器已包含在其中 JDK(Java开发套件)。 爪哇编译器称为“ javac”。

11)什么是JIT编译器?

A 准时制(JIT) 编译器是JVM的一部分,它提高了Java程序的执行速度。 JIT编译器在运行时与JVM交互。 JIT不会在每次调用方法时都解释字节码,而是将字节码编译为正在运行的计算机的机器代码指令,然后调用目标代码。这样可以防止JVM重复解释相同的字节码序列,并导致执行速度提高。

12)JDK,JRE和JVM有什么区别? 

下面列出了JDK,JRE和JVM之间最流行的区别:

JDK 杰瑞 虚拟机
它代表‘Java Development Kit’. 它代表‘Java运行时环境’. 它代表‘Java Virtual Machine’.
It is a software development environment that is used to compile, document, 和 包 爪哇 programs. 它包括一个可以在其中执行Java字节码的运行时环境。 它是一种抽象机,提供了运行时环境以执行Java字节码。
它在物理上存在。 它在物理上存在。 它是运行Java类时生成的运行时实例。
它是Standard Edition 爪哇 Platform,Enterprise Edition 爪哇 Platform或Micro Edition 爪哇 Platform的实现。 它是JVM的实现。 它的实现称为JRE。

13)是什么让Java产生的’s ‘编写一次即可在任何地方运行’ nature?

爪哇程序不需要反复编写。它们只需编写一次,即可在多个平台上运行,而无需在Java程序中进行任何更改。根据平台,仅Java解释器会更改。

编写和编译Java程序时,它会创建一个‘.class’ file which consists of byte code instruction understandable to 虚拟机. This class file is system independent. Every system 郎uage has its own 虚拟机. So, 虚拟机 converts 这个 byte code into machine 郎uage which is understandable to that particular system. This is what gives 爪哇 ‘编写一次即可在任何地方运行’ nature. 的 爪哇 platform is an independent programming 郎uage.

14) What is 上市 静态的 虚空 main(String args[]) in 爪哇?

线 上市 静态的 虚空 main(String[] args) 定义方法main。从概念上讲,它类似于C / C ++中的main()函数。

在Java中,the 主要() is the entry point for any 爪哇 program. A 爪哇 program can have any number of classes but only one of them must include a method to initiate the execution. 线 includes the following terms:

上市- 期限‘public’是访问说明符。它声明main方法为不受保护的方法,因此使所有其他类都可以访问它。

静态的- 期限‘static’将方法声明为属于整个类的方法,而不是该类任何对象的一部分。 main()应该始终声明为‘static’ because the interpreter uses 这个 method before any object is created.

虚空-类型修饰符“ 虚空”指出main方法不返回任何值,它只是将语句打印到屏幕上。 

主要()-解释器从该方法开始执行程序的方法。实际上,它是Java虚拟机搜索的方法的名称,它是仅具有特定签名的应用程序的初始点。

字符串args []-它是传递给main方法的参数。

15) What happens if 串 args[] is not written in the 主要() method?

如果我们编写不带String args []的main()方法,例如public 静态的 虚空 main(),则将编译代码,但JVM将无法运行该代码,因为它无法将main()方法识别为该方法从应该开始执行Java程序的位置开始。请记住,JVM总是使用字符串数组作为参数来寻找main()方法。 

16) What happens if we write 静态的 上市 虚空 instead of the 上市 静态的 虚空? 

什么时候 上市 静态的 虚空 main(String args[]) 被写成 静态的 上市 虚空 main(String args[]),由于Java中说明符的顺序无关紧要,因此程序将被编译并正常运行。类似地,Java数组中的下标符号也可以在类型之后,变量之前或变量之后使用。例如:

上市 静态的 虚空 main(String[] args)  
public 静态的 虚空 main(String []args)  
public 静态的 虚空 main(String args[])  
滚动⇀

17)用Java示例解释print()和println()方法。

尽管两种方法都用于在屏幕上显示结果,但是它们是不同的。 print()方法显示结果,并将光标保留在同一行中。此外,println()方法显示结果,然后将光标移至下一行。

签出以下程序:

class Myclass{上市 静态的 虚空 main(String[] args){
System.out.println("从内部打印");
System.out.print("Myclass");
System.out.println("Myclass");
}
}
滚动⇀

输出量
从内部打印
我的班
在这里,您可以看到在执行第一个println()方法之后,光标移至下一个。但是,在执行print()方法之后,光标将保持在同一行。这就是为什么最后一个println()方法在同一行中给出输出的原因。

18)我们有Java函数吗?

我们没有Java函数。相反,我们有方法。方法是在类中编写的函数。这意味着无论何时用Java编写函数,都应只在类内部编写。

19)Java是否100%面向对象?另外,请说明原因。

爪哇 is not 100% object-oriented because it supports non-primitive data types which are not objects. Concepts like 多态性, inheritance, abstraction, mainly OOPs concepts make 爪哇 an object-oriented 郎uage. However, it doesn’支持所有OOP概念,例如多重继承。  

20)Java中使用了哪些各种数据类型?

爪哇中使用了八种所谓的数据类型。数据类型即称为“byte, short, int, long, float, double, 烧焦, 和 Boolean”。所有这些数据类型都称为‘原始数据类型’.

•前四种类型(字节,短,整数,长整数)保存整数。四种整数类型通过它们可以容纳的整数范围来区分。这些叫做 整数数据类型。这些数据类型用于表示没有小数部分的整数。例如123、63、225678等。

•float和double数据类型保留实数。两者都以其范围为特色。这些叫做 浮动数据类型。这些数据类型用于表示带小数点的数字。例如3.14、0.023,-123.11等。

• A data type ‘char’ holds a single 烧焦acter from the Unicode 烧焦acter set. It is known as the 字符数据类型。例如,a,P,s,*等。

• A variable of type ‘boolean’拥有一个或两个逻辑值‘true’ or ‘false’. It is known as the 布尔数据类型.

下表显示了Java所有数据类型的大小,缺省值,最小值和最大值:

核心Java面试问题-Java中的数据类型

21)Java程序的类型是什么?

爪哇程序主要有两种类型:(i)Internet小程序,和(ii)StandAlone应用程序。

互联网小程序-Internet小程序是嵌入在网页中的小程序,并通过启用Java的浏览器以安全的方式在不同的计算机上运行(对系统资源的访问受限)。 Internet小程序不能单独运行。这些只能在Web浏览器中运行。

独立应用程序-独立应用程序比Internet小程序有趣得多。这些只不过是不需要底层操作系统(OS)或硬件访问权限的软件应用程序。这种类型的Java程序包括最常用的桌面应用程序,例如文字处理器或电子表格等。Java中的每个独立应用程序都以main()方法的执行开始。 爪哇独立应用程序可以在任何平台上独立运行。

22)与#include相比,导入的有效机制如何?

#include指令使编译器进入C / C ++标准库,并将代码从头文件复制到程序中。结果,程序大小增加,从而浪费了存储器和处理器时间。

import语句使JVM进入Java库,在其中执行代码,然后将结果替换为程序。在此,不会复制任何代码,也不会浪费内存或处理器时间。

这是导入比#include更有效的机制。


23)Java和C ++有什么区别?

下表列出了Java和C ++之间的区别:

C ++ 爪哇
C ++ is platform dependent 郎uage. 爪哇 is a platform-independent programming 郎uage.
无需使用类就可以编写C ++程序。 不使用至少一个类就不能编写Java程序。
指针在C ++中可用。 我们无法在Java中创建和使用指针。
分配/分配内存是程序员的责任。 内存将分配/释放内存。
C ++有一个goto语句。 爪哇不支持goto语句。
C ++中提供了多重继承功能。 爪哇中没有多重继承,但是可以通过Java中的接口来实现。
运算符重载在C ++中可用。 操作符重载在Java中不可用。
#define,typedef和头文件在C ++中可用。 #define,typedef和标头文件在Java中不可用,但是有实现它们的方法。
C ++支持结构和联合。 爪哇不支持结构和联合。
的re are 3 access specifiers in C ++, namely private, 上市, 和 protected. 爪哇 supports 4 access specifiers, namely private, 上市, protected, 和 default.

24)在命令提示符下键入什么命令以编译并运行存储在Myprog.java文件中的程序?

编译-
爪哇c Myprog.爪哇
滚动⇀

跑步-
爪哇 Myprog
滚动⇀

25)什么是本机代码?

本机代码是已被编译为与特定处理器或硬件平台一起运行的计算机编程(代码)。

26)Java中可用的访问保护(访问修饰符)有哪些不同级别?

访问修饰符是特殊的关键字,主要用于限制对另一个类中的任何类,构造函数,数据成员和方法的访问。 Java中基本上有四种类型的访问修饰符:

私人的-班级之外的任何地方都无法访问班级的私人成员。它们只能通过该类的方法在该类内进行访问。

上市-班级之外的任何地方都可以访问班级的公共成员。因此,任何其他程序都可以读取和使用它们。

受保护的-类的受保护成员可以在类外部访问,但通常可以在同一目录中访问。

默认-如果程序员没有编写访问修饰符/说明符,则Java编译器将使用默认的访问说明符。可以在类外部但在同一目录中访问“默认”成员。

核心Java面试问题-Java中的访问修饰符

27)什么是流行的IDE’s used in 爪哇?

许多 IDE(集成开发环境) 在Java中使用。这些IDE在应用程序开发过程中提供了巨大的帮助和支持。 爪哇 IDE基本上是一种由各种编程工具组成的软件,使用户可以轻松编写和调试Java程序。尽管有许多IDE,但是Eclipse,IntelliJ IDEA,Codenvy和NetBeans被广泛使用,并且是最受欢迎的Java IDE。

28)定义‘packages’. What are some advantages of 包s?

A 包 represents a directory or a container that stores related group of classes 和 interfaces. 的 functionality of the objects decides how they are grouped.

: 该声明-

import 爪哇.io.*;
滚动⇀

在这里,我们要导入java.io.package的类。一种‘java’是目录名称,‘io’是其中的另一个子目录。鉴于‘*’代表该类的所有类和接口‘io’ subdirectory.

包装的优点:

•包对于在组中组织相关的类和接口很有用。
•软件包将类和接口隐藏在单独的子目录中,这样就不会意外删除类和接口。
• 班级 和 interfaces of one 包 are isolated from classes 和 interfaces of another 包.

29) How many types of 包s are used in 爪哇?

的re are two different types of 包s used in 爪哇:

(i)内置包装

这些是可用Java语言提供的软件包。这些软件包为程序员提供了执行所有任务所需的所有必要的类,接口和方法。一些重要的软件包是:

爪哇.lang: ‘lang’ stands for 郎uage. This 包 got primary classes 和 interfaces essential for developing a basic program.

爪哇.util: ‘util' stands for utility. This 包 contains useful classes 和 interfaces like the stack, LinkedList, 向量, 数组, 等等 的 classes are called collections.

爪哇.io: ‘io’ stands for ‘input 和 output’. This 包 contains streams. A stream represents the flow of data from one place to another.

(ii)用户定义的程序包

就像内置包一样,用户也可以创建自己的包。这样的软件包称为用户定义的软件包。要创建一个包,一个关键字‘package’ is used. 

例如-
 包name;  //to create 包
 包name.subpackagename;  //to create sub-package in a 包
滚动⇀

30)JVM使用哪些不同类型的内存区域? 

以下是JVM分配的内存区域的类型:

类(方法)区域:此区域包含每个类的结构,例如运行时常量池,方法数据,字段和方法代码。

:堆区域是运行时数据区域,在此处将内存分配给对象。

叠放:Java堆栈存储框架。它存储局部变量和部分结果。 爪哇堆栈参与方法调用和返回。每当创建线程时,都会为每个线程创建一个专用的JVM堆栈。每次调用方法时,都会创建一个新框架,并在方法调用完成后立即终止。

程序计数器寄存器:程序计数器寄存器或PC寄存器存储当前正在执行的JVM指令的地址。

本机方法堆栈:它存储应用程序中使用的所有本机方法。

31)堆和堆栈内存之间的主要区别是什么?

以下是堆和堆栈内存之间的主要区别:

叠放
仅由一个执行线程使用。 应用程序的所有部分都使用它。
其他线程无法访问它。 保存在堆内存中的对象可以全局访问。
它遵循LIFO(后进先出)规则来释放内存。 内存管理取决于与每个对象链接的代。
它一直保留到线程执行结束为​​止。 它从应用程序执行的开始到结束都存在。
堆栈存储器仅保存堆空间中对象的局部原语和引用变量。 一旦对象被构造,它们总是被放置在堆空间中。

32)什么是Java中的类加载器?提及Java中使用的一些类加载器。

爪哇类加载器是JVM(Java虚拟机)的子集,它基本上用于加载类文件。通常,它是当我们要访问任何类时用于将字节码程序加载到内存中的程序。 爪哇具有三个内置的类加载器:

引导类加载器:这是第一个加载JDK内部类(通常是rt.jar和其他核心类)的类加载器(扩展类加载器的超类)。

扩展ClassLoader:这称为Bootstrap的子类加载器和System类加载器的父类加载器。它从JDK扩展目录(通常从$ JAVA_HOME / jre / lib / ext目录)加载类。

系统/应用程序类加载器:这是扩展类加载器的子类加载器,它从当前类路径加载类文件。可以在使用“ -cp”调用程序时更改类路径” or “-classpath” switch.

我们还可以通过扩展ClassLoader类并覆盖loadclass(String name)方法来创建类加载器。

33)使用空的.java名称是Java程序的有效文件名吗?

是的,它是一个有效的文件名。因为Java允许我们使用名称保存Java程序‘.java’,但我们需要使用进行编译 爪哇c .java 并由 爪哇 classname.

例如:
class Noname{上市 静态的 虚空 main(String args[]){  
System.out.println("Hello from 教程伴侣");  
}  
} 
滚动⇀

If you save 这个 program by .java only, you have to compile it by 爪哇c .java 和 run it by 爪哇 Noname.

34)包装类是什么?

As the name suggests, wrapper classes are used to wrap the primitive data type into an object of that particular class. In simple words, wrapper classes are used to convert 爪哇 primitives into the reference types (objects). 的y are typically the way of object representation of all eight primitive commonly used in 爪哇. 在Java中,all the wrapper classes are immutable 和 final.

注意:从Java 5开始,原语会自动转换为对象。此过程称为自动装箱。

关于集合的Java面试问题


35)Java中的收集框架是什么?

在Java中,a collection framework is basically an architecture consisting of classes 和 interfaces. It is used to store 和 manipulate data as objects. It includes many classes like 数组List, 向量, 叠放, HashSet, 等等 和 interfaces like List, Queue, Set, 等等 Using collections, we can perform various functions such as searching, sorting, insertion, deletion, manipulation, 等等


在Java中,a collection framework typically includes 接口,类方法.

36)什么是类型转换?

Typecasting is the process of assigning one data type variable to another data type variable. However, 这个 concept does not apply to 布尔数据类型s. 的re are basically two types of typecasting:

隐含的:隐式是将小数据类型的值存储在大数据类型中的过程,该过程由编译器自动完成。

明确的:显式是将较大数据类型的值存储为较小数据类型的过程。

关于数组的Java面试问题



37)你是什么意思‘Array’?

数组表示相同数据类型的元素的集合。它可以存储一组元素,这意味着我们可以在数组中存储一组int值或一组float值或一组字符串。

In C ++ by default, 数组s are created on 静态的 memory unless pointers are used to create them. 在Java中,Arrays are created on dynamic memory which means that the memory is allotted at runtime by 虚拟机. 的re is no use of 静态的 memory in 爪哇. Everything (i.e., variable, array, object, 等等) is created on dynamic memory only.

通常,数组分类为:

(一世) 一维(或一维数组)
(ii) 多维(或2D,3D,…..Arrays)

38)数组与Java中的ArrayList有何不同?

下表列出了Array和ArrayList之间的主要区别:

数组 数组List
大小应在数组声明时定义。 它不需要大小,因为大小会动态更改。
它可以保存原始数据类型以及对象。 它可以容纳对象,但不能容纳原始数据类型。
要将对象添加到Array中,我们需要指定索引。 name[1] = “book” 在ArrayList中,无需指定索引。 name.add(“book”)
数组未参数化类型。 数组List已参数化。

39)Java中的向量是什么?

向量存储类似于ArrayList的元素(对象),但向量已同步。这意味着即使多个线程同时作用于矢量对象,结果也将是可靠的。

40)ArrayList和Vector有什么区别?

下表列出了ArrayList和Vector之间的主要区别:

数组List 向量
数组List快速,因为它不同步。 向量很慢,因为它已同步。但是,它是线程安全的。
数组List不是遗留类。 向量是一个遗留类。
如果将元素放入ArrayList,则其大小将增加Array大小的50%。 在vector中,通过将Array大小加倍来增加大小。
它没有定义增量大小。 它定义了增量大小。
数组List仅使用Iterator遍历ArrayList。 向量使用Enumeration和Iterator进行遍历。

41)Java中的循环是什么?解释其类型。

在Java中,looping allows programmers to execute a statement or a block of statement repeatedly. It typically enables programmers to control the flow of execution by repeatedly performing a set of statements as long as the continuity condition remains 真正. 

爪哇中有三种循环类型:for,while和do-while。

对于循环:用于重复执行指定次数的语句。 

While循环:用于重复执行特定语句,直到满足条件为止。在执行语句之前验证条件。

做While循环:类似于While循环,唯一的不同是条件在最后被验证。因此,do-while保证至少执行一次语句块。 

42)什么是无限循环?

An infinite loop is a set of instructions in 爪哇 that loops infinitely when a condition does not satisfy. This type of loop is typically a result of a programming 错误. An infinite loop will terminate automatically if we close the application or we can use “ctrl + c”立即终止。


上市 class InfiniteForLoopDemo
{
上市 静态的 虚空 main(String[] arg) {
for(;;)
System.out.println("Hello from 教程伴侣.");
}
}
滚动⇀

43) What is the main difference between 打破 和 继续 statement? Explain with examples.

在Java中,break 和 继续 are two important statements used with Loops. Let’s understand each:

打破

在循环中使用“ 打破”语句时,循环立即终止。它也可以与'switch'语句一起使用。

: In 这个 example, Loop is terminated when the value of integer ‘i’ reaches 5.

上市 class Breakdemo
{
上市 静态的 虚空 main(String[] args)
{
for (int i=1; i<=10; i++)
{
if (i==5)
{
打破;
}
System.out.println(i);
}
System.out.println("i = 5时循环结束");
}
}  
滚动⇀

输出量
1
2
3
4
i = 5时循环结束

继续

在循环中使用“ 继续”语句时,将跳过当前迭代,并且循环跳至下一个迭代。与“ 打破”语句不同,“ 继续”语句不会终止循环。 “ 继续”语句只能与循环一起使用,而不能与“ switch”一起使用。

: In 这个 example, when the value of ‘我达到5,循环跳到下一个迭代。之后写的任何陈述‘continue’在当前迭代中被跳过。 

上市 class Continuedemo
{
上市 静态的 虚空 main(String[] args)
{
for (int i=1; i<=10; i++)
{
if (i==5)
{
继续;
}
System.out.println(i);
}
}
}  
滚动⇀

输出量
1
2
3
4
6
7
8
9
10

有关字符串的Java面试问题


44) Explain the concept of 串 in 爪哇?

Generally, a group of 烧焦acters is called a 'string'. But 这个 is not valid in 爪哇. 在Java中,a 串 is an object that represents a sequence of 烧焦acters. A class 爪哇.lang.String is used for creating a 串 object. An array of 烧焦acters works similarly to 爪哇 串s. 


例如:
烧焦[] ch = {'t','u','t','o','r','i','a','l','s','m','a','t','e'};  
String s = 新 String(ch);  
滚动⇀

与:
String s = "同学";  
滚动⇀

爪哇Soft人们已经用名称分别创建了一个类‘string’ in 爪哇.lang 包, with all the necessary methods to work with 串s.

45) How 串s are created in 爪哇?

的re are three common ways used to create a 串 in 爪哇:

(一世) We can create a 串 by assigning a group of 烧焦acters to a 串 type variable-
String s;
s = “tutorialsmate”
滚动⇀

前面的两个语句可以组合,并且可以写为:
String s = “tutorialsmate”;
滚动⇀

In 这个 case, 虚拟机 creates an object 和 store the 串 “tutorialsmate” in that object.

(ii) Another way, a 串 can be created by using a 新 operator-
String s =String(“tutorialsmate”)
滚动⇀

(iii) 的 third way of creating the 串s is by converting the 烧焦acter array into 串s-
烧焦 arr[] = {'t','u','t','o','r','i','a','l','s','m','a','t','e'};  
滚动⇀

Now, create a 串 object by passing the array name like 这个:
String s =String(arr);  
滚动⇀

In 这个 case, all the 烧焦acters of the array are copied into the 串. If we do not want to copy all the 烧焦acters of the array into the 串, then we can specify the 烧焦acters that we need as below:
String s =String(arr, 2, 3);
滚动⇀

Now, the 烧焦acters will be copied from the 2nd 烧焦acter of the array 和 there will be a total of 3 烧焦acters copied into the 串 s. 

46) Is 串 a class or data type?

字符串是java.lang包中的类。由于类在Java中也被视为数据类型。因此,我们也可以假设字符串为数据类型。但是,字符串不是Java中的原始数据类型。相反,它是一个称为“用户定义”数据类型的类。这是因为用户也可以创建一个类。 

47)String和StringBuffer有什么区别?

字符串类对象是不可变的,因此无法修改内容。而StringBuffer类中的对象是可变的,因此可以对其进行修改。另外,在字符串类中没有直接操作对象数据的方法。此类方法在StringBuffer类中可用。

Some other immutable classes are byte, 烧焦, int, float, double, long, 等等

48)为什么字符串在Java中是不可变的?

在Java中将字符串称为不可变的原因是,一旦创建了字符串对象,就无法更改或修改其状态。如果我们尝试更改对象的值,则Java将创建一个新的字符串对象。通常,字符串对象被缓存在字符串池中。 

例如,
String str = “First Value”
滚动⇀

Here, reference str refers to a 串 object having a value “First Value”.
当给它一个新值时,将创建一个新的String对象,并将对引用的更改为:
str = “New Value”
滚动⇀

49)Java String Pool是什么意思?

放置在堆内存中的字符串集合称为Java字符串池。每当创建新对象时,都会检查字符串池中是否已经存在对象。如果已经存在对象,则将当前引用返回到变量,否则创建新对象,并返回相应的引用。
核心Java面试问题-什么是Java字符串池

有关构造函数的Java面试问题



50)Java中的构造函数是什么?

在Java中,constructor is a special kind of method commonly used to initialize the state of an object. It must have the same name as that of the class where it belongs. 什么时候ever a 新 object is created, a constructor corresponding to the class gets invoked. 的 constructor must not include an explicit return type. 


构造器基本上有两种类型: 

默认构造函数:不接受任何输入的构造函数称为默认构造函数。换句话说,当我们在类中未定义任何构造函数时,默认情况下会创建一个默认构造函数。这种类型的构造函数主要用于使用默认值初始化实例变量。此外,它还可用于创建对象。

参数化构造函数: 在Java中,a parameterized constructor is referred to as the constructor which can initialize the instance variables with the defined values. In other words, a constructor that cannot take the arguments is known as a parameterized constructor. 

51)构造函数和方法之间有什么区别?

下表列出了构造函数和方法之间的一些重要区别:

建设者 方法
它用于初始化类的实例变量。 它用于任何通用处理或类。
构造函数’的名称和类名称必须相同。 方法的名称和类的名称可以相同或不同。
在创建对象时调用它。 创建对象后可以调用它。
每个对象仅调用一次。 可以在对象上多次调用它。
它被调用并自动执行。 仅当我们调用它时才执行它。

52)构造函数链接是什么意思?

在Java中,we can call a constructor from another constructor with respect to the existing object. However, it is only possible via legacy where a subclass is responsible for invoking the 超class' constructor first. 的 process is known as '构造函数链’。构造函数链可以包含任意数量的类。 

可以使用两种方法执行构造函数链接: 

(一世) Using 这个() within the current class
(ii) Using 超() from the base class

其他Java面试问题


53)Final和Final之间有什么区别?

最终与最终之间的主要区别如下表所示:

最后 最后
最后用于包括对类方法和变量的限制。它不能被继承。 最后方法不能被覆盖,并且Final变量的值不能更改。 “最后”用于保存重要的代码。无论是否处理异常,都将执行。
最后是一个关键字。 最后是一个街区。

54) What are the differences between 静态的 和 non-static methods in 爪哇?

的 main differences between 静态的 和 non-static methods are tabulated below:

静态方法 非静态方法
必须在方法名称之前使用它。 方法名称前不使用它。
的 静态的 method cannot access any non-static instance variable or method. 的 non-static method can access any 静态的 method or variable without creating an instance of the class.
的 静态的 method is called using the class (className.methodName). 与任何其他常规方法一样,调用非静态方法。

55)解释Java中的final关键字吗?

在Java中,a 'final' keyword is used as a non-access modifier. In simple words, it is a special keyword that is used to include restrictions on class, methods, 和 variables. 

final关键字在不同的上下文中使用如下:

最终变量:一旦我们将final关键字与变量一起使用并为其分配了值,就无法更改它。没有赋值的最终变量只能使用类构造函数进行赋值。

最终方法:一旦我们将任何方法声明为Java中的最终方法,就不能覆盖它。

期末班:一旦将一个类声明为final,则不能将其继承到任何子类中。但是,它可以扩展其他类。

56)什么是Java Map?

在Java中,Map is an object which maps unique keys to values. It is typically an interface but not a subset of the main collection interface 和 这个 is why it has different functionalities than other collection types. 

Some important 烧焦acteristics of Map interface are listed below:

它不能包含重复的密钥。
每个键最多可映射一个值。

地图使用“equal()”验证两个密钥是相似还是不同的方法。 
爪哇有四种不同类型的Map,分别是 HashMap,HashTable,LinkedHashMap树状图.

57) What is 这个 keyword in 爪哇?

在Java中,‘this’是在方法或构造函数中引用当前对象的关键字。简单来说‘this’关键字用于防止类属性和名称相似的参数之间的混淆。所有方法,构造函数,实例,变量都可以通过‘this’。为类创建对象时,还将在内部为该对象创建默认引用。这个默认参考不过是‘this’.

例如:
虚空 modify(int x)
{
这个.x=x;
}
滚动⇀

在这里,代码‘this.x’指当前阶级。

58) What is 超 in 爪哇?

在Java中,‘super’ is a keyword that acts as a reference variable. It typically refers to the immediate parent class object. 什么时候ever the instance of a subclass is created, an instance of the parent class is also created which is referred by a 超 reference variable. 的 compiler will implicitly call 超() if there is no 超() or 这个() in the class constructor. 

它可以用来引用直接父类实例变量。
它可用于调用直接父类的构造函数。
它可以用来调用直接父类的方法。

59) What are the differences between 这个() 和 超()?

在Java中,this() 和 超() both are the special keywords commonly used to call constructors. However, there are some differences between them which are tabulated below:

这个() 超()
这个() is used to represent the current instance of a class. 超() is used to represent the current instance of a parent/base class.
这个() is used to access current class methods. 超() is used to access base class methods.
这个() is used to call the default constructor of the current class. 超() is used to call the default constructor of base/parent class.
这个() is used to point the current class context. 超() is used to point the parent class contexts.
这个() is used for differentiating local 和 instance variables when passed in the class constructor. 超() is used for initializing the base class variables within the derived class constructor.

60)解释Java中的单例类吗?

爪哇中的Singleton类是在JVM中一次只能创建一个实例的类。因此,单例类的所有方法和变量仅属于一个实例。要使任何类单例,我们可以将其构造函数设为私有。制作单例类的概念在类需要对象的情况下很有用。

61)在Java中equals()和==有什么区别?

在Java中,the 等于() method is defined in object class 和 commonly used to compare two objects defined by business logic. It returns ‘true’如果值相同。

此外,等于运算符或“==”是二进制运算符,用于检查两个对象的引用是否相等。

:在这里,equal()方法返回true,因为两个字符串(str 1和str2)中的值 是相同的。而==运算符将返回false,因为两个字符串(str 1和str2)对象都引用了不同的对象。 


上市 class equalsDemo {
    上市 静态的 虚空 main(String args[]) {
        String str1=  String("Hello from 教程伴侣");
        String str2 =  String("Hello from 教程伴侣");
        if (str1.equals(str2))
        { // when condition is 真正
            System.out.println("str1&str2的值相等。");
        }
        if (str1== str2) {
            //when condition is 真正
            System.out.println("str1& str2 are referencing same object.");
        } else
        {
            // when condition is NOT 真正
            System.out.println("str1&str2引用了不同的对象。");
        }
    }
}
滚动⇀

输出:
str1&str2的值相等。
str1&str2引用了不同的对象。

有关OOP的Java面试问题



62)什么是面向对象的编程?

面向对象的编程(通常称为OOP)是一种方法或编程模型,其中程序围绕对象而不是逻辑和函数进行组织。简而言之,它是一种编程范例,它基于操纵而非逻辑所需的对象。该方法对于具有大型和复杂结构的程序以及需要连续维护和更新的程序特别有用。 


面向对象编程的一些共同特征是:

它遵循程序设计中的自下而上的方法。
它着重于具有对对象进行操作的方法的数据’s data.
它使用诸如抽象和封装之类的概念来隐藏复杂性和显示功能。
它包括诸如继承,抽象等实时方法。

63)Java中的OOP概念是什么?

下面列出了各种OOP概念:

抽象化
聚合
协会

组成
封装形式
遗产
目的
多态性

64)什么是继承?

在Java中,继承是一个概念,其中任何类的对象的属性都由另一个类的另一个对象获取(继承)。当我们需要在现有类中添加新类时,此概念很有用。我们可以通过继承现有类来重用父类(现有)的所有方法和字段。另外,我们可以在当前类中包括新的方法和字段。继承基本上建立了不同类之间的关系。

继承是在父类(基类或父类)和子类(子类或派生类)之间执行的,在Java中这称为父子关系。

65)Java中继承有哪些不同类型?

爪哇有四种继承类型:

单继承:当一个类继承另一个类的属性和行为时,称为单继承。也称为单级继承。单个继承中将只有一个父类和一个子类。

多级继承:在多级继承中,一个类派生自一个类,该类又派生自另一个类。这意味着将有一个具有多个父类但处于不同级别的类。 

层次继承:在分层继承中,将有两个或更多子类,但具有相同的父类。

混合继承:当两种或多种继承类型组合在一起时,称为混合继承。

66)为什么Java中不允许多重继承?

什么时候 a child class (a single subclass) has two parent classes, it means that a child class inherits properties from multiple classes, 这个 is called multiple inheritance. 爪哇 does not support multiple inheritance because during runtime when there are two parent classes with the same method name, it becomes ambiguous 和 difficult for the compiler to determine which method to execute from the child class.

67)Java中的封装是什么?

封装是面向对象编程的概念,用于将数据(变量)和代码(方法)组合为一个单元。数据通常对其他人是隐藏的,这意味着只能通过当前的类方法进行访问。这对于保护数据免遭未经授权的访问很有用。这将防止任何不必要的修改或更改。

在Java中,encapsulation is achieved using the following techniques:

我们可以将一个类的变量声明为私有。
我们可以提供setter和getter方法来更改和查看变量的值。

68)什么是多态?

一个条件‘polymorphism’通常称为“many forms”, that means “一个界面,多种实现”. In simple words, 多态性 is a property of being capable to have various forms in different contexts –具体来说,允许诸如方法,对象或变量之类的实体采用几种形式。此机制仅适用于覆盖,不适用于重载。

的re are two types of 多态性s in 爪哇, namely "compile-time 多态性“和”run time 多态性”。 Run time 多态性 is also known as "动态方法分派”。

69)Java中的抽象是什么意思?

在Java中,Abstraction is the process of hiding the implementation details from the user 和 showing them only the essential things. It hides internal information 和 enables us to focus only on the concept of what an object can do rather than how it is doing.

有两种方法可以用Java实现抽象:

抽象类
介面

70)Java中的接口是什么?

接口是类的蓝图,或者可以说接口是静态常量和抽象方法的集合。我们可以使用接口来实现Java中的完全抽象和多重继承。接口中的每个方法都是公共的和抽象的。但是,它不包含任何构造函数。 

爪哇接口只能包含一组抽象方法,而不能包含方法主体。接口不能被实例化为抽象类。我们需要实现它们以定义其方法。

:
上市 interface Animal {
  上市 虚空 eat();
  上市 虚空 sleep();
  上市 虚空 run();
}
滚动⇀

71)抽象类和接口之间有什么区别?

下面列出了抽象类和接口之间的一些重要区别:

抽象类 介面
抽象类可以提供完整的默认代码和/或仅提供需要覆盖的详细信息。 接口无法提供任何代码,只能提供签名。
在这里,一个类只能扩展一个抽象类。 在这里,一个类可以包括几个接口。
它可以包含实例变量。 它不能包含实例变量。
它可以包括非抽象方法。 接口的所有方法都是抽象的。
它可以包含构造函数。 它不能包含构造函数。
很快 这很慢,因为它使用间接功能在实际类中定位相应的方法。

72)什么是方法重载?

在“方法重载”中,相同类的方法使用相同的名称,但是每个方法包含不同数量的参数,这些参数具有不同的类型和顺序。这些方法必须有不同的签名。从根本上讲,方法重载是为方法的行为增加或扩展的概念。

方法 overloading is referred to as the compile-time 多态性. It may or may not involve inheritance.

73)通过方法重写您了解什么?

在Java中,method overriding allows a subclass to provide a specific implementation of a method which has already been offered with its parent class or 超class. In simple terms, the subclass retains the same method, the same name, the same type of parameter, 和 the same return type as a parent class. 方法 overriding is a concept of changing the existing behavior of the method.

方法 overriding is referred to as run time 多态性. It is necessary to have an inheritance in method overriding.

74)方法重载和方法重载之间有什么区别?

下面列出了方法重载和方法重写之间的主要区别:

方法重载 方法覆盖
当使用相同名称但签名不同的两个或多个方法编写时,称为方法重载。 当使用相同和相同的签名编写两个或多个方法时,这称为方法重写。
方法重载发生在同一类中。 方法 overriding happens in 超 和 subclass.
在此,方法返回类型可以相同或不同。 在这里,方法的返回类型应该相同。

75)您的联想是什么意思? 

关联是没有所有权的两个对象之间的关系。这意味着每个对象都有其单独的生命周期。关系可以是一对一,一对多,多对一和多对多。

:学生与老师之间的关系。它们可以在不同的上下文中彼此关联;但是,它们都有自己的生命周期。这两个对象之间没有所有权。 

76)什么是聚合?

在Java中,aggregation can be explained as the relationship between two different classes where the aggregate class consists of a reference to the class it owns. In simple terms, all the objects have their own lifecycle but unlike the association, there is ownership. That means that child object cannot belong to any other parent object.

:教师与部门之间的关系。一个教师不能单独属于多个部门,但是该部门被删除,该教师对象不会被销毁。

77)什么是成分?与聚合有何不同?

合成是将某个类的引用保存在其他某个类中的过程。它是聚合的一种特殊形式。这也称为死亡关系。这是因为子对象没有生命周期。这意味着,如果父对象被删除,所有关联的子对象也将被自动删除。例如,学生与班级之间的关系。没有班级就不可能存在学生。 

合成表示两个对象之间的关系更牢固。此外,聚合表示周关系。 

例如:
汇总-自行车包含一个指示器。
组成-自行车装有发动机。

78)定义标记界面。

A Marker interface can be referred to as an interface that has no data member 和 member functions. In other words, an empty interface is defined as the Marker interface. 在Java中,the most common examples of the marker interface are Serializable, Cloneable, 等等

标记接口可以声明为:
上市 interface Serializable{
}
滚动⇀

79)Java中的对象克隆是什么意思?

在Java中,对象克隆是用于创建对象的精确副本的过程。这意味着创建的对象将具有与原始对象相同的状态。我们可以使用对象类的clone()方法创建对象的副本。必须有java.lang.Cloneable标记接口,以防止任何运行时异常。如果我们不这样做’为了实现Cloneable接口,方法clone()将提供CloneNotSupportedException。

clone()方法的语法:
protected 目的 clone() throws CloneNotSupportedException
滚动⇀

在这里,应该注意,它是一种受保护的方法,因此我们需要重写它。

80)解释Java中的构造函数重载?

爪哇中的构造函数重载是将任何构造函数添加到类的概念,但是它们每个都有单独的参数列表。编译器通常在列表中使用几个参数及其类型来分隔重载构造函数。

:
class Demo
{
int i;
上市 Demo(int a)
{
i=k;
}
上市 Demo(int a, int b)
{
//body
}
}
滚动⇀

81)您对复制构造函数了解多少?

复制构造函数是成员函数,通常用于使用当前类的另一个对象初始化一个对象。

在Java中,there is no copy constructor. It does not even need a copy constructor concept because objects are passed by reference in 爪哇. That means that we can copy the values from one object to another. 爪哇 supports the following ways to copy the values of one object into another:

按构造函数
通过将一个对象的值分配给另一个对象。
通过使用对象类的clone()方法。

有关JDBC的Java面试问题


82)什么是JDBC驱动程序?

JDBC驱动程序是允许Java程序与数据库进行交互的软件组件。 JDBC驱动程序有四种类型,如下所示:

JDBC-ODBC桥驱动程序
Native-API driver (partially 爪哇 driver)
Thin driver (fully 爪哇 driver)
Network Protocol driver (fully 爪哇 driver)

核心Java面试问题-JDBC驱动程序图

83)写下用Java连接数据库的步骤吗?

以下是用于连接到Java数据库的步骤:

注册驱动程序类。
创建一个连接。
创建一个语句。
执行查询。
关闭连接。

84)解释JDBC API组件。

的 包 爪哇.sql includes classes 和 interfaces for JDBC API.

班级:驱动程序管理器,Blob,Clob,SQLException和类型等。

介面:连接,语句,PreparedStatement,ResultSet,ResultSetMetaData,DatabaseMetaData和CallableStatement等。

85)JDBC连接接口是什么意思?

连接接口负责维护与数据库的会话。它也可以用于事务管理。它提供了工厂方法,这些方法返回Statement,CallableStatement,PreparedStatement和DatabaseMetaData的实例。

核心Java面试问题-JDBC连接界面

86)JDBC中的批处理是什么?

Batch processing is the process of grouping all related SQL statements into one batch so that they can be executed simultaneously rather than executed separately. Using 这个 concept in JDBC, we can execute multiple queries simultaneously which will result in increased performance.

87)JDBC语句是什么?

JDBC语句用于将SQL命令传输到数据库并从数据库接收回数据。 JDBC提供了与数据库交互的不同方法,例如execute(),executeQuery,executeUpdate()等。

JDBC提供了三种类型的语句,即Statement,PreparedStatement和CallableStatement。

声明: 的se types of statements are used to get access to the database for general purposes, 和 execute a 静态的 SQL query at run-time.

准备声明:这些用于在执行之间将输入参数分配给查询。

CallableStatement:这些用于访问数据库存储过程并帮助接受运行时参数。

Spring上的Java面试问题


88)什么是春天?

Spring是一个应用程序框架,用于用Java开发企业应用程序。它是一个轻量级,松散耦合,集成且广泛使用的Java EE框架。

Spring框架的核心组件是“依赖注入” 和 “面向方面的编程”。核心功能可以在任何Java应用程序中使用。它还提供了可用于在Java EE平台上开发Web应用程序的扩展。

89)提到Spring框架的一些重要模块。

下面列出了一些重要的Spring Framework模块:

• 春季语境:用于依赖项注入。
• 春季AOP:用于面向方面的编程。
• Spring JDBC:用于JDBC和DataSource支持。
• 春季ORM:用于ORM工具支持,例如Hibernate。
• Spring Web模块:用于创建Web应用程序。
• 春道:用于使用DAO模式的数据库操作。
• 春季MVC:也称为Model-View-Controller实现。它用于创建Web应用程序,Web服务等。

90)什么是春豆?命名Spring Bean的不同范围。

Bean是由Spring IoC容器管理的对象。它们被称为Java应用程序的主干。简单来说,Bean或Spring Bean是由Spring IoC容器实例化,组装或管理的对象。

春豆的不同范围是 单例,原型,请求,会话,全球会议.

91)在春季解释自动装配。命名自动装配模式。

注入豆的过程称为接线。自动装配是spring框架中的概念,它使我们能够自动注入bean。因此,我们不需要编写显式的注入逻辑。但是,如果我们对所有bean依赖项执行显式连接,则这被视为最佳实践。

Spring框架中有四种类型的自动装配模式:

通过@Autowired和@Qualifier注释自动装配。
自动装配byName
按类型自动装配
由构造器自动装配

92)什么是重要的Spring注释?

一些重要的Spring注释是:

@Controller:用于Spring MVC项目中的控制器类。
@RequestMapping:用于在控制器处理程序方法中配置URI映射。这是最重要的注释之一。
@ResponseBody:用于发送对象作为响应,通常用于发送XML或JSON数据作为响应。
@PathVariable:用于将动态值从URI映射到处理程序方法参数。
@Autowired:用于在Spring Bean中自动装配依赖项。
@Qualifier:与 @Autowired 注释,以避免在存在多个bean类型的实例时造成混淆。
@服务:用于服务类。
@范围:用于配置Spring bean的范围。
@组态, @ComponentScan@豆: 的y are used for 爪哇 based configurations.
AspectJ注释,用于配置方面和建议, @ Aspect,@ Before,@ After,@ Around,@ Pointcut, 等等

93)Spring支持哪些不同类型的事务管理?

Spring框架支持两种类型的事务管理:

程序化交易管理:借助编程的灵活性极大地管理事务。但是,这很难管理。

声明式交易管理:此处,交易与业务代码分离。并且,然后仅通过基于XML的注释或配置来管理它。

Hibernate上的Java面试问题


94)什么是Hibernate框架?

Hibernate是一个轻量级的开源软件 ORM(对象关系映射) 通常用于存储,操作和从数据库接收数据的工具。它实际上提供了一个框架,我们可以使用该框架将应用程序域对象映射到关系数据库表,反之亦然。

Hibernate提供了Java Persistence API的参考实现,使其成为具有松耦合优势的ORM工具的绝佳选择。另外,Hibernate Persistence API也可以用于CRUD操作。 Hibernate Framework使我们可以选择使用JPA注释和XML配置将简单的旧Java对象映射到传统数据库表。

同样,Hibernate配置非常灵活,也可以通过编程在XML配置文件中完成。

95)绘制Hibernate体系结构的结构图。

下图显示了Hibernate体系结构的结构图:

爪哇核心面试问题-Hibernate Architecture

96)与JDBC相比,使用Hibernate框架有什么优势?

与JDBC相比,使用休眠框架的几个最重要的优点是:

Hibernate有助于删除JDBC API附带的许多样板代码,这使代码干净且易于阅读。
•Hibernate具有诸如继承,关联和集合等功能,这些功能在JDBC API中不可用。
Hibernate查询语言(也称为HQL)与Java更友好,因为它更面向对象。此外,我们需要在JDBC中编写本机SQL查询。
Hibernate提供了可提高性能的缓存,而JDBC查询则不可捕获。
Hibernate具有一些选项,通过这些选项我们可以创建数据库表,而在JDBC中,表必须存在于数据库中。

JSP上的Java面试问题


97)解释JSP的生命周期方法。

以下是JSP生命周期的方法:

jspInit():此方法仅被调用一次,这几乎与servlet的init方法相似。

_jspService():在每次请求时都会调用此方法,这与servlet的service()方法类似。

jspDestroy:此方法也仅被调用一次。这类似于servlet的destroy()方法。

98)什么是jspDestroy()方法?

每当要销毁JSP页面时,都会从javax.servlet.jsp.JspPage接口调用jspDestroy()方法。可以覆盖Servlet的destroy方法来执行清理,例如在关闭数据库连接时。

99)什么是servlet?

在Java中,a servlet is a technology that works on the server-side. 的 servlet provides support for dynamic response 和 data persistence that helps increase the capacity of the webserver. We can also write custom servlets using the interfaces 和 classes of the 爪哇x.servlet爪哇x.servlet.http 包s.

100)如何在JSP中禁用会话?

要在JSP中禁用会话,我们可以使用:

<%@ page session=“false” %>
滚动⇀

101)我们需要在web.xml中配置JSP标准标记吗?

不,我们不需要在web.xml中配置JSP标准标记。这是因为无论何时容器加载Web应用程序并检索TLD文件,它都会自动排列这些文件。因此,这些文件已经配置好,可以与JSP页面应用程序一起使用。我们只需要使用taglib指令在JSP页面上包括文件。

有关异常的Java面试问题


102) How will you differentiate an 错误 from exception?

错误是指在运行时发生并且无法恢复或修复的条件。这意味着在运行时无法修复这些JVM错误。尽管可以在catch块中捕获错误,但是应用程序的执行将停止并且无法恢复。此类错误的一个示例是OutOfMemory错误。此错误是java.lang.Error的子类,通常在JVM内存不足时发生。

此外,例外是在执行期间用户提供错误输入时通常发生的情况。通常,这些类型的问题是在运行时恢复的。例如FileNotFoundException,它在用户指定的路径中没有文件时发生。可以通过给出屏幕上的反馈来恢复它,该反馈告诉用户输入正确的值或路径。

103)Checked和Unchecked Exception有什么区别?

下面列出了已检查和未检查的异常之间的一些重要区别:

检查异常 未经检查的异常
除RuntimeException或Error外,检查的异常是用于扩展Throwable类的类。 未检查的异常是用于扩展RuntimeException的类。
这些在编译时检查。 这些不会在编译时检查。
示例:IOException,SQLException等 示例:ArithmeticException,NullPointerException等。

104)解释Java中的异常层次结构。

异常层次:所有异常类都称为java.lang.Exception类的子类型。异常类实际上是Throwable类的子类。简而言之,Throwable是所有Exception类的父类。

除了执行类,还有另一个子类,称为‘error’ which is derived from Throwable class. 的 exception class is divided into two main subclasses: IOException class 和 RuntimeException class. Both of these exceptions extend exception class whereas 错误s are further sub-divided into Virtual Machine 错误 和 Assertion 错误.

 在Java中

105)如何创建自定义例外? 

要创建自定义异常,我们可以扩展Exception类或其任何子类。

class New1Exception extends Exception { }               // creates 检查异常
class NewException extends IOException { }             // creates Checked exception
class NewException extends NullPonterExcpetion { }  // creates UnChecked exception
滚动⇀

106)什么是同步?

同步是一个概念,它一次只允许一个线程访问一个代码块。因为Java提供了执行多个线程的选项,所以两个或多个线程可以访问相同的字段或对象。但是,如果有多个线程访问代码块,那么最后可能会得到不正确的结果。因此,同步用于管理所有并发线程,并使它们在执行中保持同步。

Synchronization prevents memory consistency 错误s that may have occurred because of the inconsistent view of shared memory. 什么时候 a method is synchronized, the thread holds the monitor of that particular method’的对象。如果另一个线程正在执行同步方法,则该线程将被阻塞,直到该线程释放监视器为止。

爪哇核心面试问题-什么是同步

107)throw和throws有什么区别?

throw和throws关键字之间的主要区别如下表所示:

抛出关键字 抛出关键字
此关键字用于显式引发异常。 此关键字用于声明异常。
我们不能抛出多个异常。 我们可以声明多个异常。
已检查的异常不能仅通过throw传播。 可以使用throws传播已检查的异常。
Throw关键字后跟一个实例。 Throws关键字之后是类。
在该方法内使用Throw关键字。 Throws关键字与方法签名一起使用。

有关线程的Java面试问题


108)什么是线程? 

在Java中,线程是程序中由调度程序独立执行的语句的最小部分。它实际上代表了一组指令的单独执行路径。每当我们编写程序时,该程序的语句就会由JVM逐一执行。这种执行流程称为线程。这意味着在每个Java程序中始终至少有一个线程,称为主线程。

一旦开始执行程序,JVM将创建主线程。主线程基本上用于调用程序的main()。我们还可以使用Java创建自定义线程。线程是同时执行的。

109)进程和线程之间有什么区别? 

进程和线程之间的主要区别如下表所示:

处理 线
进程在单独的虚拟内存空间中运行。两个进程可以同时运行而不会相互重叠。 线程是流程中的实体。进程的所有线程共享当前进程的虚拟地址空间和系统资源。但是,他们使用自己创建的堆栈。
每个过程都包含自己的数据段。 允许该进程创建的所有线程使用相同的数据段。
进程使用诸如进程间通信之类的技术与其他进程进行交互。 线程不允许具有单独的地址空间,因此它们直接与现有进程的其他线程通信。
该过程由操作系统(OS)管理。 线程由程序中的程序员管理。
流程是独立的。 线程是依赖的。

110)用Java创建线程的两种方式是什么? 

用Java创建线程通常有两种方法:

•通过实现Runnable接口。
•通过扩展线程。



订阅以获取所有最新更新!


最新教程



与我们博客

联系我们

像Facebook上的Tutorialsmate 在Facebook上关注Tutorialsmate 在Facebook上添加Tutorialsmate 在Facebook上订阅Tutorialsmate 在Facebook上关注Tutorialsmate 在Facebook上关注Tutorialsmate
Get 同学 on Google Play
© 2020 教程伴侣。由...设计 教程伴侣