Javatpoint标志
Javatpoint标志

面向新生的Java数组面试问题

在Java中,数组是最重要的数据结构。它也用于其他数据结构,如HashTable、List等。从考试和面试透视图,它是Java最重要的主题。

在本节中,我们介绍了一些基于Java Array的重要面试题。这些问题通常会被问到Java面试。如果你是新手,这部分是为你准备的。阅读完本节,您将能够毫不犹豫地回答与Array相关的问题。

1)在Java中创建哪些内存数组?

数组由JVM在动态内存上创建。Java中没有静态内存的问题,所有东西(变量、数组、对象等)都是在动态内存上创建的。


2)我们可以从另一个类调用一个类的main()方法吗?

是的!我们可以使用Classname.main()从一个类调用另一个类的main()方法。在调用main()方法时,我们应该传递一个字符串类型的数组给它。


3) Java中的数组是什么?

数组是同构数据元素的有限有序集合。它是有限的,因为它包含有限数量的元素。它是有序的,因为所有元素都以线性方式一个接一个地存储在计算机内存(堆)的连续位置中。它是同构的,因为数组的所有元素只有相同的数据类型。可以将基本类型或对象引用存储在其中。


4)数组有哪些类型?

数组一般分为两部分,如下所述:

  • 一维阵列
  • 多维阵列(2D和3D阵列)

5)是否可以声明数组大小为负?

不,不能将数组大小声明为负数。但是,如果声明负大小,则不会出现编译时错误。但我们会在运行时得到NegativeArraySizeException。


6) int array[]和int[] array有什么区别?

array[]和[]array之间没有区别。array[]和[]array都是声明数组的方法。它们之间的唯一区别是,如果我们在一行中声明多个数组,我们应该使用前缀[]。如果我们在一行中声明单个数组,我们应该使用后缀[]。例如,考虑下面的声明:


7)如何在Java中复制数组?

我们可以用两种方式创建数组的副本,第一种是手动遍历数组,第二种是使用arrayCopy()方法。使用System类的arrayCopy()方法是复制数组的最快方式,也允许我们复制数组的一部分。这两种方法是复制数组的常用方法。

复制数组的另外两种方法是使用Arrays.copyOf()方法和使用clone()方法。


8) array的默认值是什么?

当我们创建一个新数组时,它总是用默认值初始化。该数组的默认值为:

  • 如果数组类型为byte、short、int和long,则默认值为0
  • 如果数组为float和double类型,则默认值为0
  • 如果数组为布尔类型,则默认值为
  • 如果数组类型为Object,则默认值为

你对这些参差不齐的排列有什么理解?

锯齿数组是一种多维数组,其中成员数组的大小不同。例如:int array[][]=new int[3][]。该语句创建一个二维锯齿数组。


什么是匿名数组还举个例子?

没有存储在变量中的数组引用。它被用于构造其他物体。Java的Polygon类有一个将匿名数组解析为参数的构造函数。

例如:

上面的语句创建了一个三角形,它是一个匿名数组。


11)有多少种方法可以找到数组中的重复元素?

有以下五种方法可以在Java中找到重复数组。

  • 暴力破解方法:在这个方法中,我们将数组中的每个元素与其他元素进行比较。如果发现两个元素中的任何一个相等,我们认为它们是重复的。该方法的时间复杂度为0 (n)2).
  • 使用HashSet:还可以使用HashSet类查找数组中的重复元素。要查找重复的元素,可以遍历数组元素,并通过调用HashSet类的add()方法将它们插入HashSet。如果该方法返回false,则表示该元素已经存在于集合中。查找重复元素需要O(n)时间。
  • 使用HashMap:我们知道HashMap使用键值对来存储元素。当使用HashMap查找重复数组时,我们将数组的元素存储为键,并将元素的出现频率存储为值。如果任何键的值大于1,则该键是重复元素。其时空复杂度为O(n)。使用这种方法,我们还可以找到重复出现的次数。

12)可以对数组执行哪些操作?

在数组上,我们可以执行搜索、排序、遍历、删除和插入操作。


13)考虑以下陈述,并判断该声明是真的还是假的。还有,说明原因?

上述数组的声明为真。因为Java允许我们在单个语句中使用两种不同的特定于数组的语法快捷方式来初始化(将显式值放入数组的元素中)和构造(实例化数组对象本身)。第一个语句用于在一个语句中声明、创建和初始化。第二个语句做了以下四件事:

  • 声明一个名为number的int数组引用变量。
  • 创建长度为5(5个元素)的int数组。
  • 填充数组中值为12、34、90、56和65的元素。
  • 分配将新的数组对象转换为引用变量number。

14) Set可以是数组吗?

在Java中,Set是一个数组,但数组不一定是Set。因为重复在数组中是允许的,但在集合中是允许的。例如,考虑下图:

Java中的数组面试问题

有可能使数组易失性吗?

是的,我们可以在Java中创建volatile数组。但是我们只把指向数组的变量设置为volatile。如果通过替换之前发生的单个元素来更改数组,则volatile变量提供的保证将不成立。


16)如果我们声明了一个数组而没有指定数组的大小,会发生什么?

声明没有大小的数组是不可能的。当声明数组而不指定数组大小时,会抛出编译时错误。例如,height=new int[]。


17)我们可以声明数组大小为负数吗?

不,数组大小不能为负。如果声明一个负大小的数组,它会在运行时抛出NegativeArraySizeException。


18)当ArrayIndexOutOfBoundsException发生?

当程序试图访问数组的索引时,会发生ArrayIndexOutOfBoundsException异常。当索引大于数组的大小或索引为负值时,也会出现该异常。


19) Arrays类的哪个方法可以用来搜索数组中的特定元素?

Arrays类的binarySearch()方法用于搜索数组中的特定元素。该方法采用二分搜索算法。在进行此调用之前,数组必须处于自然顺序。这是在排序数组中查找元素的最简单和最有效的方法。


20)如何检索数组的类名?

数组是一个对象。我们可以从对象中检索类名。我们调用getClass()和getName()方法来检索数组的类名。getClass()是Object类的方法,它返回对象的运行时类。而getName()是Class类的方法,它返回类/数组类的名称。


21)数组和数组列表的区别是什么?

数组:数组是静态的。它的尺寸是固定的。一旦声明,就不能更改它的大小。它既包含基本数据类型,也包含类的对象。数组没有通用特性。

数组列表:ArrayList的大小是动态的。当我们向其中添加元素时,它的大小或容量会自动增长。它只包含对象项。它有一个通用的特性。


22)如何检查数组是否包含值?

Java Arrays类提供了两个方法isExists()和contains()来检查数组是否有元素。如果数组中有元素,这两个方法都返回true,否则返回false。


23)一个数组的平衡指数是什么?

如果数组的下标之和等于上标之和,则称为数组的平衡标。例如,考虑以下数组:[- 7,1,5,2,- 4,3,0],其中:

[0] = 7, [1] = 1, [2] = 5, [3] = 2, [4] = 4, [5] = 3, [6] = 0

我们来求平衡指数。根据定义:

下标之和= a[0]+a[1]+a[2] = -7+1+5 = -1

高指数之和= a[4]+a[5]+a[6] = -4+3+0 = -1

我们观察到下标的和等于高标的和。因此,平衡指数为3。

在上面的数组中,6也是一个均衡索引,因为一个[0]到一个[5]的和为0,索引a[6]的值为0。


24)什么是数组中的左旋?

左旋是一种可以在数组上执行的操作。在这个操作中,数组的每个元素向左移动1个单位。因此,最低索引的值移动到最高索引。我们可以对数组执行任意次数的旋转。它也被称为圆形阵列。让我们对数组[7,8,9,2,5,6]执行两次左旋。

旋转一次后,我们得到数组[8,9,2,5,6,7],第二次循环之后,我们得到[9,2,5,6,8]


阵列的优点和缺点是什么?

阵列的优点

  • 可以在一个变量下存储相同类型的多个元素。
  • 我们可以在数组的帮助下实现其他数据结构,如堆栈、队列、树等。
  • 我们可以在运行时使用索引获取数据元素。

阵列的缺点

  • 在使用数组之前,必须声明它的大小。
  • 它是一个静态结构,因此我们不能增加或减少内存分配。
  • 插入和删除操作是困难的,因为元素存储在连续的内存位置。这也增加了成本。
  • 分配超过所需的内存是对内存的浪费。





您可能还会喜欢:


学习最新教程


准备


热门的技术


b .技术/马华





Baidu
map