以下是一些常见的Java数组面试题:
1. **什么是数组?**
* 数组是一种数据结构,用于存储相同类型的元素集合,在Java中,数组是固定大小的,一旦创建,就不能改变其大小。
2. **如何在Java中声明和初始化数组?**
* 声明:`int[] arr;` 或 `int arr[];`
* 初始化:`int[] arr = new int[5];` 或 `int[] arr = {1, 2, 3, 4, 5};`
3. **Java数组有哪些基本特性?**
* 数组的大小是固定的,一旦创建,就不能改变。
* 数组中的元素都是相同的数据类型。
* 数组是有序的,可以通过索引访问每个元素。
4. **Java数组有哪些常见的操作?**
* 访问元素:`arr[index]`
* 遍历数组:使用for循环或增强型for循环
* 排序数组:使用`Arrays.sort()`方法
* 查找元素:使用`Arrays.binarySearch()`方法(仅适用于已排序的数组)
5. **如何在Java中创建多维数组?**
* 声明:`int[][] arr;`
* 初始化:`int[][] arr = new int[3][4];` 或 `int[][] arr = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};`
6. **Java中的数组和ArrayList有什么区别?**
* 数组的大小是固定的,而ArrayList的大小是可变的。
* 数组可以存储基本数据类型和对象,而ArrayList只能存储对象。
* 数组在内存中是连续的,而ArrayList在内存中可能不是连续的。
* ArrayList提供了更多的方法,如`add()`, `remove()`, `size()`等,而数组没有这些方法。
7. **如何在Java中复制数组?**
* 使用`System.arraycopy()`方法。
* 使用`Arrays.copyOf()`方法。
* 使用克隆方法(如果数组的元素是可克隆的)。
8. **如何在Java中反转数组?**
* 使用双指针方法,从数组的两端开始,交换对应的元素,直到指针相遇或交错。
* 使用`Collections.reverse()`方法(但需要先将数组转换为ArrayList)。
9. **如何在Java中查找数组中的最大值和最小值?**
* 遍历数组,比较每个元素,找到最大值和最小值。
* 使用Java 8的流(Stream)API。
10. **Java数组有哪些常见的陷阱?**
* 数组越界:访问超出数组范围的索引会导致`ArrayIndexOutOfBoundsException`。
* 空指针异常:如果数组未初始化或元素为null,访问该元素会导致`NullPointerException`。
* 数组长度不可变:一旦创建数组,其大小就不能改变。
以上是一些常见的Java数组面试题,但不限于此,在面试中,面试官可能会根据候选人的经验和技能水平来提出更深入或更复杂的问题。