Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java面试基本问题

Java面试基本问题

作者头像
Java架构师必看
发布于 2020-10-15 02:31:44
发布于 2020-10-15 02:31:44
1.1K00
代码可运行
举报
文章被收录于专栏:Java架构师必看Java架构师必看
运行总次数:0
代码可运行

强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码

Q1。解释JDK,JRE和JVM?

JDK

JRE

JVM

Java开发工具包。

Java运行时环境。

Java虚拟机。

它是编译,记录和打包Java程序所必需的工具。

JRE是指可以在其中执行Java字节码的运行时环境。

它是一台抽象机。该规范提供了可以在其中执行Java字节码的运行时环境。

它包含JRE +开发工具。

它是实际存在的JVM的实现。

JVM遵循三种表示法:规范,实现和 运行时实例。

Q2。在Java中解释public static void main(String args [])。

Java中的main()是任何Java程序的入口点。它总是写为public static void main(String [] args)

  • public:public是访问修饰符,用于指定谁可以访问此方法。Public表示任何类都可以访问此方法。
  • static:它是java中的关键字,标识它是基于类的。main()在Java中被设为静态,因此无需创建Class的实例即可对其进行访问。如果main不是静态的,那么编译器将抛出错误,因为JVM在创建任何对象之前调用main(),并且只能通过该类直接调用静态方法。
  • void:这是方法的返回类型。Void定义了不会返回任何值的方法。
  • main:这是JVM搜索的方法的名称,它是仅具有特定签名的应用程序的起点。这是主要执行发生的方法。
  • String args []:这是传递给main方法的参数。

Q3。为什么Java是平台独立的?

Java之所以被称为平台无关的,是因为Java的字节码可以在任何系统上运行,而不管其底层操作系统什么。

Q4。为什么Java不是100%面向对象的?

Java不是100%面向对象的,因为它使用了不是对象的八种原始数据类型,例如布尔值,字节,字符,整数,浮点数,双精度型,长型,短型。

Q5。Java中的包装器类是什么?

包装器类将Java原语转换为引用类型(对象)。每个原始数据类型都有一个专用于它的类。这些称为包装器类,因为它们将原始数据类型“包装”到该类的对象中。请参考下图,该图显示了不同的原始类型,包装器类和构造函数参数。

Q6。Java中的构造函数是什么?

在Java中,构造函数是指用于初始化对象的代码块。它必须与该类具有相同的名称。而且,它没有返回类型,并且在创建对象时会自动调用它。

有两种类型的构造函数:

  1. 默认构造函数:在Java中,默认构造函数是不接受任何输入的构造函数。换句话说,默认构造函数是无参数构造函数,如果用户没有定义其他构造函数,则默认情况下将创建该构造函数。其主要目的是用默认值初始化实例变量。而且,它主要用于对象创建。
  2. 参数化构造函数: Java中的参数化构造函数是能够使用提供的值初始化实例变量的构造函数。换句话说,采用参数的构造函数称为参数化构造函数。

Q7。Java中的单例类是什么?如何使单例类成为单例?

Singleton类是在一个给定的时间在一个JVM中只能创建一个实例的类。可以通过将构造函数设为私有来使类成为单例。

Q8。Java中的数组列表和向量有什么区别?

数组列表

向量

阵列列表未同步。

向量已同步。

数组列表不同步,因此速度很快。

向量很慢,因为它是线程安全的。

如果将元素插入“数组列表”,则它将其数组大小增加50%。

向量默认为其数组大小加倍。

数组列表未定义增量大小。

向量定义增量大小。

数组列表只能使用Iterator遍历数组列表。

向量可以使用Enumeration和Iterator进行遍历。

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

Equals()方法在Java的Object类中定义,用于检查由业务逻辑定义的两个对象的相等性。

Java中的“ ==”或相等运算符是Java编程语言提供的二进制运算符,用于比较基元和对象。public boolean equals(Object o)是Object类提供的方法。默认实现使用==运算符比较两个对象。例如:方法可以像String类一样被覆盖。equals()方法用于比较两个对象的值。

Q10。Java中的堆和堆栈内存有何区别?

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

特征

叠放

记忆

堆栈存储器仅由一个执行线程使用。

堆内存由应用程序的所有部分使用。

访问

堆栈内存不能被其他线程访问。

堆中存储的对象可全局访问。

内存管理

遵循LIFO方式释放内存。

内存管理基于与每个对象关联的生成。

生命周期

存在,直到线程执行结束。

堆内存从应用程序执行的开始一直到结束。

用法

堆栈内存仅包含堆空间中对象的局部原语和引用变量。

每当创建对象时,它总是存储在堆空间中。

Q11。 什么是Java包?列出软件包的各种优点。

Java中的程序包是捆绑在一起的相关类和接口的集合。通过使用软件包,开发人员可以轻松地将代码模块化并优化其重用。而且,包中的代码可以由其他类导入并重新使用。下面我列出了它的一些优点:

  • 软件包有助于避免名称冲突
  • 它们提供了更容易的代码访问控制
  • 包还可以包含隐藏类,这些隐藏类对外部类不可见,仅在包内使用
  • 创建适当的层次结构,使查找相关类更加容易  

Q12。为什么在Java中不使用指针?

Java不使用指针,因为它们不安全并且会增加程序的复杂性。由于Java以其简单的代码而闻名,因此添加指针的概念将是矛盾的。此外,由于JVM负责隐式内存分配,因此,为了避免用户直接访问内存,在Java中不建议使用指针。

Q13。 Java中的JIT编译器是什么?

JIT代表Java中的即时编译器。它是一个程序,有助于将Java字节码转换为直接发送到处理器的指令。默认情况下,JIT编译器在Java中启用,并且在调用Java方法时被激活。然后,JIT编译器将被调用方法的字节码编译为本地机器代码,“及时”编译以执行。编译完该方法后,JVM会直接调用该方法的已编译代码,而不是对其进行解释。这就是为什么它经常在运行时负责Java应用程序的性能优化的原因。

Q14。Java中的访问修饰符是什么?

在Java中,访问修饰符是特殊的关键字,用于限制对另一个类中的类,构造函数,数据成员和方法的访问。Java支持四种类型的访问修饰符:

  1. 默认
  2. 私人的
  3. 受保护的
  4. 公开的

修饰符

默认

私人的

受保护的

公开的

同班

相同的包子类

没有

相同包装的非子类

没有

不同的包子类

没有

没有

不同的包非子类

没有

没有

没有

Q15。定义一个Java类。

Java中的类是包含所有数据的蓝图。一个类包含用于描述对象行为的字段(变量)和方法。让我们看一看一个类的语法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Abc {
            member variables // class body methods
}

Q16。Java中的对象是什么,如何创建?

对象是具有状态和行为的现实世界实体。一个对象具有三个特征:

  1. State
  2. Behavior
  3. Identity

使用'new'关键字创建对象。例如:

ClassName obj = new ClassName();

Q17。什么是面向对象编程?

面向对象的编程或通常称为OOP的编程模型或方法是围绕对象而不是逻辑和函数来组织程序。换句话说,OOP主要集中在需要操作的对象上,而不是逻辑上。这种方法对于大型和复杂代码的程序是理想的,并且需要主动更新或维护。

Q18。Java中OOP的主要概念是什么?

面向对象编程或OOP是一种与以下概念相关的编程样式:

  1. 继承:继承是一个类在其中获取另一类的属性的过程。
  2. 封装: Java中的封装是一种将数据和代码打包为单个单元的机制。
  3. 抽象:抽象是向用户隐藏实现细节并仅向用户提供功能的方法。
  4. 多态性:多态性是变量,函数或对象采取多种形式的能力。  

Q19。局部变量和实例变量有什么区别?

在Java中, 局部变量通常在方法,构造函数或块内使用 ,并且仅具有局部作用域。因此,该变量只能在块的范围内使用。拥有局部变量的最大好处是该类中的其他方法甚至都不知道该变量。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if(x > 100){
        String test = "Edureka";
}

而Java中的 实例变量是绑定到其对象本身的变量。这些变量在内声明,但在方法外声明 。该类的每个对象都将在使用它时创建它自己的变量副本。因此,对该变量所做的任何更改都不会反映在该类的任何其他实例中,而只会绑定到该特定实例。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Test{
        public String EmpName;
        public int empAge;
}

Q20。区分Java中的构造函数和方法?

方法

构造函数

1.用于表示对象的行为

1.用于初始化对象的状态

2.必须具有返回类型

2.没有任何退货类型

3.需要显式调用

3.隐式调用

4.编译器未提供默认方法

4.如果该类没有默认构造函数,则由编译器提供

5.方法名称可以与类名称相同或不相同

5.构造函数名称必须始终与类名称相同

Q21。Java中的final关键字是什么?

final是Java中的一个特殊关键字,用作非访问修饰符。最终变量可以在不同的上下文中使用,例如:

  • 最终变量

当final关键字与变量一起使用时,其值一旦分配就无法更改。如果没有值分配给最终变量,则仅使用类构造函数可以将值分配给它。

  • 最终方法

当方法声明为final时,继承类不能覆盖该方法。

  • 最终类

在Java中将一个类声明为final时,任何子类类都不能对其进行扩展,但可以扩展其他类。

Q22。break和continue语句有什么区别?

打破

继续

1.可以在switch和loop(for,while,do While)语句中使用

1.只能与循环语句一起使用

2.它会使switch或loop语句在执行时终止

2.它不会终止循环,但会导致循环跳至下一个迭代

3.终止最里面的封闭回路或立即切换

3.在嵌套有开关的循环内继续执行将导致执行下一个循环迭代

中断示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for (int i = 0;i < 5;i++){
    if (i == 3){
        break;
    }
        System.out.println(i);
}

示例继续:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for(int i = 0;i < 5;i++){
    if(i == 2){
            continue;
    }
    System.out.println(i);
}

Q23。什么是Java中的无限循环?举例说明。

无限循环是Java中的一个指令序列,当不满足功能退出要求时,它会无限循环。这种类型的循环可能是编程错误的结果,也可能是基于应用程序行为的故意行为。一旦应用程序退出,无限循环将自动终止。

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class InfiniteForLoopDemo{
  public static void main(String[] arg) {
    for(;;)
    System.out.println("Welcome to Edureka!");
    // To terminate this program press ctrl + c in the console.
  }
}

Q24。Java中的this()和super()有什么区别?

在Java中,super()和this()都是用于调用构造函数的特殊关键字。

this()

super()

1. this()代表一个类的当前实例

1. super()表示父/基类的当前实例

2.用于调用同一类的默认构造函数

2.用于调用父/基类的默认构造函数

3.用于访问当前类的方法

3.用于访问基类的方法

4.用于指向当前的类实例

4.用于指向超类实例

5.必须是块的第一行

5.必须是块的第一行

Q25。什么是Java字符串池?

Java字符串池是指存储在堆内存中的字符串的集合。在这种情况下,无论何时创建新对象,字符串池都会首先检查该对象是否已存在于池中。如果存在,则将相同的引用返回到变量,否则将在字符串池中创建新对象,并将返回相应的引用。

Q26。区分Java中的静态方法和非静态方法。

静态方法

非静态方法

1. 方法名称之前必须使用static关键字

1.无需在方法名称前使用s tatic关键字

2.使用类(className.methodName)进行调用

2.可以像任何常规方法一样调用

3.他们不能访问任何非静态实例变量或方法

3.它可以访问任何静态方法和任何静态变量,而无需创建类的实例

Q27。什么是Java中的构造函数链接?

在Java中,构造函数链接是相对于当前对象从另一个构造函数调用一个构造函数的过程。构造器链接只有通过继承才能实现,在传统中,子类构造器负责首先调用超类的构造器。构造函数链中可以有任意多个类。构造器链接可以通过两种方式实现:

  1. 在同一类中使用this()
  2. 从基类使用super()

Q28。String,StringBuilder和StringBuffer之间的区别。

因子

StringBuilder

字符串缓冲区

储藏区域

常量字符串池

堆面积

堆面积

变异性

一成不变的

可变的

可变的

线程安全

没有

性能

快速

更高效

效率较低

Q29。Java中的类加载器是什么?

Java类加载器是JVM(Java虚拟机)是负责加载类文件的一个子集。每当执行Java程序时,类加载器就会首先加载它。Java提供了三个内置的类加载器:

  1. 引导类加载器
  2. 扩展ClassLoader
  3. 系统/应用程序类加载器

Q30。为什么Java字符串本质上是不可变的?

在Java中,字符串对象本质上是不可变的,这仅意味着一旦创建了String对象,就无法修改其状态。每当您尝试更新该对象的值而不是更新该特定对象的值时,Java都会创建一个新的字符串对象。Java String对象是不可变的,因为通常将String对象缓存在String池中。由于字符串文字通常在多个客户端之间共享,因此来自一个客户端的操作可能会影响其余客户端。它增强了应用程序的安全性,缓存,同步和性能。

Q31。数组和数组列表有什么区别?

数组

数组列表

不能包含其他数据类型的值

可以包含不同数据类型的值。

尺寸必须在申报时定义

大小可以动态更改

需要指定索引才能添加数据

无需指定索引

数组未参数化类型

数组列表是类型

数组可以包含原始数据类型以及对象

数组列表只能包含对象,不允许使用原始数据类型

Q32。Java中的Map是什么?

在Java中,Map是Util程序包的接口,它将唯一键映射到值。Map接口不是主要Collection接口的子集,因此,其行为与其他Collection类型几乎没有什么不同。以下是Map界面的一些特征:

  1. 地图不包含重复的键。
  2. 每个键最多可以映射一个值。

Q33。Java中的集合类是什么?列出其方法和接口。

在Java中,集合是一个框架,用作存储和操作一组对象的体系结构。使用集合可以执行各种任务,例如搜索,排序,插入,操作,删除等。Java集合框架包括以下内容:

  • 介面
  • 班级
  • 方法

下图显示了Java集合的完整层次结构。

如果您面临这些Java面试问题的任何挑战,请在下面的部分中评论您的问题。

Java面试基本问题(1)

本文由 Java架构师必看 作者:system_mush 发表,其版权均为 Java架构师必看 所有,文章内容系作者个人观点,不代表 Java架构师必看 对观点赞同或支持。如需转载,请注明文章来源。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
2020最全Java面试题--基础篇
Java Virtual Machine(JVM)是一个抽象的计算机,能够执行Java字节码。能针对不同的软件和硬件提供不同的JVM。因此JVM是平台独立的,JVM在平台上负责执行指令、字节码加载、检查和执行,同时还要管理数据、内存和寄存器。
宇宙之一粟
2020/10/26
5890
2023最新java面试题库
JVM(Java Virtual Machine,Java 虚拟机)是 Java 程序的运行环境,它在计算机中负责将 Java 代码转换成计算机可执行的指令,实现了 Java 代码跨平台的特性。JVM 主要由类加载器、Java 核心类库、字节码校验器、解释器、即时编译器等多个组件构成。
jack.yang
2025/04/05
850
JAVA面试题全集(上)
答:面向对象的特征主要有以下几个方面: - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。 - 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的《Java与模式》或《设计模式精解》中关于桥梁模式的部分)。 - 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事情)。 - 多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释为:当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但一切对A系统来说都是透明的(就像电动剃须刀是A系统,它的供电系统是B系统,B系统可以使用电池供电或者用交流电,甚至还有可能是太阳能,A系统只会通过B类对象调用供电的方法,但并不知道供电系统的底层实现是什么,究竟通过何种方式获得了动力)。方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。运行时的多态是面向对象最精髓的东西,要实现多态需要做两件事:1). 方法重写(子类继承父类并重写父类中已有的或抽象的方法);2). 对象造型(用父类型引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)。
吾爱小白
2020/07/09
5260
31道Java核心面试题,一次性打包送给你
Java 11 是继 Java 8 之后的第二个商用版本,如果你下载的是 Oracle JDK,则需要进行付费;如果想继续使用免费版本,需要下载 Open JDK。
沉默王二
2020/07/07
7570
31道Java核心面试题,一次性打包送给你
【Java面试总结】Java基础(上篇)
Java虚拟机(JVM)是运行Java字节码的虚拟机。JVM 有针对不同系统的特定实现(windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。
Rochester
2020/09/07
5610
Java学习的知识笔记
世间万物皆对象
2024/03/20
950
2023年最新java面试题及答案
面向对象(Object-Oriented,简称OO)是一种软件开发的思想和方法,它将现实世界的事物抽象成对象,通过对象的属性和方法来描述其特征和行为,并将对象作为程序的基本单元,通过对象之间的交互和协作来完成程序的功能。 面向对象与面向过程的区别在于,面向对象是以对象为中心,将现实世界抽象成对象,强调数据和行为的封装、继承和多态等特性,使程序设计更加灵活、可维护和可扩展;而面向过程则是以任务为中心,强调算法和步骤的设计和实现,通过函数或子程序的调用来完成程序的功能,使程序设计更加简单、直接。 具体来说,有
jack.yang
2025/04/05
740
2020年最新版Java面试题大全(文末附参考答案)
6、NoClassDefFoundError 和 ClassNotFoundException 区别?
乔戈里
2020/06/03
4360
Java面试题及答案20232024
面向对象(Object-Oriented,简称OO)是一种软件开发的思想和方法,它将现实世界的事物抽象成对象,通过对象的属性和方法来描述其特征和行为,并将对象作为程序的基本单元,通过对象之间的交互和协作来完成程序的功能。 面向对象与面向过程的区别在于,面向对象是以对象为中心,将现实世界的事物抽象成对象,强调数据和行为的封装、继承和多态等特性,使程序设计更加灵活、可维护和可扩展;而面向过程则是以任务为中心,强调算法和步骤的设计和实现,通过函数或子程序的调用来完成程序的功能,使程序设计更加简单、直接。 具体来说,有
jack.yang
2025/04/05
1260
一文解决JVM常见面试题,轻松拿offer
主要验证字节流是否符合Class文件格式规范,并且能被当前的虚拟机加载处理。例如:主,次版本号是否在当前虚拟机处理的范围之内。常量池中是否有不被支持的常量类型。指向常量的中的索引值是否存在不存在的常量或不符合类型的常量。
淇妙小屋
2022/03/31
4040
一文解决JVM常见面试题,轻松拿offer
专题面经一(Java基础)
扩容机制:因为数组长度固定,超出长度存数据时需要新建数组,然后将老数组的数据拷贝到新数组,如果不是尾部插入数据还会 涉及到元素的移动(往后复制一份,插入新元素),使用尾插法并指定初始容量可以极大提升性能、甚至超过linkedList(需要创建大量的node对象)
后端码匠
2021/08/20
3640
Java技术300+面试题
一年一度的面试高峰期又来了,技术学习群的很多朋友问我有没有关于Java基础面试题,网上各种面试题没有分类很混乱,无法系统性参考学习。
用户9843318
2022/06/20
8370
Java技术300+面试题
Java反射原理
Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。反射被视为动态语言的关键。
@阿诚
2020/09/01
6.7K0
01-面试必会-JAVA基础篇
被 final 修饰不可变的是变量的引用,而不是引用指向的内容, 引用指向的内容是可以改变的
捞月亮的小北
2023/12/01
1740
01-面试必会-JAVA基础篇
【Java 类】002-类、属性、方法、代码块
在面向对象编程中,类(Class)是一种用户定义的数据类型,用于描述对象的属性和方法。它是面向对象编程的基本概念之一,可以看做是一种模板或蓝图,用于创建对象。
訾博ZiBo
2025/01/06
1090
java反射原理
  简单来说,反射可以帮助我们在动态运行的时候,对于任意一个类,可以获取其所有的方法(包括public、protected、private和默认状态的),所有的变量(包括public、protected、private和默认状态的)。
Java阿呆
2020/11/04
5900
java反射原理
java面试常见知识点
JDK(Java Development Kit)是Java开发工具包,是整个JAVA的核心,包括了Java运行环境JRE(Java Runtime Envirnment)、一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。
BUG弄潮儿
2020/06/12
5330
Java面试题(1)
这里我先把我自己的找的Java基础给你们(很感谢骆昊老师整理的,大家可以搜索这个老师csdn)。
吾爱小白
2020/07/08
3250
记录(三)
byte, short, int, long, float, double, char, boolean
Li_XiaoJin
2022/06/10
4240
记录(三)
Java ”框架 = 注解 + 反射 + 设计模式“ 之 反射详解
Reflection (反射)是被视为 **动态语言的关键** ,反射机制允许程序在执行期借助 **Reflection API** 取得任何类的内部信息,并能直接操作任意对象内部属性以及方法。
RainbowSea
2023/02/23
6830
相关推荐
2020最全Java面试题--基础篇
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验