ホームページ  >  記事  >  Java  >  Java の面接でよくある 8 つの間違い

Java の面接でよくある 8 つの間違い

(*-*)浩
(*-*)浩オリジナル
2019-11-11 14:21:362004ブラウズ

Java の面接でよくある 8 つの間違い

1. static と Final の使用法

static の役割は、静的変数、静的メソッド、静的という 3 つの側面から議論できます。親切。

静的変数: 静的として宣言された静的変数は、本質的にグローバル変数です。オブジェクトが宣言されると、静的変数のコピーは生成されませんが、クラスのすべてのインスタンス変数は、同じ静的変数。つまり、この静的変数は 1 回だけロードされ、記憶領域の一部だけが割り当てられます。

静的メソッド: 静的として宣言された静的メソッドには次の特性があります:

(1) 静的メソッドは静的メソッドのみを呼び出すことができます;

(2) ) 静的メソッドは静的データのみにアクセスできます;

(3) 静的メソッドはいかなる方法でも this または super を参照できません;

静的クラス: 通常は通常のクラス宣言static は許可されず、内部クラスのみが許可されます (main メソッドが典型的な例です) このとき、宣言された static クラスは、外部クラスをインスタンス化することなく、通常のクラスとして直接使用できます。

final の役割は、変数、メソッド、クラスの 3 つの側面から理解できます:

final によって変更された変数の値は変更できず、定数です。

final メソッドによって変更された変数の値はオーバーライドできません;

final-modified クラスは継承できません;

2. 抽象クラスとインターフェイスの違い。クラスは複数のクラスを継承しますか? インターフェイスは複数のクラスを継承できますか? インターフェイスは? クラスは複数のインターフェイスを実装できますか?

抽象クラスもインターフェイスも直接インスタンス化することはできません。インスタンス化する場合、抽象クラス変数はすべての抽象メソッドを実装するサブクラス オブジェクトをポイントし、インターフェイス変数はすべての抽象メソッドを実装するクラス オブジェクトをポイントする必要があります。すべてのインターフェースメソッド。

抽象クラスはサブクラスによって継承され、インターフェイスはクラスによって実装される必要があります。

インターフェイスはメソッド宣言のみを行うことができます。メソッド宣言は抽象クラスで行うことができ、メソッドの実装も行うことができます。

インターフェイスで定義される変数はパブリック静的定数のみにすることができます。抽象クラス、変数は通常の変数です。

抽象クラス内のすべての抽象メソッドは、サブクラスによって実装される必要があります。サブクラスが親クラスのすべての抽象メソッドを実装できない場合、サブクラスは抽象クラスのみになります。同様に、クラスがインターフェイスを実装する場合、すべてのインターフェイス メソッドを実装できない場合、そのクラスは抽象クラスのみになります。

抽象メソッドは宣言のみ可能であり、実装はできません。 abstract void abc(); を abstract void abc(){} として記述することはできません。

抽象クラスには抽象メソッドを含めることはできません。

クラスに抽象メソッドがある場合、そのクラスは抽象クラスのみになります。

抽象メソッドは実装する必要があるため、静的またはプライベートにすることはできません。

インターフェイスはインターフェイスおよび複数のインターフェイスを継承できますが、クラスは単一のルートからのみ継承できます。

3. this と super

#this の機能と使い方:

(1) コンストラクタ以外はアクセス可能メソッド すべてのプロパティとメソッドは this を通じて呼び出されます。

(2) 静的メソッドでは使用できません

(3) this (パラメータ リスト) をコンストラクタで使用して、この他の構築メソッドを呼び出しますclass は構築メソッドの最初の文に配置する必要があります。

super: 親クラスのメソッドとプロパティにアクセスします

(1) 親クラスのメソッドとプロパティにアクセスします;

(2 ) コンストラクター内 親クラスのコンストラクターは、スーパー (パラメーター リスト) を通じて呼び出されます。スーパー (パラメーター リスト) は、サブクラスのコンストラクターの最初の行に配置する必要があります。

4. Final、finally、finalize の違いは何ですか?

final: 修飾子 (キーワード) には 3 つの用途があります: クラスが Final として宣言されている場合、これは、新しいサブクラスを派生できない、つまり継承できないことを意味します。変数を Final として宣言すると、使用中に変更されないことが保証されます。final として宣言された変数は読み取りのみが可能で、初期化後の参照内で変更することはできません。 Final として宣言されたメソッドも使用のみが可能であり、サブクラス内でオーバーライドすることはできません。

finally: 通常、try...catch の後に配置されるこの構造体は常にコード ブロックを実行します。つまり、プログラムが正常に実行されるか例外が発生するかに関係なく、ここにあるコードは次の条件を満たす限り実行できます。 JVM は閉じられていないため、外部コードを解放できます。リソース コードは、finally ブロックに記述されます。

finalize: Object クラスで定義されたメソッド。Java では、ガベージ コレクターがメモリからオブジェクトをクリアする前に、finalize() メソッドを使用して必要なクリーンアップ作業を実行できます。このメソッドは、オブジェクトを破棄するときにガベージ コレクターによって呼び出されます。finalize() メソッドをオーバーライドすることで、システム リソースを整理したり、その他のクリーンアップ作業を実行したりできます。

5. エラーと例外の違いは何ですか?

エラーは、プログラムが処理する必要のないシステムレベルのエラーと例外を表します。リカバリは不可能ではありませんが、困難です。深刻な問題。メモリ オーバーフローなど、プログラムがそのような状況を処理することを期待することは不可能です。

Exception は、キャッチする必要がある例外、または処理する必要がある例外を表します。これは、設計または実装の問題、つまり、プログラムが正常に実行されている場合には決して発生しない状況を表します。

6. サーブレットのライフサイクルとサーブレットと CGI の違いについて説明します。

サーブレットがサーバーによってインスタンス化された後、コンテナは init メソッドを実行し、リクエストが到着するとサービス メソッドを実行します。サービス メソッドはリクエストに対応する doXXX メソッド (doGet、doPost) などを自動的にディスパッチします。 . サーバーがインスタンスの破棄を決定したとき、その destroy() メソッドを呼び出します。

CGI との違いは、サーブレットがサーバー プロセス内にあることです。サーブレットは、マルチスレッドを通じてそのサービス メソッドを実行します。1 つのインスタンスで複数のリクエストを処理でき、通常、CGI が各リクエストを処理している間、そのインスタンスは破棄されません。どちらも新しいプロセスを生成し、完了後にサービスを破棄するため、効率はサーブレットよりも低くなります。

7. キャッシュなだれを防ぐにはどうすればよいですか?

原因:

キャッシュ雪崩は、データがキャッシュにロードされていないか、広い領域で同時にキャッシュ障害が発生したことが原因である可能性があります。すべてのリクエストがデータベースにクエリを実行するようになり、データベースの CPU とメモリの負荷が高くなりすぎたり、ダウンタイムが発生したりすることがあります。

対応する解決策:

ロック カウントを使用するか、適切な数のキューを使用して、キャッシュが失敗したときにデータベースに過剰な負荷がかかることを回避します。この方法ではデータベースへの負荷を軽減できますが、システムのスループットも低下します。

ユーザーの行動を分析し、障害発生時点を均等に分散するように努めます。キャッシュ雪崩を回避します。

特定のキャッシュ サーバーがダウンしている場合は、redis のプライマリとバックアップなど、プライマリとバックアップを検討できますが、二重キャッシュには更新トランザクションが含まれ、更新によってダーティ データが読み取られる可能性があるため、解決する必要があります。

8. MVC についての理解を話す

MVC は Model-View-Controler の略です。それがモデルビューコントローラーです。 MVC は、アプリケーションの入力、処理、出力の分離を強制する設計パターンです。

MVC のモデル、ビュー、およびコントローラーは、さまざまなタスクを担当します。

ビュー: ビューは、ユーザーが表示して操作するインターフェイスです。ビューは関連データをユーザーに表示し、ユーザーからの入力を受け入れます。ビューはビジネス ロジック処理を実行しません。

モデル: モデルはビジネス データとビジネス処理を表し、JavaBean に相当します。モデルは複数のビューにデータを提供できます。これにより、アプリケーションの再利用性が向上します。

コントローラー: ユーザーが Web ページの送信ボタンをクリックすると、コントローラーはリクエストを受け入れ、対応するモデルを呼び出してリクエストを処理し、対応するビューを呼び出して、処理に基づいて処理結果を表示します。結果。

MVC 処理プロセス: まず、コントローラーはユーザーのリクエストを受け付け、対応する業務処理モデルを呼び出し、コントローラーにデータを返します。コントローラーは対応するビューを呼び出して処理結果を表示します。そしてビューを通じてユーザーに提示されます。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。