50-те най-добри въпроса и отговора за интервюта (2025 г.)
Ето въпроси и отговори за интервю за Array за новопостъпили, както и за опитни кандидати, за да получат мечтаната работа. Масивите са неразделна част от програмирането и различни езици за кодиране като C, C++, Python, Java и Perl използват масиви.
1) Какво имате предвид под масив?
- Масивът е набор от подобен тип данни.
- Обектите на масивите съхраняват множество променливи от един и същи тип.
- Може да съдържа примитивни типове и препратки към обекти.
- Масивите винаги са фиксирани
Безплатно изтегляне на PDF: Въпроси и отговори за масив от интервюта
2) Как да създадете масив?
Масивът се декларира подобно на това как се декларира променлива, но трябва да добавите [] след типа. Пример: int[] intArray; Можем да декларираме масив в Java като поле, статично поле, локална променлива или параметър, както всяка друга променлива. Масивът е колекция от променливи от този тип. Ето още няколко примера за деклариране на масиви в Java:
String [] stringArray;
MyClass [] myClassArray;
Същото важи и за други езици за програмиране.
3) Предимства и недостатъци на Array?
Предимства:
- Можем да поставим други структури от данни като стекове, опашки, свързани списъци, дървета, графики и т.н. в Array.
- Масивите могат да сортират няколко елемента наведнъж.
- Можем да осъществим достъп до елемент от Array чрез използване на индекс.
Недостатъци:
- Трябва да декларираме размера на масива предварително. Възможно е обаче да не знаем какъв размер ни е необходим по време на декларирането на масива.
- Масивът е със статична структура. Това означава, че размерът на масива винаги е фиксиран, така че не можем да увеличим или намалим разпределението на паметта.
4) Можем ли да променим размера на масив по време на изпълнение?
Не, не можем да променим размера на масива. Въпреки че има налични подобни типове данни, които позволяват промяна на размера.

5) Можете ли да декларирате масив, без да зададете размера на масив?
Не, не можем да декларираме масив без да му зададем размер. Ако декларираме масив без размер, ще се получи грешка по време на компилация. Пример: марки = ново int []; //ГРЕШКА НА КОМПИЛАТОРА
6) Каква е стойността по подразбиране на Array?
Всеки нов масив винаги се инициализира със стойност по подразбиране, както следва
- За byte, short, int, long – стойността по подразбиране е нула (0).
- За float, double – стойността по подразбиране е 0.0.
- За Boolean – стойността по подразбиране е false.
- За обект – стойността по подразбиране е нула.
7) Как да отпечатам елемент от Array?
Ето код за отпечатване на елемент от масива.
int schoolmarks [] = {25, 30, 50, 10, 5 }; System.out.println (Arrays.toString (schoolmarks));
Изходът е: [25, 30, 50, 10, 5]
8) Как да сравним два масива?
Ако 2 масива са с еднакъв размер и тип данни, сравнението може да се направи с помощта на „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) Как да сортирам масив?
Възможно е да се използва изграденият статичен метод, който е масиви. сортиране ().
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 за копиране на масив.
- Използване на „цикъл за“
- Използване на метода „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 не е нищо друго освен масив от масив. Пример: 2-измерен масив е масив от 1-измерен масив.
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. Пример:- String strArr[] = new String []{“A”, “B”, “C”, “D”, “E”}; strArr[0] означава “A” и strArr[2] означава “C”.
34) Можете ли да ми кажете разликите между Array и ArrayList?
Array | ArrayList |
---|---|
Масивът е статичен с фиксиран размер, който не може да бъде променен след отлагане. | ArrayList не е статичен, а динамичен по размер. Тъй като елементите се добавят към ArrayList, неговият капацитет или размер нараства автоматично. |
Той съдържа както примитивни типове данни, така и обекти от клас. | ArrayList не съдържа примитивните типове данни, но съдържа обектни записи. |
Масивът няма функция Generics. | ArrayList има функция за генерични приложения (Generics). |
35) Знаем, че масивите са обекти, така че защо не можем да напишем strArray.length()?
Масивите са препратки към обекти като класове в Java. Можем да използваме методите на Object като toString () и още един hashCode () срещу Array. Length е елемент от данни на масив и следователно не е метод. Ето защо използваме 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, където друга част ще се изпълни само ако първото условие е невярно, означава невярно.
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] > най-голям):
- Ако текущата стойност на масива е по-голяма от най-голямата стойност, тогава
- Преместете най-голямата стойност на secondLargest и направете текущата стойност като най-голяма
- (второ условие 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] на inputArray[брояч]
- Увеличаване на брояча с 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, стойност->5)
- Повторете дадения масив в обратен ред, като използвате 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[размер]