アレイのインタビューに関する質問と回答トップ 50 (2025)
1) 配列とは何を意味しますか?
- 配列は、同様のデータ型のセットです。
- 配列オブジェクトには、同じ型の複数の変数が格納されます。
- プリミティブ型とオブジェクト参照を保持できます。
- 配列は常に固定です
無料 PDF ダウンロード: Array インタビューの質問と回答
2) 配列を作成するにはどうすればよいですか?
配列は変数の宣言と同じように宣言されますが、型の後に [] を追加する必要があります。 例: int [] intArray; 他の変数と同様に、Java 配列をフィールド、静的フィールド、ローカル変数、またはパラメーターとして宣言できます。 配列は、その型の変数のコレクションです。 Java 配列宣言の例をさらにいくつか示します。String [] stringArray;
MyClass [] myClassArray;他のプログラミング言語でも同様です。
3) Array の長所と短所は?
Advantages:- スタック、キュー、リンク リスト、ツリー、グラフなどの他のデータ構造を Array に配置できます。
- 配列では、複数の要素を一度に並べ替えることができます。
- インデックスを使用して配列の要素にアクセスできます。
- 配列のサイズを事前に宣言する必要があります。 ただし、配列宣言時点ではどのくらいのサイズが必要かわからない場合があります。
- 配列は静的構造です。 つまり、配列サイズは常に固定されているため、メモリ割り当てを増減することはできません。
4) 実行時に配列のサイズを変更できますか?
いいえ、配列のサイズを変更することはできません。 ただし、サイズを変更できる同様のデータ型が利用可能です。5) 配列のサイズを割り当てずに配列を宣言できますか?
いいえ、サイズを割り当てずに配列を宣言することはできません。 サイズを指定せずに配列を宣言すると、コンパイル時にエラーが発生します。 例: マーク = 新しい int []; //コンパイラエラー6) 配列のデフォルト値は何ですか?
新しい配列は常に次のようにデフォルト値で初期化されます。- byte、short、int、long の場合、デフォルト値はゼロ (0) です。
- float、double の場合、デフォルト値は 0.0 です。
- ブール値の場合 – デフォルト値は false です。
- オブジェクトの場合 – デフォルト値は null です。
7) 配列の要素を出力するにはどうすればよいですか?
配列の要素を出力するコードは次のとおりです。int schoolmarks [] = {25, 30, 50, 10, 5 }; System.out.println (Arrays.toString (schoolmarks));出力は次のとおりです。 [25、30、50、10、5]
8) XNUMX つの配列を比較するにはどうすればよいですか?
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) 配列をソートするにはどうすればよいですか?
構築された静的メソッドである Array を使用すると可能です。 選別 ()。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) 配列のデータ型は int 型の 2 つがあります。 50 つは 30 個の要素を含み、もう 50 つは 30 個の要素を含みます。 XNUMX 要素の配列を XNUMX 要素の配列に割り当てることはできますか?
はい、同じタイプであれば割り当てることができます。 コンパイラは配列のサイズではなく型のみをチェックします。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) 配列を別の配列にコピーするにはどうすればよいですか?
以下の XNUMX つのトリックは、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) 配列内の重複要素を見つけるにはどうすればよいですか?
ブルートフォース手法を使用する: このメソッドでは、配列の各要素を他の要素と比較します。 XNUMX つの要素が等しいか同じであることが判明した場合、それらは重複として宣言されます。 同じコードを以下で見つけてください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) 配列でジェネリックを使用できますか?
いいえ、配列で 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 では配列がオブジェクトであるため、配列のメモリは常にヒープ上に割り当てられます。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 には 3 次元配列がありますか?
はい、Java は N 次元配列をサポートしています。 Java の多次元配列は配列の配列にすぎません。例: 2 次元配列は 1 次元配列の配列です。31) Java で配列を揮発性にすることはできますか?
はい、Java では配列を volatile にすることができますが、配列を指す変数のみを volatile にします。32) 以下のコードの出力は何になりますか?
int myArr[] = new int [7]; System.out.print(myArr);回答: 出力はガベージ値になります。 myArr は配列変数であり、整数の場合、myArr は配列を指します。 myArr を印刷すると、ガベージ値が印刷されます。 これは、myArr[0] を出力するのと同じではありません。
33) Java で配列の要素にアクセスする手順は何ですか?
「インデックス」を使用してアクセスできます。 インデックスは Zero(0) から始まるため、最初の要素は位置 1 に格納され、最後の要素は Array.length – XNUMX になります。 例:- String strArr[] = new String []{“A”, “B”, “C”, “D”, “E”}; strArr[0] は「A」を意味し、strArr[2] は「C」を意味します。34) Array と ArrayList の違いを教えてください。
配列 | 配列リスト |
配列は固定サイズの静的であり、一度宣言されると変更することはできません。 | ArrayList のサイズは静的ではなく動的です。 ArrayList に要素が追加されると、その容量またはサイズが自動的に増加します。 |
これには、プリミティブ データ型とクラスのオブジェクトの両方が含まれます。 | ArrayList にはプリミティブ データ型は含まれませんが、オブジェクト エントリが含まれます。 |
配列にはジェネリック機能がありません。 | ArayList にはジェネリック機能があります。 |
35) 配列がオブジェクトであることはわかっているのに、なぜ strArray.length() を書けないのでしょうか?
配列は、Java のクラスのようなオブジェクト参照です。 toString () などの Object のメソッドと、Array に対して hashCode () のメソッドを使用できます。 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 となります。
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() という XNUMX つのメソッドがあります。どちらのメソッドも、値が利用可能な場合は true を返し、それ以外の場合は false を返します。 第1の方法 配列を ArrayList に変換しています。 その後、配列に値が含まれているかどうかをテストし、それ以外の場合は true を返します。
public static <T> boolean isExists(final T[] array, final T object) { return Arrays.asList(array).contains(object); }第2の方法 このメソッドは配列をループし、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) 配列内の最大値と最小値を取得するにはどうすればよいですか?
回答: この問題の論理:- XNUMX つの変数を使用して最大値と最小値を保存します。
- まず、最大値を Integer.MIN_VALUE で初期化し、
- 次に最小値を Integer.MAX_VALUE で初期化します。
- for ループの各反復で、現在の数値を最大および最小の数値と比較し、更新します。
- 数値が最大値よりも大きい場合、最小値よりも小さくすることはできません。 つまり、最初の条件が true かどうかを確認する必要はありません。
- if-else コード ブロックを使用します。ここで、else 部分は、最初の条件が false であることを意味する場合にのみ実行されます。
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) XNUMX つのソートされた配列の交差を行うにはどうすればよいですか?
回答: ロジック: 要素が両方の配列に存在するか使用可能な場合、その要素を出力します。- 0 つのインデックス変数 i と j を使用し、その後の初期値 i = 0、j = XNUMX
- 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) 配列から上位 XNUMX つの数値を取得するにはどうすればよいですか?
回答: ロジックは次のとおりです。- 最初の変数 max01 に Integer.MIN_VALUE を代入します。
- この配列を繰り返し、各数値を max01 および max02 と比較します。
- 現在の数値が max1 より大きい場合は、max01 = 数値、max02 = max1 を割り当てます。
- それ以外の場合、max02 よりも大きいだけの場合は、max02 のみを現在の数値で更新します。
- 反復の終わりに、max01 と max02 は指定された配列の上位 XNUMX つの数値を指します。
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) 整数の配列で XNUMX 番目に大きい要素をどのように見つけますか?
回答: ロジックは次のとおりです。- for ループを使用して、指定された配列を繰り返します。
- (最初の条件 arr[i] > 最大の場合):
- 現在の配列値が最大値より大きい場合、
- 最大値を SecondLargest に移動し、現在の値を最大値にします
- (XNUMX 番目の if 条件 arr[i] > 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) 指定された配列の値を合計するプログラムを作成します。
回答: ロジックは次のとおりです。- sum =0 となる int 変数を宣言して代入します。
- 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[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、値 -> 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(配列名, 開始インデックス, 終了インデックス, 値) メソッドを使用して配列を fill(配列のすべての要素を XNUMX 回で初期化) しています。 Java ユーティリティ クラス。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
配列をパラメータとして関数に渡す場合はどうすればよいですか
第14問 a[]と[]aの違い
最初の型宣言の後は、別の (同じデータ型) 配列を作成することはできません。
ただし、XNUMX 番目の型宣言の後は可能です。
Int []a、b、c= 新しい int[サイズ]