Javaデザインパターンのインタビューのトピックと回答

1. JDKで一般的に使用されるデザインパターンをいくつか挙げてください。

シングルトンパターン(シングルトンパターン)は、ランタイム、カレンダー、その他のクラスで使用されます。
ファクトリパターンは、Boolean.valueOfなどのBooleanなどのさまざまな不変クラスに使用されます。
Observerパターンは、Swingおよび多くのイベント監視で使用されます。
デコレータデザインパターン(Decoratordesignパターン)は、複数のJava IOクラスで使用されます。

2.デザインパターンとは何ですか?コードでデザインパターンを使用しましたか?

設計パターンは、特定の設計問題を解決するために世界中のさまざまなプログラマーが使用する試みおよびテスト方法です。設計パターンは、コードの可用性の拡張です

3. Javaのシングルトンデザインパターンとは何ですか?Javaでスレッドセーフなシングルトンパターンを書いてください

シングルトンモードは、システム全体で作成された場合により多くのリソースを消費するいくつかのオブジェクトの共有に重点を置いています。アプリケーション全体で特定のクラスインスタンスが1つだけ維持され、すべてのコンポーネントによって使用されます。Java.lang.Runtimeは、シングルトンパターンの典型的な例です。Java5以降では、列挙型を使用してスレッドセーフなシングルトンを実装できます。

4. Javaでは、オブザーバーデザインパターン(オブザーバーデザインパターン)とは何ですか?

オブザーバーモードは、オブジェクトの状態変化とオブザーバーの通信に基づいており、オブザーバーは対応する操作を実行できます。簡単な例は気象システムであり、天気が変化した場合、それを一般に表示されるビューに反映する必要があります。このビューオブジェクトはサブジェクトであり、さまざまなビューがオブザーバーです。

5.工場モデルを使用する主な利点は何ですか?どこで使用されていますか?

ファクトリパターンの最大の利点は、オブジェクトを作成するときにパッケージレベルを上げることです。ファクトリを使用してオブジェクトを作成する場合、コールレベルで変更を加えることなく、後で元の製品の実装またはクラスをより高度で高性能な実装に置き換えることができます。

6. Javaで実装されたデコレータデザインパターンを提供しますか?オブジェクトレベルまたはクラスレベルのどちらで動作しますか?

装飾モードは、単一オブジェクトの能力を高めます。装飾パターンは、Java IOのあらゆる場所で使用されます。典型的な例は、BufferedReaderやBufferedWriterなどの一連のBufferedクラスで、ReaderオブジェクトとWriterオブジェクトを拡張して、バッファーレベルの読み取りと書き込みのパフォーマンスを向上させます。

7. Javaで、静的メソッドから非静的変数にアクセスできないのはなぜですか?

非静的変数は特定のオブジェクトインスタンスに関連付けられているが、静的変数はインスタンスに関連付けられていないため、Javaの静的コンテキストから非静的データにアクセスすることはできません。

8. ATMを設計するには、設計のアイデアを教えてください。

たとえば、金融システムを設計するときは、どのような状況でも正常に機能できる必要があることを知っておく必要があります。停電やその他の状況に関係なく、ATMは正しい状態(トランザクション)を維持し、ロック、トランザクション、エラー条件、境界条件などについて考える必要があります。特定の設計について考えることはできませんが、機能以外の要件を指摘し、いくつか質問し、境界条件について考えることができればすばらしいでしょう。

9. Javaでは、いつオーバーロードを使用し、いつリライトを使用しますか?

クラスの異なる実装が同じことを行う方法が異なることがわかった場合は、オーバーライドを使用する必要があります。オーバーロードは、異なる入力で同じことを行うことです。Javaでは、オーバーロードされたメソッドシグネチャは異なりますが、オーバーライドは異なりません。

10.インターフェイスではなく抽象クラスを使用したい場合を説明する例を挙げてください。

インターフェイスと抽象クラスはどちらも、「実装コーディングではなくインターフェイス指向のコーディング」という設計原則に従っています。これにより、コードの柔軟性が高まり、変化するニーズに適応できます。この質問に答えるのに役立ついくつかのポイントを次に示します。

Javaでは、継承できるクラスは1つだけですが、複数のインターフェースを実装できます。したがって、クラスを継承すると、他のクラスを継承する機会が失われます。
インターフェイスは通常、Runnable、Clonable、Serializableなどの補助的な説明や動作を表すために使用されるため、動作を表すために抽象クラスを使用する場合、クラスを同時にRunnableとClonableにすることはできません(注:これは、 Runnableなどを抽象クラスとして実装する)。これは、Javaでは2つのクラスを継承できないためですが、インターフェースを使用する場合、クラスは同時に複数の異なる動作を持つことができます。
時間要件が厳しい一部のアプリケーションでは、抽象クラスが使用される傾向があり、インターフェースよりもわずかに高速です。
クラス継承階層で一連の動作を標準化し、同じ場所でより適切にコーディングできる場合は、抽象クラスの方が適しています。インターフェイスと抽象クラスを一緒に使用できる場合もありますが、関数はインターフェイスで定義され、デフォルトの実装は抽象クラスで定義されます。

拡張接続:より太字のスタイルについては、ここをクリックしてください

ブロガーのパブリックアカウントプログラマXiaoyang は、インタビュー関連のツイートのみを投稿します
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_44395707/article/details/106406593