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 サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。

カプセルは3次元の幾何学的図形で、両端にシリンダーと半球で構成されています。カプセルの体積は、シリンダーの体積と両端に半球の体積を追加することで計算できます。このチュートリアルでは、さまざまな方法を使用して、Javaの特定のカプセルの体積を計算する方法について説明します。 カプセルボリュームフォーミュラ カプセルボリュームの式は次のとおりです。 カプセル体積=円筒形の体積2つの半球体積 で、 R:半球の半径。 H:シリンダーの高さ(半球を除く)。 例1 入力 RADIUS = 5ユニット 高さ= 10単位 出力 ボリューム= 1570.8立方ユニット 説明する 式を使用してボリュームを計算します。 ボリューム=π×R2×H(4

Java は、初心者と経験豊富な開発者の両方が学習できる人気のあるプログラミング言語です。このチュートリアルは基本的な概念から始まり、高度なトピックに進みます。 Java Development Kit をインストールしたら、簡単な「Hello, World!」プログラムを作成してプログラミングを練習できます。コードを理解したら、コマンド プロンプトを使用してプログラムをコンパイルして実行すると、コンソールに「Hello, World!」と出力されます。 Java の学習はプログラミングの旅の始まりであり、習熟が深まるにつれて、より複雑なアプリケーションを作成できるようになります。
