35+ Java 面接の質問と回答8選(2025年)

技術者であろうと他の専門家であろうと、面接はいつも緊張でアドレナリンが分泌されます。しかし、群衆から目立つためには、スキルを磨き、自分の能力に賭けることが重要です。さらに、よく聞かれる質問を実際に体験しておくことは、 Java 面接でよく聞かれる質問と回答 8 つが参考になります。

したがって、今後の面接を勝ち抜くために、経験豊富な初心者と初心者向けにこれらの Java 8 面接の質問を深く掘り下げてください。

Java 新卒・経験者向けの面接の質問8つ

1) Java 8 はどのプログラミングパラダイムに該当しますか?

Java 8 は次のプログラミング パラダイムに該当します。

  • オブジェクト指向またはクラス指向のプログラミング言語。
  • 関数型プログラミング言語。
  • 指定された手続き型プログラミング言語。
  • 論理プログラミング言語。

2) なぜ Optional クラスを使用する必要があるのでしょうか?

Optional クラスは、既存または存在しないオプションの値を示すのに役立つ、新しく導入されたコンテナー クラスです。 その主な利点は、null および void チェックを回避し、特定の変数の値の存在をチェックするのに役立つメソッドを容易にすることです。


Java 8の面接の質問

3) 最近導入された機能をいくつか挙げてください。 Java 8.

以下は、 Java 8:

  • ラムダ式: それは、 Java オブジェクトとして共有したり参照したりできる関数。
  • メソッドの干渉: メソッドを実装するための基準として関数を使用します。
  • 機能的干渉: すべての機能的干渉は、機能的メソッドとして知られる単一の抽象メソッドに関連付けられています。
  • デフォルトの方法: これは、「インターフェイスの進化」の可能性を可能にするメソッドをインターフェイスに実装する場合に役立ちます。
  • 日時API: これは、以前のバージョンの欠点に対処するために、Java 時間 API の改良版であり、インスピレーションを得たバージョンです。
  • ストリームAPI は抽象層と呼ばれ、データの処理をパイプライン化するのに役立ちます。
  • 任意: ラッパー クラスは、null 値をチェックし、さらにデータを処理する場合に役立ちます。
  • JavaスクリプトとNashornエンジン: これは、 Javaスクリプトエンジンは、 JavaRhino に代わるものです。

4) Java 8 を使用する利点を指定する

使用することで得られるメリットは次のとおりです Java 8:

  • これは、アプリケーションをより迅速かつ簡単に作成するのに役立ちます。
  • 開発者に非常に安定した環境を提供します。
  • 簡潔で再利用可能で理解しやすいコード。
  • 改善された効果的なサポート。
  • さまざまなオペレーティング システム間で簡単に移植できます。
  • 最小限の定型コード。

5) コレクションとは何ですか? ストリームとの違いは何ですか?

コレクションは、現在のデータ構造に従ってすべての値を記録するメモリ内データベースです。 したがって、コレクションに追加する前に、それぞれを計算することが重要です。 一方、ストリームは視覚的に固定されたデータ構造であり、必要に応じて要素を計算できます。


6) ランバダ式とは何ですか?

ランバダ式は名前のない関数の一種であり、独自の種類の情報を持たないため、匿名関数と呼ばれることもあります。 これは必要に応じて使用でき、コレクションからのデータの繰り返し、フィルタリング、抽出に非常に役立ちます。

例:

import java. util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class LambdaExpressionExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave");
        List<String> filteredNames = names.stream()
                .filter(name -> name.startsWith("C"))
                .map(name -> name.toUpperCase())
                .collect(Collectors.toList());
        System.out.println(filteredNames);
    }
}

出力:

Charlie

7) ストリームパイプラインを定義する

ストリーム パイプラインは、さまざまな操作をまとめてグループ化する方法です。これを実現するには、ストリーム操作を中間操作と終端操作の 2 つの部分に分類します。

中間操作が実行されるたびに、インスタンスがストリーム パイプラインに返されます。したがって、どのユーザーでも無理数の中間操作を設定してデータを合理化し、最終的に処理パイプラインを形成できます。

さらに、パイプラインを終了するには、プロセスの最後にターミナル操作を実行する必要があります。


8)述語と消費者とは何か Java 8?

述語は、通常は引数を受け取り、ブール値を取得する関数インターフェイスです。 これを使用して、オブジェクトのコレクションにフィルターを適用できます。

一方、消費者は、 Java.util.function パッケージ。これを使用して任意のオブジェクトを消費することができ、入力値を取得して何も返しません。


9) peek()メソッドが使用されるのはなぜですか? Java 8?

Peak() メソッドは、パイプラインの特定のポイントから要素が流れる傾向にある要素に注目したい場合のデバッグのサポートに役立ちます。 これは、各要素がどのように通過するかを観察した結果を表したものです。

構文: public Object peek()


10) あなたがこのコンテストの理想的な候補者である理由は何ですか? Java 開発者の役割?

ここに、あなたがこの分野の理想的な候補者になるための重要な資質をいくつか挙げます。 Java 開発者の役割:

  • 明確で理解しやすく、効率的なコードを作成する能力が必要です。
  • OOP またはオブジェクト指向プログラミングに設立された地域オフィスに加えて、さらにローカルカスタマーサポートを提供できるようになります。」
  • さまざまなアーキテクチャとデザインパターンに関する十分な知識。
  • 使い慣れた Java 同時実行パターン。
  • さまざまな Web アプリケーション フレームワークを使用した経験と知識 Spark そして、遊びます。
  • の基礎知識 Java 仮想マシンまたは JVM、その欠点、回避策など。
  • 組み込みデータベースおよび外部データベースの使用に関する優れた経験。

11) 「関数インターフェース」について説明します。

抽象が XNUMX つだけあるインターフェイスは、関数型インターフェイスと呼ばれます。 これは、単一抽象メソッド (SAM) とも呼ばれます。 ただし、注釈 @FunctionalInterface はオプションであり、存在しない場合でも使用できます。 抽象がない場合は、他のインターフェイスに拡張されます。


12) 静的メソッドが必要な理由 Java 8?

静的メソッド参照は、インターフェイスにリンクされたユーティリティまたはヘルパー メソッドと呼ばれます。 これは、どのオブジェクトにもリンクされていないクラスでもあります。

静的メソッドを使用する理由は次のとおりです。 Java:

  • API の保守と拡張に役立ちます。
  • 明確かつ簡潔な責任分担が伴い、ユーティリティ コレクションを持つために 1 つのユーティリティ クラスを持つ必要はありません。
  • すべてのインターフェイスを特定のインターフェイスではなく共通のインターフェイスに保持する場合に便利です。

13) ナショーンの利点は何ですか?

Nashorn は最も先進的で新しい Javaスクリプト 処理エンジンは Java 8. 以前はMozilla Rhinoをベースにしていました。ECMAへの準拠を強化しました。 Javaスクリプト。以前のバージョンよりも高速です。


14) コレクション API とストリーム API はどう違うのですか?

Collection API と Stream API の重要な違いをいくつか示します。

コレクションAPI ストリームAPI
コレクションAPIは、 Java 1.2 ストリームAPIは、 Java SE8。
無制限のデータを保存するために使用できます。 これを使用して無制限のデータを計算できます。
Collection API を使用すると、Iterator と Spilterator を使用してデータを反復処理できます。 Stream API を使用すると、データを反復するために Iterator と Spilterator を使用できます。
コレクション API へのアクセスは簡単です。 インストリーム API には、特定の要素に直接アクセスする方法はありません。
ニーズに応じて加工するのも簡単です。 Stream API は XNUMX 回だけ処理できます。

15) PermGenSpace と MetaSpace について説明します。

PermGenまたはPermanent Generation Spaceは、保存されたメタデータを追跡するために使用される独自のタイプのヒープスペースであり、現在は削除されています。 Java 8.

この新しいバージョンでは、メタデータの保存は「MetaSpace」と呼ばれる同様のメモリで行われます。これは転送可能なものではありません。 Java ヒープ メモリであり、自動チューニング、ガベージ コレクションなどの面で PermGen の改良版です。


16) 機能インターフェースはどのように作成されるか Java 8?

関数インターフェースの抽象メソッドを実装するためにラムダ式を使用することができます。 Java 8. 以下は同じコーディング例です。

import java.util.function.Consumer;
public class FunctionalInterfaceExample {
    public static void main(String[] args) {
        Consumer<String> printer = System.out::println;
        printer.accept("Hello, world!");
    }
}

出力:

Hello, world!

17) 関数と述語の違いと類似点は何ですか? Java 8?

関数と述語の違いは次のとおりです。 Java 8:

  • 関数は変換に役立ちますが、述語は任意の条件をテストするために使用できます。
  • 関数は引数を受け取って結果を返すことができますが、述語も引数を受け取ることができますが、ブール値のみを返します。
  • 関数は次のように表されます、述語は のみで表されます。 ここで、T は関数の型、R は結果です。

以下に、関数と述語の類似点を示します。

  • 関数と述語はどちらも関数インターフェイスです。
  • 関数と述語はどちらも単一引数の関数です。

18) 例を使用して、skip(long) とlimit(long) の違いを説明します。

skip (long) は、特定のストリームの最初の n 要素を削除した後、残りの要素を取得する中間操作です。

例:

import java.util.Arrays;
import java.util.List;
public class SkipExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave", "Eve");
        // Create a stream from the names list
        names.stream()
                // Skip the first two elements of the stream
                .skip(2)
                // Print the remaining elements to the console
                .forEach(System.out::println);
    }
}

出力:

Charlie
Dave
Eve

制限 (ロング) は、特定のサイズの要素のストリームを取得します。

例:

import java.util.Arrays;
import java.util.List;
public class LimitExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave", "Eve");
        // Create a stream from the names list
        names.stream()
                // Limit the stream to the first three elements
                .limit(3)
                // Print the elements to the console
                .forEach(System.out::println);
    }
}

出力:

AliceBob
Charlie

19) ストリームAPIを使用するのに最も適した状況はどれですか? Java 8?

ストリームAPIは、 Java 8. 以下の操作が必要です。

  • 並列処理を行うことができます。
  • 遅延操作を実行する場合
  • データベース操作を実行する
  • 内部反復に使用します。
  • 関数型プログラミングを作成する場合
  • パイプライン操作を使用するために使用できます。

20) 型推論の機能は何ですか?

型推論は、対応する宣言とメソッド呼び出しの概要を把握するだけで、コンパイラーが引数の型を識別または認識するのに役立ちます。


21) リストから重複要素を識別して削除する最も簡単な方法はどれですか? Java 8?

重複する要素を識別して削除する最も簡単な方法は、ストリーム操作を使用してコレクションを実行し、その後 Collections.toSet() メソッドを使用することです。


22) 機能インターフェイスのガイドラインは何ですか?

以下は最もよく聞かれる機能的なインターフェースのガイドラインです。 Java 8つのプログラミングの質問:

  • 抽象メソッドは XNUMX つだけ持つ必要があります。
  • デフォルトのメソッドは抽象的ではないため、いくつでも持つことができ、実装は同じものによって先に与えられます。
  • 抽象メソッドは、パブリックメソッドの主な要素です。 Java.lang は関数型インターフェースとして知られています。オブジェクトは今でも便利なインターフェースとして認識されています。

ご注意: これについての説明は、このインターフェイスの各実装クラスは、実装クラス自体によって定義されるか、スーパークラスから取得されるこの抽象メソッドの実装を持つことができるということです。


23) スプリッテレータとイテレータを区別します。

スプリッテレータとイテレータの違いは次のとおりです。

スプリッター イテレータ
それは導入されました Java 1.2. それは導入されました Java 1.8.
すべての要素を個別に反復するだけです。 すべての要素を個別に、また一括して横断します。
これは、API の完全なコレクションのイテレータとして機能します。 これは、ストリーム API とコレクション API の両方のイテレータとして機能します。
並列プログラミングはサポートされません。 並列プログラミングはサポートされています。

24) クラス内のインターフェイスのデフォルト メソッドを呼び出すにはどうすればよいですか?

メソッド シグネチャの先頭にあるデフォルト キーワードは、インターフェイス内のメソッド宣言をデフォルト メソッドとして指定するために使用されます。 デフォルト メソッドを含むインターフェイス内のすべてのメソッド宣言は自動的に public になるため、public 修飾子をスキップできます。


25) デフォルトのメソッドを定義します。 いつから使えますか?

デフォルトのメソッドはインターフェイスに存在し、実装が含まれています。 このメソッドは、インターフェイスに既に実装されているクラスとの下位互換性を維持しながら、特定のインターフェイスに新しい機能を追加するのに役立ちます。


26) ストリームはどのようにして作成されるのか Java、これは Java 8 ストリームの面接で最もよく聞かれる質問の XNUMX つですか?

のストリーム Java 集計操作をサポートするコレクションなどの特定のソースからのオブジェクトのシーケンスを記述します。これを使用して、1 つのデータ構造を収集、フィルタリング、印刷、および別のデータ構造に変更することができます。

ストリームを作成する方法の例を以下に示します。 Java:

import java.util.stream.Stream;
public class StreamExample {
    public static void main(String[] args) {
        Stream<String> stream = Stream.of("Alice", "Bob", "Charlie", "Dave", "Eve");
        stream.forEach(System.out::println);
    }
}

出力:

Alice
Bob
Charlie
Dave
Eve

27) Map および FlatMap ストリーム操作とは何ですか?

Map と FlatMap は、関数を受け入れるストリームおよび中間ストリーム操作と見なされます。また、指定された関数を残りの要素に適用するのにも役立ちます。


28) なぜ私たちは Java プログラミング言語を頻繁に使用しますか?

私たちは Java プログラミング言語は、以下の理由により頻繁に使用されます。


29) 使用されている機能インターフェースをいくつか挙げてください。 Java 8.

以下は、 Java 8:

  • バイナリOperaタ
  • 消費財
  • 演算
  • サプライヤー
  • 単項Operaタ
  • バイファンクション
  • 述語

30) 時刻と日付に関する主な API クラスは何ですか?

以下は、時間と日付の主なAPIクラスです。 Java 8:

  • 現地時間
  • ローカル日時
  • ローカル日付

31) ラムダ式の基本構造/構文を教えてください。

ラムダ式の基本的な構造/構文は次のとおりです。

(arugument - list) - > {body}

ここでは、

  • 引数 - リスト: 満たしたままにすることも、空のままにすることもできます。
  • 矢印トークン: これは、本文の式と引数 (リスト) をリンクするのに役立ちます。
  • ボディ: これは、ラムダ式のステートメントと式で構成されます。

32) ストリームの主な特徴は何ですか?

Stream の主な特徴は次のとおりです。

  • パイプライン
  • ソース
  • 集計 Operaン
  • 要素のシーケンス
  • 自動反復

33) 最も一般的な中間操作は何ですか?

最も一般的なタイプの中間式には、次のようなものがあります。

  • 明確な ()
  • スキップ (長い n)
  • フィルター(述語)
  • 制限 (長さ n)
  • マップ(機能)

34) ターミナル操作の最も一般的なタイプは何ですか?

以下は最も一般的なターミナル操作の種類です。

  • ワンランク上の
  • 減らす
  • 最小値
  • すべて一致
  • 最大値
  • エニーマッチ
  • 配列へ

35) メソッド参照とは何か Java 8?

メソッド参照 Java 8 は関数型インターフェースを参照する方法です。これはラムダ式のより簡単で効率的な形式として知られています。ラムダ式を使用してメソッドを参照する場合、メソッド参照に置き換えることができます。


36) 内部反復と外部反復はどのように異なりますか?

以下は、内部反復と外部反復の違いです。

内部反復 外部反復
これは、受動的反復子または暗黙的反復子とも呼ばれます。 これは、アクティブまたは明示的なイテレータとも呼ばれます。
それはさまざまなオブジェクトの内部に保持されます。 それはさまざまな物体の外部に運ばれます。
関数型プログラミングで利用されます。 オブジェクト指向プログラミングで利用されます。
これによりエラーが非常に少なくなります。 ただし、そのためにはコーディングが必須です。 これにより、さらに多くのエラーが発生します。 ただし、コーディングは必要ありません。

37) 以前のバージョンでは型推論が使用されていましたか? Java?

Java 導入された型干渉 Java 5 しかし、アクセスは非常に限られています。しかし、長年にわたって、型の干渉の可能性は増加しており、 Java 8.


38) 書き留める Java ストリームの最小値と最大値を見つけることができる 8 つのプログラム。

import java.util.Arrays;
import java.util.stream.IntStream;
public class MinMaxExample {
    public static void main(String[] args) {
        int[] numbers = {9, 3, 8, 1, 5, 7, 2, 6, 4};
        int min = IntStream.of(numbers).min().getAsInt();
        int max = IntStream.of(numbers).max().getAsInt();
        System.out.println("Minimum number: " + min);
        System.out.println("Maximum number: " + max);
    }
}

出力:

Minimum number: 1
Maximum number: 9

39) StringJoiner クラスを介して複数の文字列を結合するにはどうすればよいですか?

StringJoiner は、1 つ以上の文字列を結合するのに役立ちます。これは、特定の結合子または区切り文字を使用して実行できます。たとえば、複数の文字列をコンマ (,) で区切って結合できます。

CSV 文字列を作成する場合、Linux では特定のディレクトリのフル パスを生成できます。これは、スラッシュ「/」を使用して文字列を結合することで実行できます。


40) ラムダ式の代わりとなる最良の方法は何ですか? Java 8?

一般に、ラムダ式を利用して、目的の出力を得るのに役立つ匿名メソッドを作成します。 ただし、ラムダ式が機能せず、既存のメソッドのみを使用する場合があります。

したがって、これを回避するには、目的の出力を取得するのに役立つメソッド参照を使用できます。メソッド参照は、: (二重コロン) 記号を使用して表されます。