Java プログラマーとして、面接に参加すると必ず Java コードに関するいくつかの質問を受けることになります。これらの質問は非常に基本的なものである場合もあり、非常に頻繁に尋ねられることがよくあります。この記事では、Java コーディングの面接でよく聞かれる貴重な質問について、私が考えるいくつかの質問を共有したいと思います。
この問題は比較的基本的なもので、通常、面接官はこれを解くための簡単なアルゴリズムを手書きするよう求めます。
次は簡単な方法です:
public static void findMinMax(int[] arr) { if (arr == null || arr.length == 0) { return; } int min = Integer.MAX_VALUE; int max = Integer.MIN_VALUE; for (int i = 0; i < arr.length; i++) { if (arr[i] < min) { min = arr[i]; } if (arr[i] > max) { max = arr[i]; } } System.out.println("Minimum value: " + min); System.out.println("Maximum value: " + max); }
これは、通常あなたを試す古典的な面接の質問です。 Java の API を使用して単純な文字列操作を実装します。
次は実装方法です:
public static String reverseString(String str) { if (str == null || str.length() == 0) { return ""; } char[] charArray = str.toCharArray(); int i = 0; int j = str.length() - 1; while (i < j) { char temp = charArray[i]; charArray[i] = charArray[j]; charArray[j] = temp; i++; j--; } return new String(charArray); }
これは、もう 1 つの一般的な文字列の面接の質問です。通常、面接官は、文字列が回文文字列であるかどうかを判断するアルゴリズムを手書きするように求めます。
次は実装方法です:
public static boolean isPalindromeString(String str) { if (str == null || str.length() == 0) { return true; } int i = 0; int j = str.length() - 1; while (i < j) { if (str.charAt(i) != str.charAt(j)) { return false; } i++; j--; } return true; }
これは非常に一般的な Java 面接の質問であり、通常は手作業が必要です。 - インスタンスが 1 つだけ作成できるようにシングルトン パターンの実装を作成します。
次は一般的な実装メソッドです:
public class Singleton { private static Singleton instance; private Singleton() { // 私有构造方法 } public static synchronized Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } }
これは単純な実装メソッドですが、スレッドセーフではありません。マルチスレッドの状況では、複数のインスタンスが作成される場合があります。スレッドの安全性を確保するには、getInstance メソッドを同期メソッドとして設定する必要があることに注意してください。
これは、比較的高度な Java インタビューの質問です。通常は、単純なブロッキング キューの実装を手動で作成して、キューがいっぱいまたは空のときに、キュー上で挿入および削除操作を実行するスレッドをブロックして、状態が軽減されるのを待機できるようにする必要があります。
以下は、単純なブロッキング キューの実装です。
public class BlockingQueue<T> { private Queue<T> queue = new LinkedList<T>(); private int capacity; public BlockingQueue(int capacity) { this.capacity = capacity; } public synchronized void put(T item) throws InterruptedException { while (queue.size() == capacity) { wait(); } queue.add(item); notifyAll(); } public synchronized T take() throws InterruptedException { while (queue.isEmpty()) { wait(); } T item = queue.remove(); notifyAll(); return item; } }
上記の実装では、Java の wait() メソッドと NoticeAll() メソッドを使用して、スレッドのブロックとウェイクアップを実装しています。キューがいっぱいまたは空の場合、キューに対して挿入または削除操作を実行するスレッドは、キューのステータスが変化するのを待ってブロックされます。
この記事では、Java の面接でよくある質問をいくつか紹介します。これらの質問は通常、非常に頻繁に尋ねられ、深く習得する価値のある知識ポイントです。 Java の面接の準備をしているのであれば、これらの質問がお役に立てば幸いです。
以上がJava コードの面接でよく聞かれる質問の選択の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。