Javaの基本的な共通のインタビューの質問

レコードに関するブログを書くための最初の時間のためのJavaの基本的な共通のインタビューの質問

1.クロスプラットフォームのプログラミング言語ですなぜJAVAのJVM?何ですか?
Java仮想マシンは、仮想マシンがプロセスJavaバイトコードを実行することができます。各Javaソースファイルは、Java仮想マシンで実行することができ、バイトコードファイルにコンパイルされています。
Javaのはプログラマが個別に各プラットフォームを書き換えるや再コンパイルは、JVM異なるプラットフォームが異なっているため、アプリケーションが必要とすることなく、任意のプラットフォーム上で実行できるように設計されています。しかし、これらのJVMはつまり、同じ基準を、以下:長い標準の.classファイルなどとして、あなたは別のJVM上で実行されますが、同じ効果を実行することができます。このように、いわゆる達成するために「どこでもタイムプログラムの使用を。」

2. JREとJDKの違いは何ですか?

JDK(Javaの開発キット)は、Javaの開発キットであるコンパイラはJavaプログラム、およびその他の開発ツールを書いて、JREを実行する必要があります含まれています。以下のような開発ツール:javadocコマンド用のJavaプログラムのjavaコマンドを実行するJVMを起動するためのプログラムをコンパイルするjavacコマンド用のJavaは、パッケージやjarコマンドのドキュメントを生成し、等の
JRE(Javaランタイム環境)Javaランタイムであります環境は、必要なソフトウェア環境を実行するためのJavaアプリケーションは、Java仮想マシン(JVM)と豊富なクラスライブラリシステムを備えています。Javaのクラスライブラリシステムは、単純に直接持ち込ま、事前にパッケージ機能クラスで大幅に開発効率を向上させることができます。

3、「静的」のキーワード、それはどういう意味?Javaのかどうかの方法(オーバーライド)プライベートまたは静的は?覆うことができ
、それがないではないオブジェクトに属するデータ構造のメンバ変数を変更し、静的メンバ変数は、キーワードを変更することができますが、変数は、通常、クラス名を通じて静的メンバを参照するために、クラスに属します。
オブジェクトを作成するときに、メンバ変数はヒープに格納されており、情報の静的メンバ変数とクラスメソッドはクラスの静的メンバ変数は、「」(メソッド領域に格納され、むしろヒープよりも、一緒に領域に格納されます)、作成されたオブジェクトの数を、そのクラスの関係なく。
民間のJavaのメソッドは、サブクラスは親クラス、プライベート親クラスを継承することはできません継承するとき、すなわちサブクラスがあっても、そう、継承することはできません、プライベートメソッドは最終であり、すべてのJavaデフォルトでは、書き換えることはできません同じ名前の方法は、独自の方法をサブクラスに属しているように、この方法のサブクラスは、同じ名前である。書き換えに属していない
オーバーライドすることができない静的メソッドでJava(リライト)を被覆する方法は、結合、動的ランタイムに基づいているため、静的メソッドコンパイル時の静的バインディング。静的メソッドは、オブジェクトクラスのインスタンスに関連付けられていない、それは概念を適用しません。

4、非静的変数静的な環境にアクセスすることができますか?

クラスは時にJavaでJava仮想マシンにロードされたときに、静的変数は、クラスの一部であり、意志の静的変数は、場合にのみ、新しいオブジェクトメソッド領域で、むしろ静的変数やメソッドよりも、割り当てられたメモリ領域を初期化しているわけではありません当時の彼らの割り当てが同じではありませんが、メモリ領域を割り当てられ、アクセス非静的変数にこの時間は、コンパイラは、これらの変数がまだ作成されていないので、文句を任意のインスタンスに関連付けられません。

5、Javaメソッドは、(オーバーライド)をカバーし、メソッドのオーバーロード(過負荷)、それはどういう意味ですか?

Javaメソッドのオーバーロードは、クラスメソッドケース内の名前が、異なるパラメータの2つの以上の方法と同様に起こります。一方、被覆の方法は、サブクラスは、親クラスを再定義すると述べました。対象と方法は同じメソッド名、パラメータリストや戻り値の型を持っている必要があります。それがカバーするアクセス方法を制限することができませんでしたカバー。
過負荷:コンパイル時の結合、そのメソッド呼び出しを決定するために、可変パラメータの種類に応じ。
リライト:、実行時バインディングメソッドを呼び出すオブジェクト参照型の可変ポイントの実際の種類に応じ。

6、Javaは多重継承にそれをサポートしていますか?
Javaクラスは多重継承をサポートしていません。各クラスは、クラスを継承することができますが、複数のインタフェースを実装することができます。しかし、インターフェースは、複数のインタフェースを継承することができます

7、リスト、セット、マップがそれは?その違い?何ですかConllectionを継承
リスト、セット市、地図ではないが。コレクションは、インターフェイスの最も基本的なセットで、コレクションは、オブジェクトのグループ、すなわち、収集要素を表します。コレクションの要素ではなく、他人の同じ数を可能にします。いくつかの並べ替えながら、他の人がすることはできません。リストとセット:JavaのJDKを直接Collectionクラスから継承されていませんが、JavaのJDKは、クラスのような「サブインタフェース」のコレクションから継承されています。
いいえ後継地図Collectionインタフェースは、マップ値マッピングへの鍵を提供していません。地図は、各キーには、値をマッピングすることができ、同じキーを含めることはできません。インターフェースは、プールの3種類の表示を提供地図、地図の内容は、キーグループ、グループの設定値、またはキーと値のマッピングのセットとして使用することができます。
一覧機能:順序付き要素を繰り返すことができる
要素の障害は繰り返さない:セット機能
キーと値のペア要素、キーと値のペア、無シーケンスには:地図ます

8、サーブレットのライフサイクル?
4段階の合計:
インスタンス化された1:あなたの最初の訪問やTomcatを起動すると、Tomcatはこれはサーブレットインスタンス化するデフォルトコンストラクタを呼び出します
。2.初期化:Tomcatをこのサーブレットのインスタンスの後、すぐにinitメソッドを呼び出すと、サーブレット初期化
3.準備を:コンテナが要求を受信した後、要求を処理するために、サーブレットのサービスメソッドを呼び出し
、削除サーブレットコンテナ彼らのアルゴリズムに基づいてオブジェクト、削除する前にdestroyメソッドを呼び出します:4.破壊は
実行のみ、初期化したインスタンス化し、破壊します時間、サービスメソッドの実行時間。

9.クッキー?セッションとクッキーの違いは何?
クッキーとは、Webサーバーがブラウザ、またはクライアントのハードディスクからデータを読み込むための技術に少量のデータを保存することができます。それはあなたのユーザーID、パスワードを記録することができ、ページは、費やした時間やその他の情報を見ました。あなたが再びウェブサイトに来るときは、クッキーを読むことによって、ウェブサイトは、あなたの情報を知って、私たちは、このようなウェルカムページが表示されて、あなたのスローガンを、適切な処置を行うことができます、またはあなたがIDを入力しないように、パスワードは、直接ログインように。
1は、Cookieデータは、顧客のブラウザ、サーバー上のセッションデータに保存されています。
2は、クッキーは、人々がローカルに保存されている分析することができCOOKIE COOKIEはカンニングと、非常に安全ではない
セッションを使用する必要があり、アカウントのセキュリティを考慮する。
図3に示すように、セッションは、一定期間内にサーバに保存されます。増加にアクセスする場合は、よりサーバーのパフォーマンスを取ることになる
サーバーのパフォーマンスを軽減考慮に入れると、あなたはクッキーを使用する必要があります。
図4に示すように、格納されたデータが4Kを超えることができない単一のクッキーは、多くのブラウザは、クッキーを保存した20の部位の最大値に制限されています。

10、対等のJavaと違いは?
データは、オブジェクトタイプのアドレスは、それが同じオブジェクトであるかどうか、同じである場合に比較基準値とを比較し、より基本的なタイプ等価である時間の比較。
二人の外観を比較するために同じ比率であるように等しく方法は、同じである二つの別々のオブジェクトの内容を比較するために使用され、それは2つのオブジェクトが独立している比較します。例えば、次のコード
列A =新しい文字列(「FOO」);
文字列Bが新しい文字列(「foo」を)=;
二つの文は、2つの新しいオブジェクトを作成し、次いで/ 2つのB変数が向けられています2つの異なるオブジェクトであるオブジェクト、ここで、それらは第一アドレスと異なっている、すなわち、aとbの値は同じ、従って、式Aに格納されていません
B戻り偽、及びこれら二つのオブジェクトの内容は同じであり、従って、式a.equals(b)がtrueを返します。
オーバーライドは等しくした後と
同じ使用。

11、最終の違いは、最終的には、確定します。
プロパティ、メソッド、クラスの最終的な宣言は、属性は、それぞれの方法を上書きすることはできず、クラスが継承することができない、変更することができません。
ローカルインナークラス変数にアクセスするには、ローカル変数は、最終的な型として定義されている必要があり、例えば、コード......
最終的に例外ハンドラが常に実行表すステートメント構造体の一部です。
ファイナライズは、ガベージコレクタの実行時に、このアプローチは、コレクションの対象となり呼び出すように閉じたファイルなど、ガベージコレクションをリサイクルする際に追加のリソースを提供するために、このメソッドをオーバーライドすることができ、Objectクラスのメソッドです。JVMは、常にこのメソッドが呼び出されることを保証するものではありません。

12、スローとの差?スロー
スローは攻略法で例外とスローを使用したコードのブロック内で、あなたはその関連のパッケージで、最終的には、ユーザー自身の関連する異常をキャプチャする必要がありますされパッケージには、例外情報投げた後、
メソッドに対してスローを、通常の異常を示していない、システムによって自動的に異常が優れた方法にスローされるすべての情報をキャプチャしますキャプチャする例外情報の方法を投げることについてです。
スローがアクティブであるように(理解することができます)のをスロー直接我々がアクティブになっていると)キャプチャを投げ、そして捕捉されない例外を処理するための方法で(パッシブをスローコンテンツの方法、
例:
公共無効str2int(文字列str)が得られます、ここで例外{//例外をスローします投げる
試し{
System.out.printlnは(Integer.parseInt(STR))を、

キャッチ}(NumberFormatExceptionがEは){
//いくつかはここにTODOを処理するか、処理が異常情報は非常に外得ることができ、異常なメッセージが完了した後
スロー新しい例外(「書式の例外」);
}

図13に示すように、説明のシリアライゼーションおよびデシリアライゼーション?
オブジェクトを変換するためには、バイトのオブジェクトシリアライゼーションプロセスシーケンスと呼ばれます。
オブジェクトのデシリアライズと呼ばれるバイトの復旧標的配列のためのプロセス。
シリアル化は、オブジェクトの状態が輸送またはフォーマットの間に維持することができる変換する処理です。相対順序が逆シリアル化され、それがオブジェクトに流れます。、あなたは簡単に二つの方法を組み合わせることがデータを格納して転送することができます。

?14、各種のインターフェースと抽象クラス
以下の違いは、二つの比較:
1.抽象クラスコンストラクタは、コンストラクタのインタフェースを持つことができない有することができます。
前記抽象クラスインターフェースは、通常のメンバ変数ではない、通常のメンバ変数を持つことができる
。3.抽象クラスは非抽象常法を含んでいてもよい、すべてのインタフェースのメソッドが必須非抽象通常の方法を持っていない抽象あります。
4.アクセスタイプ抽象メソッド抽象クラスは、公開、保護、および(デフォルトのタイプ、があってもよい
食が与えられていない、またそれが必要)が、抽象メソッドのみパブリックインターフェイスタイプ、およびデフォルトはパブリック抽象型。
抽象クラスは、静的メソッドは、インターフェース含めることができない、静的メソッドを含んでいてもよい
6抽象クラス及びインターフェースは、静的メンバ変数を含むことができ、静的メンバ変数のアクセスタイプ抽象クラスはいずれであってもよいが、唯一のインタフェースで定義された変数をpublic static finalタイプがあること、およびデフォルトのpublic static finalタイプであることができます。
7. Aクラスは複数のインタフェースを実装することができますが、唯一の抽象クラスを継承することができます。

15、「の.java」ソースファイルが複数を含むことができるかどうかのクラス(ない内部クラス)?制限は何ですか?
そこ複数のクラスが、唯一つのパブリッククラスことができ、およびパブリッククラス名はファイル名と一致する必要があります。

16、Javaは何の後藤?持っていない
Javaで予約語を、Javaで何の使用はありません。

17、短いS1 = 1; S1 = S1 + 1; と何も間違ってはあり短いS1 = 1;?S1 + = 1; そこに何も悪いの?
短いS1 = 1の場合; S1 = S1 + 1; によるS1 + 1つの操作意志式の自動アップグレードタイプなので、結果はintで、その後、短いタイプS1に割り当てられ、コンパイラがエラーのキャストタイプに必要性を報告します。
S1 + =;短いS1 = 1の場合は 1; = +所定のJava言語の演算子ので、それは、それが正しい翻訳することが可能とJavaコンパイラの特殊な治療法であるだろう。

18は、どのようにJavaで、現在、複数のネストされたループの外にジャンプしますか?
Javaでは、マルチループアウトに、ラベルは、break文のラベルで、外側のループの前に定義することができ、その後、外側のループの外に、ループ本体層内のコードを使用します。

最終的なキーワードを使用して変数を変更する場合図19は、参照オブジェクトまたは参照を変更することができない、変更することはできないのですか?
最終的なキーワードを使用して変数を変更する場合、変更することができない参照変数を参照して、最終的な缶のコンテンツオブジェクト参照変数ポイントが依然として書き換えることができない他の変形方法を変更、修飾クラスを継承することができない、修飾されたメンバ変数これは、変更することはできません。

20、メモリ管理?
スタック、スタック、メソッド領域:メモリJVMアプリケーションは、論理的に3つの領域に分割されます。これらの三つの領域は、異なるデータを格納するために使用されています。
ヒープ:新しいキーワードを使用して作成されたオブジェクトのストレージ。
スタック:ランタイム・プロセスで宣言されたすべてのローカル変数のメモリ。
方法エリア:(方法を含む)を記憶する各種情報の種類は、メソッド領域に格納されます。

21、Java Beanが仕様?
あなたは、カテゴリ作成時にJava Beanが仕様に従ってください:
1)をSerializableインタフェースを実装します。
2)プライベートプロパティ(メンバ変数)とパブリックメソッド。
3)引数なしのコンストラクタません。
4)GETおよびSETメソッド。
前記のgetName /のsetName名:バック属性getおよびsetメソッドに沿っては、以下のようなBeanプロパティ、です。

22、メンバーとローカル変数だけでなく、BeanプロパティJava Beanが仕様?
ローカル変数:

  1. 定義された方法で、
  2. 、初期値は、それ自体を設定する必要がありますデフォルトはありません。
  3. メソッドが呼び出されると、スタックがあり、メソッド呼び出しの終了時にローカル変数はスタックからクリアされ、
    メンバ変数:
  4. クラスで定義され、外側の方法。
  5. それが明示的に初期化されないことがあり、システムによって初期値設定をデフォルト。
  6. クラスがインスタンス化される場合、ヒープの存在は、オブジェクトが回収され、メンバ変数障害;
    Beanプロパティ:
    のgetName /のsetName名:GETメソッド、およびセット、GET / SET属性続くのような後Beanプロパティです。

23、シェイプアップ?
サブクラスオブジェクトへの親クラス参照。

24、オブジェクト指向機能。
カプセル化、継承、多態性、抽象的。

25、内部クラスは、クラスのメンバーが行う含んで参照することができますか?任意の制限はありますか?
完全に。それは制限がないことを、静的な内部クラスでない場合は!
あなたは特別なケースとして、クラス内の静的ネストされたクラスを置く場合、この場合のことを変数の通常のメンバーのクラスの外からアクセスすることができず、唯一のクラスの静的メンバの外にアクセスすることができます。

26、文字列は、最も基本的なデータ型である?
ない基本データ型に属しているが、バイト、int型、char型、長い、などがフロート、ダブル、ブールと短いが。
java.lang.Stringでクラスが最終であるため、このクラスを継承することができない、クラスを変更することはできません。スペースを節約するために、効率を改善するために、我々は、StringBufferクラスを使用する必要があります。

27、内部クラスは何ですか?静的な入れ子のクラスと内部クラスは異なっています。
クラスの静的メンバを定義することができない内部クラス、クラス内で定義内部クラス、内部クラスは、直接クラス外部メンバ変数にアクセスすることができ、内部クラスは、クラス外部メソッドの外側は、外部クラスに定義することができる定義することができます。メソッド本体。

28、自動エントリーボックスをパッケージ化?
自動入力ボックスは、後に新機能JDK1.5です:
整数に変換intなどの自動包装と呼ばれるラッパークラスの基本的なタイプ、
パッケージはIntegerなどに自動的に開梱と呼ばれる基本的なタイプは、int型に変換する変換しました。

29、整数とint型の違いは?
int型は、Javaが提供する生データの8種類の一つです。各プリミティブ型パッケージのためのJavaクラスを提供し、整数intはパッケージのJavaクラスを提供することです。INTデフォルト値は0であり、そして整数ヌルのデフォルト値は、すなわち整数未割り当ての場合を表現できない値0と割り当てられていない、INTとの間の差を識別することができます。

違いは?何ですか30、エラーと例外
エラーが回復した場合の深刻な問題を表しては不可能ですが、非常に難しいことではありません。例えば、メモリのオーバーフロー。プログラムは、Aの状況を処理するために期待することはできません。例外の設計や実装の問題という。言い換えれば、それは適切に実行した場合、状況は決して起こらなかったことを意味します。

?31は、リストとマップは区別、ある
データの単一の保存されたセットは、ストレージ・キーであり、他方はデータの値を、このような複列の集合である、リストに格納されたデータが配列され、そして繰り返し可能にし、地図データが中に記憶されていませんキーを繰り返されていない配列は、その値が重複することができます。

32、Collectionインタフェース?から継承されたかどうかをリスト、セット、地図
リスト、セット市、地図ではありません。

図33は、ArrayListに、ベクトル、及びストレージ性能特性のLinkedList言う
のArrayListとベクトルデータと、アレイ、アレイ素子の数が増加し、直接シリアル番号によって索引付け要素を許可要素、インサートが、ように格納されている実際のデータよりも大きい場合を用いて格納されています素子アレイ要素は、他のメモリ動作を移動関与挿入、高速インデックスデータと低速挿入データ、ベクトル同期方法ので(スレッドセーフ)、典型的には、ArrayListの差よりもパフォーマンスに、およびLinkedListの双方向リンクリストの実装シリアル番号データによって索引付け、格納されていますトラバースにするか後に必要の前に、唯一の前と後のこの記録は、挿入速度をデータ項目を挿入することができます。
LinkedListのは、スレッドセーフである、LinkedListのは、使用するLinkedListのスタックとキューとして使用することができる多数の方法を提供します。

34、収集と差のコレクション。
コレクションは、インターフェースの親クラス、継承と彼の主なインターフェイスを設定し、リストのセットです。
コレクションは、クラスのクラス・セットの助けで、彼は、並べ替え、およびスレッドセーフな操作ので、検索コレクションの多様性を達成するための静的メソッドのシリーズを提供しています。

35は、要素内のセットが繰り返されていない、そしてそれを繰り返すかどうかを区別するために使用する方法は?です等号()?それらの間の違いは何ですか?
セット、要素は、繰り返し繰り返したりない要素が等号(の使用である)裁判官に方法はありません。
(等しい)と
同じオブジェクトのequals()の決定点の方法値はクラスで覆われ、コンテンツのタイプは、2つの別々のオブジェクトは、それが真の値を返すと一致します。

36、GCガベージコレクション
スレッドを担持するガベージコレクタ(ガベージコレクション、GC)は、JVMが向けられないオブジェクト参照を回復しないため、(自動的にプログラムを実行している)です。
GCスレッドは、GCは、ヒープメモリの片に追跡することができない場合、使用されているメモリを決定するように、スタックから参照変数を追跡すると考えGCを開始することリサイクル可能で、もはや使用されているメモリ。ガベージコレクタが自動的に管理されるためしかし、Javaプログラマは、メモリ管理を心配する必要はありません。
GC回復はプログラマに透明であり、物体の有無を必ずしも参照は直ちに回収発見しました。我々はすぐに回復GCスレッドに無用のオブジェクトを必要とするとき、通常の状況下では、あなたがにSystem.gc()メソッドを呼び出すことができます。この方法は、即時ディスパッチJVMのGCスレッドの資源回復のために推奨されます。

メモリリーク37.Javaプログラム
メモリリーク手段はもはや使用メモリが時間内に回収されないされ、によるプログラムの崩壊への過度のメモリフットプリントとリードに深刻なメモリリーク。プログラムでは、不必要なメモリの浪費を回避しようとしてください。
オブジェクトは、オブジェクトが基準点を有するように回収されているか否かを決定することができ、それは、オブジェクトが使用中でなくなったと判定された場合従って、基準は、タイムリーなので、NULLに設定する必要があり、即ち、オブジェクトがもはや参照されないかどうかに応じてGCスレッド、リサイクル可能な範囲に属します。

38、?。)スレッドが(実行開始)または(開始
実行、[スタート]呼び出しは、あなたが状態を実行するようにスケジュールすることができます()メソッドを、スレッドは準備ができて、起動、スレッドがいくつかの特定のコードの実行に関連しなければならないことをスレッド()メソッドは、スレッドに関連付けられたコードを実行します。

39、睡眠()と待機()の違いは何?
睡眠はCPUにブロックされた状態のイニシアチブを入力する指定した時間を中断するために、このスレッドにつながる、Threadクラス(スレッド)の方法であり、他のスレッドにCPUがスリープ指定した時間に実行します後に、CPUは、オブジェクトのロックを解除しません睡眠を呼び出し、このスレッドをダウン継続して戻ります。
このスレッドが準備を取得するには、ターゲット・プールに入る前に、このオブジェクトをロックするのを待つが、オブジェクトがこのオブジェクトのロックを待ってプールに入るのを待って、オブジェクトのロックを与えるために、このスレッドを待つために、このメソッドのリードを呼び出し、後にのみ発行される方法(またはのnotifyAll)を通知し、Objectクラスのメソッドです操作へのオブジェクトロック。

40、Javaは内部で参照することによってその差が何であるかを値渡し?
答え:によって参照アドレスの転送ではなく、値そのものを指し、伝統的な値は、転送値のコピーです。

41、シングルトンデザインパターン?
シングルモードの実施形態は、一般的なソフトウェアのデザインパターンです。そのコア構造ではシングルトンと呼ばれる特殊なクラスが含まれています。例は、シングルモードシステムにクラスのインスタンスを1つだけ確実にします。
シングルトンといえば、最初に考えたが、独自のクラス、またはnull参照が存在することである、とprivate修飾子を変更し、他のクラスは、直接アクセスすることはできません。また、クラスシングルトンパターンも理解することは難しいことではありませんプライベートなコンストラクタを持っている必要があり、コンストラクタが公開されている場合は、そのクラスの外に直接クラスのコンストラクタを呼び出すことができ、この方法は、彼らがシングルを持っていません特性例。
クラスの一意のインスタンスにそれを入手する方法?これは、メソッドの戻り値型はシングルトンクラス公開取得され、返された結果が自然にこのクラスの唯一の例であるが必要です。
ケース:(ペンの質問)次のコードの習熟度を記述するようにしてください
パブリッククラスシングルトン{

//シングルトンはnullに初期化され
、単一= nullのシングルトンプライベート静的に。

//プライベートコンストラクタは、ある
プライベートシングルトン(){

}

//パブリック取得部の
公共getSingletonシングルトン静的(){
//現在のオブジェクトインスタンスがヌルを作成している場合
(SINGLE == NULL){IF
SINGLEシングルトン新しい新=();
}
SINGLEを返します;
}
}

42、サーブレットHTTPはいくつか持っていた方法で要求しますか?違いは何ですか?
取得し、ポストの要求はhttpプロトコルという2つの方法があります。
2つの本質的に異なる要求は、pathパラメータを通じて渡される、パラメータがURLに付加され、数や大きさが厳密に文字列、プライバシー差を制限することができます。
ポストのパラメータは、伝送パラメータが限定されるものではなく、URLではなく、良いプライバシーを通じて、物理的なパラメータを介して送信されます。
リクエストがデフォルトモードの場合に設定されていない場合は、get要求メソッドでリクエストを実行するためのdoGet()メソッドを呼び出します。
リクエストがポストに設定方法がある場合は、要求されたコールのdoPostメソッドを実行します。

転送著者:likaihai918:https://blog.csdn.net/lixiaohai_918/article/details/79950369

リリース元の2件の記事 ウォンの賞賛0 ビュー268

おすすめ

転載: blog.csdn.net/weixin_43682921/article/details/94634276