ホームページ  >  記事  >  Java  >  Java 面接でよくある 10 の質問

Java 面接でよくある 10 の質問

王林
王林転載
2021-02-04 10:20:133094ブラウズ

Java 面接でよくある 10 の質問

最近の面接でよく聞かれる 10 の質問を以下にまとめ、参考として共有します。

1. 10 段階で自分自身を評価してください - Java はどれくらい上手ですか?

自分自身や Java の習熟度がわからない場合、これは非常に難しい質問です。 。 Java の専門家であれば、この値を低く保つ必要があります。この後、認めるレベルに応じて質問を受ける場合があります。ですから、例えば10と言ったけれども、かなり難しい質問に答えられなかったとしたら、それは不利になります。

2. Java 7 と Java 8 の違いを説明します。

正直に言うと、多くの違いがあります。ここでは、最も重要なものを列挙できれば十分です。 Java 8 の新機能について説明する必要があります。完全なリストについては、元の Web サイト「Java 8 JDK」を参照してください。

知っておくべき最も重要なことは次のとおりです:

新しい言語機能であるラムダ式がこのバージョンで導入されました。ラムダ式を使用すると、関数をメソッドのパラメーターとして扱うことも、コードをデータとして扱うこともできます。ラムダ式を使用すると、単一メソッド インターフェイス (関数インターフェイスと呼ばれる) のインスタンスをよりコンパクトに表現できます。

メソッド参照は、すでに名前が付いているメソッドに読みやすいラムダ式を提供します。

デフォルト メソッドを使用すると、ライブラリのインターフェイスに新しい機能を追加でき、これらのインターフェイスの古いバージョン用に作成されたコードとのバイナリ互換性が保証されます。

アノテーションの繰り返し

同じ宣言または型の使用法に同じアノテーション タイプを複数回適用する機能を提供します。

型アノテーション

型アノテーションは、宣言内だけでなく、型が使用されるあらゆる場所にアノテーションを適用する機能を提供します。この機能は、プラグ可能型システムで使用する場合のコード型チェックの改善をサポートします。 3. どのようなコレクション型があるか知っていますか?

ここで最も重要な点を知っておく必要があります:

ArrayList

LinkedList

HashMap

HashSet

この後、この特定のコレクション型をいつ使用するべきか、他の型と比べてどのようなメリットがあるのか​​、データはどのように保存されるのか、などの質問が生じるかもしれません。データ構造が舞台裏でどのように機能するか。

質問の種類はほぼ無尽蔵にあるため、ここでの最善のアプローチは、これらのコレクション タイプについてできる限り多くのことを学ぶことです。

4. Object クラスにはどのようなメソッドがありますか?

これは、基本的な知識を理解しているかどうかを判断するために使用される非常に一般的な質問です。すべてのオブジェクトが持つメソッドは次のとおりです。

Object クラスは、java.lang パッケージに属し、クラス階層ツリーの最上位にあります。すべてのクラスは、オブジェクト クラスの直接的または間接的な子孫です。使用または作成するすべてのクラスは、オブジェクトのインスタンス メソッドを継承します。これらのメソッドを使用する必要はありませんが、使用する場合は、クラス固有のコードでオーバーライドする必要がある場合があります。

このセクションで説明するオブジェクトから継承されるメソッドは次のとおりです。

    protected Object clone() throws CloneNotSupportedException
  • このオブジェクトのコピーを作成して返します。
  • public booleanquals(Object obj)
  • 他のオブジェクトがこのオブジェクトと「等しい」かどうかを識別します。
  • protected void Finalize() throws Throwable
  • オブジェクトへの参照がないと判断された場合、オブジェクトに対してガベージ コレクターが呼び出されます。
  • public Final Class getClass()
  • オブジェクトのランタイム クラスを返します。
  • public int hashCode()
  • オブジェクトのハッシュコードを返します
  • public String toString()
  • オブジェクトの文字列表現を返します。
  • オブジェクトのnotify、notifyAll、waitメソッドはすべて、同期プログラム内で独立して実行されるスレッドのアクティビティで役割を果たします。これについては後で説明するため、ここでは説明しません。

次の 5 つのメソッドがあります:

    public Final void Notice()
  • public Final void NoticeAll()
  • public Final void wait()
  • public Final void wait(長いタイムアウト)
  • public Final void wait() wait(long timeout, int nanos)
  • 5. Java では String オブジェクトが不変であるのはなぜですか?

1. Java では文字列が不変であるため、String プールが必要です。このようにして、異なる文字列変数がプール内の同じ文字列変数を参照できるため、Java ランタイムは Java ヒープ領域を大幅に節約します。 String が不変でない場合、変数の値が変更されると他の変数に反映されるため、String のインターニングはできません。

(さらに関連する面接の質問に関する推奨事項:

java 面接の質問と回答

)2. 文字列が不変でない場合、アプリケーションに重大な問題が発生します。 . セキュリティ上の脅威。たとえば、データベースのユーザー名とパスワードは文字列として渡され、データベース接続、ソケット プログラミング ホスト、ポートの詳細が文字列として渡されます。 String は不変であるため、その値は変更できません。そうしないと、ハッカーが参照値を変更し、アプリケーションにセキュリティ上の問題が発生する可能性があります。

3. String は不変であるため、マルチスレッドに対して安全であり、単一の文字列インスタンスを異なるスレッド間で共有できます。スレッド セーフのため、文字列は暗黙的にスレッド セーフであるため、同期の使用は避けてください。

4. 文字列は Java クラス ローダーで使用され、不変性により、クラス ローダーによって正しいクラスがロードされるというセキュリティが提供されます。たとえば、java.sql をロードしようとしているインスタンスを考えてみましょう。接続クラスは接続されていますが、参照される値は myhacking に変更されます。データベース上で不要な操作を実行できる接続クラス。

5. String は不変であるため、そのハッシュコードは作成時にキャッシュされ、再計算する必要はありません。これにより、マップ内のキーの適切な候補となり、他の HashMap キー オブジェクトよりも高速に処理されます。これが、String が HashMap キーに最も一般的に使用されるオブジェクトである理由です。

6. Final、Finalize、Finalize の違いは何ですか?

この質問は私のお気に入りです。

final キーワードは、一度だけ割り当てることができるエンティティを定義するために、いくつかのコンテキストで使用されます。

Java Final ブロッ​​クは、接続やストリームなどの終了など、重要なコードを実行するために使用されるブロックです。例外が処理されるかどうかに関係なく、Java Final ブロッ​​クは常に実行されます。 Java のfinally ブロックは、try ブロックまたは catch ブロックの後に続きます。

Finalize は、クリーンアップ アクティビティを実行するためにガベージ コレクションの対象となるオブジェクトを削除/破棄する前に、GarbageCollector (ガベージ コレクター) によって呼び出されるメソッドです。

7. ダイヤモンドの問題は何ですか?

ダイヤモンドの問題は、Java で多重継承が許可されない理由を反映しています。特定のメソッドを持つ共有スーパークラスを持つ 2 つのクラスがある場合、それは両方のサブクラスでオーバーライドされます。どちらかのサブクラスから継承することにした場合、言語には、どのメソッドを呼び出したい場合にどのメソッドを呼び出すかを決定する方法がありません。

この問題をダイヤモンドと呼びます。質問。その名前は、警告を表す上記の画像に由来しています。

8. クラスを不変にするにはどうすればよいですか?

これは非常に難しい問題だと思います。不変性を実現するには、クラスにいくつかの変更を加える必要があります:

1. クラスを拡張できないように、クラスを Final として宣言します。

2. 直接アクセスが許可されないように、すべてのフィールドを非公開にします。

3. 変数にはセッター メソッドを提供しないでください

4. すべての変数フィールドを Final にして、値を 1 回だけ割り当てられるようにします。

5. ディープ コピーを実行するコンストラクターを通じてすべてのフィールドを初期化します。

6. getter メソッドでオブジェクトのクローン作成を実行して、実際のオブジェクト参照を返すのではなく、コピーを返します。

9. シングルトンとはどういう意味ですか?

シングルトンは、それ自体の 1 つのインスタンスの作成のみを許可し、作成されたインスタンスへのアクセスを提供するクラスです。これには、それ自体の一意のプライベート インスタンスを保持できる静的変数が含まれています。これは、ユーザーがクラスのインスタンス化を 1 つのオブジェクトに制限したい場合に使用できます。これは、システム全体の操作を調整するために単一のオブジェクトが必要な場合に役立ちます。

10. 依存性注入とは何ですか?

これは、Java EE または Spring で作業するときに知っておく必要がある最初の質問です。制御の反転 (IoC) は、コンピューター コード間の結合を減らすために使用できるオブジェクト指向プログラミングの設計原則です。最も一般的な方法は依存関係注入 (DI) と呼ばれ、もう 1 つの方法は依存関係ルックアップと呼ばれます。制御の反転により、オブジェクトが作成されると、システム内のすべてのオブジェクトを制御する外部エンティティが、依存するオブジェクトの参照をそれに渡します。依存関係がオブジェクトに注入されるとも言えます。

コンポーネントは位置決めクエリを実行せず、コンテナが依存関係を判断するための通常の Java メソッドのみを提供します。コンテナはコンポーネントのアセンブリのみを担当し、依存関係を満たすオブジェクトを JavaBean プロパティまたはコンストラクタを通じて必要なオブジェクトに渡します。 JavaBean プロパティを通じて依存関係を注入する方法は Setter Injection と呼ばれ、依存関係をコンストラクター パラメーターとして渡す方法は Constructor Injection と呼ばれます。

#概要

この記事では、Java 面接の質問トップ 10 について説明します、私の経験に基づいて、これが今日最も重要な質問であると信じています。これを知っていれば採用活動でかなり有利になると思います。

このトピックに関して同様の経験がある場合、またはいくつかの成功事例がある場合は、以下のコメントで共有してください。

関連する推奨事項:

Java ビデオ チュートリアル

以上がJava 面接でよくある 10 の質問の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。