50 лучших вопросов и ответов на собеседовании Array (2025 г.)
Вот вопросы и ответы на собеседовании Array для новичков, а также для опытных кандидатов, желающих получить работу своей мечты. Массивы являются неотъемлемой частью программирования, и различные языки программирования, такие как C, C++, Python, Java и Perl, используют массивы.
1) Что вы подразумеваете под массивом?
- Массив — это набор данных одинакового типа.
- Объекты-массивы хранят несколько переменных одного типа.
- Он может содержать примитивные типы и ссылки на объекты.
- Массивы всегда фиксированы
Бесплатная загрузка в формате PDF: Массив вопросов и ответов для собеседования
2) Как создать массив?
Массив объявляется аналогично объявлению переменной, но вам необходимо добавить [] после типа. Пример: int [] intArray; Мы можем объявить массив Java как поле, статическое поле, локальную переменную или параметр, как и любую другую переменную. Массив — это коллекция переменных этого типа. Вот еще несколько примеров объявления массива Java:
String [] stringArray;
MyClass [] myClassArray;
То же самое и с другими языками программирования.
3) Преимущества и недостатки массива?
Преимущества:
- Мы можем разместить в Array другие структуры данных, такие как стеки, очереди, связанные списки, деревья, графики и т. д.
- Массивы могут сортировать несколько элементов одновременно.
- Мы можем получить доступ к элементу массива, используя индекс.
Минусы:
- Мы должны заранее объявить размер массива. Однако мы можем не знать, какой размер нам нужен во время объявления массива.
- Массив представляет собой статическую структуру. Это означает, что размер массива всегда фиксирован, поэтому мы не можем увеличивать или уменьшать выделение памяти.
4) Можем ли мы изменить размер массива во время выполнения?
Нет, мы не можем изменить размер массива. Хотя существуют аналогичные типы данных, которые позволяют изменять размер.
5) Можете ли вы объявить массив, не указывая его размер?
Нет, мы не можем объявить массив без указания размера. Если мы объявим массив без размера, он выдаст ошибку времени компиляции Пример: знаки = новый int []; //ОШИБКА КОМПИЛЯТОРА
6) Каково значение массива по умолчанию?
Любой новый массив всегда инициализируется значением по умолчанию следующим образом:
- Для byte, short, int, long – значение по умолчанию равно нулю (0).
- Для float double — значение по умолчанию равно 0.0.
- Для логического значения — значение по умолчанию — false.
- Для объекта – значение по умолчанию равно нулю.
7) Как распечатать элемент массива?
Вот код для печати элемента массива.
int schoolmarks [] = {25, 30, 50, 10, 5 }; System.out.println (Arrays.toString (schoolmarks));
Выход: [25, 30, 50, 10, 5]
8) Как сравнить два массива?
Если два массива имеют одинаковый размер и тип данных, то сравнение можно выполнить с помощью «Arrays.equal ()».
int [] num1 = { 1, 2, 3 }; int[] num2 = { 4, 5, 6 }; System.out.println (Arrays. Equals (num1, num2)); //false Int [] num3 = {1, 2, 3}; System.out.println (Arrays.equals (num1, num3)); //true
9) Как отсортировать массив?
Это возможно с использованием встроенного статического метода Arrays. Сортировать ().
Int Marks [] = {12, 5, 7, 9}; Arrays.sort(Marks); System.out.println(Arrays.toString(Marks));//[5, 7, 9, 12]
10) Можем ли мы объявить размер массива отрицательным числом?
Нет. Мы не можем объявить отрицательное целое число как размер массива. Если мы объявим, то не будет ошибки времени компиляции. Однако мы получим NegativeArraySizeException во время выполнения.
11) Когда мы получим ArrayStoreException?
Это исключение во время выполнения. Например, мы можем хранить в массиве строк только строковые элементы. Если кто-нибудь попытается вставить целочисленный элемент в этот массив строк, мы получим ArrayStoreException во время выполнения.
12) Можем ли мы добавить или удалить элемент после присвоения массива?
Нет, это невозможно.
13) В чем смысл анонимного массива? Объясните на примере?
Анонимный массив означает массив без какой-либо ссылки. Пример:-
//Creating anonymous arrays System.out.println(new int[]{11, 12, 13, 14, 15}.length); //Output : 5 System.out.println(new int[]{31, 94, 75, 64, 41}[1]); //Output : 94 }}
14) Есть ли разница между int[] a и int a[]?
Нет разницы, оба юридически заявление.
15) Существует 2 типа данных массива типа int. Один содержит 50 элементов, а другой — 30 элементов. Можем ли мы присвоить массив из 50 элементов массиву из 30 элементов?
Да, мы можем назначить, если они одного типа. Компилятор будет проверять только тип массива, а не его размер.
int[] ab = new int[30]; int[] cd = new int[50]; a = b; //Compiler checks only type, not the size
16) int a[] = new int[3]{1, 2, 3} – правильно ли объявлять массивы в Java?
Нет. Мы не должны упоминать размер массива при предоставлении элементов массива.
17) Как скопировать массив в другой массив?
Ниже в Java доступны четыре приема для копирования массива.
- Использование «цикла For»
- Использование метода «Arrays.copyOf()»
- Использование метода «System.arraycopy()»
- Использование метода «clone()»
18) Что такое «зубчатые» массивы в Java?
Зубчатые массивы — это массивы, содержащие массивы разной длины. Зубчатые массивы также известны как многомерные массивы.
19) Когда возникает исключение ArrayIndexOutOfBoundsException?
Это исключение времени выполнения. Оно возникнет, когда программа попытается получить доступ к недопустимому индексу массива. Индекс больше размера массива или отрицательный индекс.
20) Можете ли вы объяснить различные этапы объявления многомерных массивов в Java?
//2D Arrays int[][] twoArray1; int twoArray2[][]; int[] twoArray3[]; //3D Arrays int[][][] threeArray1; int threeArray2[][][]; int[] threeArray3[][]; int[][] threeArray4[]; //4D Arrays int[][][][] fourArray1; int fourArray2[][][][]; int[] fourArray3[][][]; int[][] fourArray4[][]; int[][][] fourArray5[];
21) Как найти определенный элемент в массиве?
Мы можем использовать метод Arrays.binarySearch(). Этот метод использует алгоритм двоичного поиска.
22) Если не инициализировать массив, что произойдет?
Массив будет иметь значение по умолчанию.
23) Как найти повторяющиеся элементы в массиве?
Использование метода грубой силы: В этом методе мы сравниваем каждый элемент массива с другими элементами. Если любые два элемента оказываются равными или одинаковыми, мы объявляем их дубликатами. Ниже приведен код для того же
public class DuplicatesInArray { public static void main(String[] args) { String[] strArray1 = {"abc1", "def1", "mno1", "xyz1", "pqr1", "xyz1", "def1"}; for (int i = 0; i < strArray1.length-1; i++) { for (int j = i+1; j < strArray1.length; j++) { if( (strArray1[i].equals(strArray1[j])) && (i != j) ) { System.out.println("Duplicates : "+strArray1[j]); }}}} }
Вывод: Дублирующий элемент: def1 Дублирующий элемент: xyz1
24) Можем ли мы использовать Generics с массивом?
Нет, мы не можем использовать Generic с массивом.
25) Как перебрать массив в Java?
1) Использование обычного цикла for
public class MainClass1 { public static void main(String[] args) { int[] a1 = new int[]{45, 12, 78, 34, 89, 21}; //Iterating over an array using normal for loop for (int i = 0; i < a1.length; i++) { System.out.println(a1[i]); }}}
2) Использование расширенного цикла new for
public class MainClass1 { public static void main(String[] args) { int[] a2 = new int[]{45, 12, 78, 34, 89, 21}; //Iterating over an array using extended for loop for (int i: a2){ System.out.println(i); }}}
26) Где в Java выделяется память для массивов?
В Java память для массивов всегда выделяется в куче, поскольку массивы в Java являются объектами.
27) Можете ли вы сказать мне имя класса массива в Java?
Массив — это объект. Чтобы получить имя класса, мы можем использовать метод getClass().getName() для объекта.
28) «int a[] = new int[3]{1, 2, 3}» – это законный способ определения массивов?
Нет. Мы не должны объявлять размер массива при предоставлении элементов массива.
29) Что такое двумерный массив?
Массив массива в Java. Мы можем объявить их как
int[][] p = new int[3][3]
что представляет собой матрицу 3×3.
30) Есть ли в Java трехмерные массивы?
Да, Java поддерживает N-мерный массив. Многомерный массив в Java — это не что иное, как массив массивов. Пример: двумерный массив — это массив одномерного массива.
31) Можем ли мы сделать массив нестабильным в Java?
Да, мы можем сделать массив нестабильным в Java, но мы делаем нестабильной только ту переменную, которая указывает на массив.
32) Каков будет вывод приведенного ниже кода?
int myArr[] = new int [7]; System.out.print(myArr);
Ответ: Вывод будет мусорным значением. myArr — это переменная массива, myArr указывает на массив, если это целые числа. Печать myArr выведет мусорное значение. Это не то же самое, что печать myArr[0].
33) Каков этап доступа к элементам массива в Java?
Мы можем получить доступ, используя «index». Индекс начинается с Zero(0), поэтому первый элемент хранится в нулевом месте, а последний элемент будет Array.length – 1. Пример:- Строка strArr[] = новая строка []{«A», «B», «C», «D», «E»}; strArr[0] означает «A», а strArr[2] означает «C».
34) Можете ли вы рассказать мне разницу между Array и ArrayList?
массив | ArrayList |
---|---|
Массив является статическим и имеет фиксированный размер, который нельзя изменить после объявления. | ArrayList имеет не статический, а динамический размер. По мере добавления элементов в ArrayList его емкость или размер автоматически увеличиваются. |
Он содержит как примитивные типы данных, так и объекты класса. | ArrayList не содержит примитивных типов данных, но содержит записи объектов. |
У массива нет функции Generics. | ArrayList имеет функцию Generics. |
35) Мы знаем, что массивы — это объекты, так почему бы нам не написать strArray.length()?
Массивы — это ссылки на объекты, такие как классы в Java. Мы можем использовать методы Object, такие как toString() и еще один hashCode(), против Array. Длина — это элемент данных массива, поэтому это не метод. Вот почему мы используем strArray.length.
36) Как найти недостающий элемент в массиве целых чисел от 1 до 7?
Решение этой проблемы состоит в том, чтобы вычислить сумму всех чисел в массиве и сравнить ее с ожидаемой суммой, разница будет недостающим числом.
int ar [] = new int[]{1,2,3,5,6,7};
- Получить сумму чисел
- итого = n*(n+1)/2
- Вычтите все числа из суммы и
- вы получите недостающее число.
- Согласно приведенной ниже логике sumOfNnumberss равна 7*(7+1)/2=28.
sumOfElements = 1+2+3+5+6+7=24 недостающий элемент равен = 28-24=4
int n = ar.length+1; int total = n*(n+1)/2; for(int i =0;i<ar.length;i++){ total -=ar[i];} System.out.println(total);
37) Как найти дубликат в массиве?
String str = "HI RAHUL I AM FINE RAHUL"; // String with a duplicate word. String[] words = str.split(" "); // Splitting and converting to Array . for(int i = 0; i < words.length; i++){ //iterating array inside for loop for(int j = i+1; j < words.length; j++){ //iterating same array inside another for loop if (words[i].equals(words[j])){ // Using equal method i am verifying which word is repeating . System.out.println( words[i]); // here it will print duplicate . }}}
38) Как проверить, содержит ли массив значение или нет?
Вот String[] со значениями
public static final String[] myNames = new String[] {"B","A","K","C"};
Если myNames содержит это значение, то он вернет true, в противном случае false. Вот два метода isExists() и contains(), оба метода возвращают true, если значение доступно, в противном случае false. Первый метод Он преобразует массив в ArrayList. После этого он проверит, содержит ли массив какое-либо значение, и вернет true, в противном случае false.
public static <T> boolean isExists(final T[] array, final T object) { return Arrays.asList(array).contains(object); }
Второй метод Этот метод проходит по массиву и использует метод equal() для поиска элемента. Фактически это выполняет линейный поиск по массиву в Java. Он вернет true, если массив предоставил значение.
public static <T> boolean contains(final T[] array, final T v) { for (final T e : array) { if (e == v || v != null && v.equals(e)) { return true; } } return false; } }
39) Как получить наибольшее и наименьшее число в массиве?
Ответ: Логика этой проблемы:
- Мы используем две переменные для хранения наибольшего и наименьшего числа.
- Сначала мы инициализируем наибольшую величину с помощью Integer.MIN_VALUE и
- Далее мы инициализируем наименьшее значение Integer.MAX_VALUE.
- На каждой итерации цикла for мы будем сравнивать текущее число с наибольшим и наименьшим числом и обновлять
- Если число больше наибольшего, то оно не может быть меньше наименьшего. Это означает, что нет необходимости проверять, верно ли первое условие,
- Мы будем использовать блок кода if-else, где часть else будет выполняться только в том случае, если первое условие ложно, что означает, что оно неверно.
import java.util.Arrays; public class MaximumMinimumArrayExample{ public static void largestAndSmallest(int[] numbers) { int largest = Integer.MIN_VALUE; int smallest = Integer.MAX_VALUE; for (int number : numbers) { if (number > largest) { largest = number; } else if (number < smallest) { smallest = number; } } System.out.println("Largest is : " + largest); System.out.println("Smallest is : " + smallest); } }
40) Как сделать пересечение двух отсортированных массивов?
Ответ: Логика: распечатайте элемент, если элемент присутствует или доступен в обоих массивах.
- Используйте две индексные переменные i и j, после чего задайте значения i = 0, j = 0.
- Если arr01 [i] меньше, чем arr02 [j], то увеличьте i.
- Если arr01 [i] больше, чем arr02 [j], то увеличьте j.
- Если оба одинаковы, выведите любой из них и увеличьте i и j.
public static void getIntersection(int arr01[], int arr02[], int m, int n){ int i = 0, j = 0; while (i < m && j < n){ if (arr01[i] < arr02[j]) i++; else if (arr02[j] < arr01[i]) j++; else{ System.out.print(arr02[j++]+" "); i++; } } } public static void main(String args[]){ int arr01[] = {1, 2, 4, 5, 6}; int arr02[] = {2, 3, 5, 7}; int m = arr01.length; int n = arr02.length; getIntersection(arr01, arr02, m, n); }
41) Как получить два верхних числа из массива?
Ответ: Логика:
- Мы назначим первой переменной max01 значение Integer.MIN_VALUE.
Более того, вторая переменная max02 имеет то же значение, что и max01, то есть Integer.MIN_VALUE.
- Мы будем перебирать этот массив и сравнивать каждое число с max01 и max02,
- Если текущий номер больше max1, присвойте max01 = номер и max02 = max1.
- В противном случае, если оно больше, чем max02, мы обновим max02 только текущим числом.
- В конце итерации max01 и max02 указывают на два верхних числа из данного массива.
import java.util.Arrays; public class TopTwoMaximumNumbers{ public static void main(String args[]) { topTwoNumbers(new int[]{20, 34, 21, 87, 92, Integer.MAX_VALUE}); topTwoNumbers(new int[]{0, Integer.MIN_VALUE, -2}); topTwoNumbers(new int[]{Integer.MAX_VALUE, 0, Integer.MAX_VALUE}); topTwoNumbers(new int[]{1, 1, 0}); } public static void topTwoNumbers(int[] numbers) { int max01 = Integer.MIN_VALUE; int max02 = Integer.MIN_VALUE; for (int number : numbers) { if (number > max01) { max02 = max01; max01 = number; } else if (number > max02) { max02 = number; } } System.out.println("First largest number is : " + max01); System.out.println("Second largest number is : " + max02); } }
42) Как вырезать или удалить элемент массива?
Ответ: Логика такова: мы можем удалить или вырезать элемент с помощью Apache Commons ArrayUtils на основе индекса. ArrayUtils имеет несколько перегруженных методов remove().
import java.util.Arrays; import org.apache.commons.lang.ArrayUtils; public class RemoveFromArray{ public static void main(String args[]) { //let's create an array for demonstration purpose int[] testArr = new int[] { 10, 102, 13, 14, 105}; System.out.println("Array size : " + testArr.length ); System.out.println("Find Contents : " + Arrays.toString(testArr)); //let's remove or delete an element from Array using Apache Commons ArrayUtils testArr = ArrayUtils.remove(testArr, 2); //removing element at index 2 //Size of array must be 1 less than original array after deleting an element System.out.println("Size of array after removing : " + testArr.length); System.out.println("Content of Array : "+ Arrays.toString(testArr)); } }
43) Какова логика обращения массива?
Ответ: Логика: вывести элемент в обратном порядке.
- Объявить
String Array String[] s = new String[]{"My","Leg","is","cut"};
- Повторите его, используя цикл for, чтобы получить все элементы в обратном порядке, что означает конечную точку для начальной точки.
public static void main(String[] args) {String[] s = new String[]{"My","Leg","is","cut"}; for(int i=s.length-1; i>=0; i--){ System.out.println("reverse "+s[i]);}}
44) Как найти второй по величине элемент в массиве целых чисел?
Ответ: Логика:
- Перебрать заданный массив, используя цикл for.
- (сначала, если условие arr[i] > самое большое):
- Если текущее значение массива больше наибольшего значения, то
- Переместите наибольшее значение во второеLargest и сделайте текущее значение самым большим.
- (второе, если условие arr[i] > SecondLargest )
- Если текущее значение меньше наибольшего и
больше, чем SecondLargest, тогда текущее значение становится
public static void main(String[] args) { int myArr[] = { 14, 46, 47, 86, 92, 52, 48, 36, 66, 85 }; int largest = myArr[0]; int secondLargest = myArr[0]; System.out.println("The given array is:" ); for (int i = 0; i < myArr.length; i++) { System.out.print(myArr[i]+"\t"); } for (int i = 0; i < myArr.length; i++) { if (myArr[i] > largest) { secondLargest = largest; largest = myArr[i]; } else if (myArr[i] > secondLargest) {secondLargest = myArr[i]; }} System.out.println("\nSecond largest number is:" + secondLargest); }
45) Напишите программу суммирования значений заданного массива.
Ответ: Логика:
- Объявите и присвойте переменную int, имеющую значение sum =0.
- Перебрать заданный массив, используя цикл for.
- Добавьте все элементы массива и сохраните в этой переменной сумму.
Public static void main(String[] args) { int my_array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int sum = 0; for (int i: my_array) sum += i; System.out.println("The sum is " + sum); }
46) Как отделить нули в массиве от ненулей?
Ответ: Логика:
- Инициализация счетчика в 0
- Обход inputArray слева направо
- Если inputArray[i] не равен нулю
- Присвоение inputArray[i] входномуArray[counter]
- Увеличение счетчика на 1
- Присвоение нуля оставшимся элементам
Public class SeparateZerosFromNonZeros { static void moveZerosToEnd(int inputArray[]) { int counter = 0; for (int i = 0; i < inputArray.length; i++) { if(inputArray[i] != 0) { inputArray[counter] = inputArray[i]; counter++; } } while (counter < inputArray.length) { inputArray[counter] = 0; counter++; } System.out.println(Arrays.toString(inputArray)); } public static void main(String[] args) { moveZerosToEnd(new int[] {12, 0, 7, 0, 8, 0, 3}); moveZerosToEnd(new int[] {1, -5, 0, 0, 8, 0, 1}); moveZerosToEnd(new int[] {0, 1, 0, 1, -5, 0, 4}); moveZerosToEnd(new int[] {-4, 1, 0, 0, 2, 21, 4}); } }
47) Написать программу для вставки элемента в определенную позицию массива?
Ответ: Логика:
- Вставьте элемент в третью позицию массива (индекс->3, значение->2)
- Повторите заданный массив в обратном порядке, используя цикл for.
- Теперь вставьте заданную позицию и значение после цикла for.
Public static void main(String[] args) { int[] my_array = {25, 14, 56, 15, 36, 56, 77, 18, 29, 49}; int Index_position = 2; int newValue = 5; System.out.println("Original Array : "+Arrays.toString(my_array)); for(int i=my_array.length-1; i > Index_position; i--){ my_array[i] = my_array[i-1]; }my_array[Index_position] = newValue; System.out.println("New Array: "+Arrays.toString(my_array)); }
48) Как получить индекс элемента массива?
Ответ: Логика:
- На каждом этапе он сверяет значение входного ключа со значением среднего элемента массива.
- Если ключи совпадают, он вернет позицию. В другом случае, если ключ меньше ключа среднего элемента,
- Затем он повторит цикл while. Если поиск в оставшемся массиве уменьшился до нуля, он вернет -1, что означает, что он не найден.
public static int findIndex (int[] my_array, int t) { int startPoint = 0; int endPoint = my_array.length - 1; while (startPoint <= endPoint) { int mid = (startPoint + end) / 2; if (key == my_array[mid]) { return mid; } if (key < my_array[mid]) { endPoint = mid - 1; } else { startPoint = mid + 1; } } return -1; } Public static void main(String[] args) { int[] arr = {2, 4, 6, 8, 10, 12, 14, 16}; System.out.println("Key 14's position: "findIndex(arr, 14)); int[] arr1 = {6,34,78,123,432,900}; System.out.println("Key 432's position: "+findIndex(arr1, 432)); }
49) Можно ли расширить массив после инициализации?
Ответ: Логика такова: Мы можем расширить массив после инициализации, добавив новый массив. Ниже приведен пример.
Public static void main(String[] args) { String [] names = new String[] { "A", "B", "C" }; String [] extended = new String[5]; extended [3] = "D"; extended [4] = "E"; System.arraycopy(names, 0, extended, 0, names.length); //here we are extending with new array extended[3] and extended[4]. for (String str: extended){ System.out.println(str); } }
выход A,B,C,D,E.
50) Как заполнить элемент (сразу инициализировать) в массиве?
Ответ: В этом примере выполняется заполнение (инициализация всех элементов массива за один раз) массива с помощью методов Array.fill(имя массива,значение) и Array.fill(имя массива, начальный индекс, конечный индекс, значение) класса Java Util.
import java.util.*; public class FillTest { public static void main(String args[]) { int array[] = new int[6]; Arrays.fill(array, 100); for (int i = 0, n = array.length; i < n; i++) { System.out.println(array[i]); } System.out.println(); Arrays.fill(array, 3, 6, 50); for (int i = 0, n = array.length; i< n; i++) { System.out.println(array[i]);}}}
выход
100,100,100,100,100,100 100,100,100,50,50,50
А как насчет передачи массива в качестве параметров функциям?
Разница Q14 между a[] и []a
После первого объявления типа вы не можете создать другой массив (того же типа данных).
Но вы можете после объявления второго типа, т.е.
Int []a, b, c= новый int[размер]