Javaのインタビューの質問の基礎

Javaの内部1.新しいオブジェクトが何をやっていましたか?

ビューの静的な観点から、新しいオブジェクトは、クラスのオブジェクトのインスタンスを作成することです。クラスは、最初のロードクラス、初めての場合は、新規のJVMバイトコード実行、最初のルックスクラスは、メモリおよび初期設定にロードされていないビューのJVM動作角度から、。読み込みが完了した後、オブジェクトインスタンスのメモリ空間内のメモリ割り当てをヒープます、アプリケーションの仮想マシンのメモリ・スタックは、オブジェクトのインスタンスを割り当てられました。

2.抽象クラスは、コンストラクタを定義していますか?もしそうなら、新しい抽象クラスかどうか?

抽象クラスはまた、新しい抽象クラスのコンストラクタを定義しますが、ないかもしれません。

3.それは何がポイントであることを、コンストラクタを定義する新しい抽象クラスではないので?

抽象クラスのコンストラクタにのみその効果初期化し、別のクラスのコンストラクタから呼び出されるコンストラクタのチェーンは、抽象クラスのいくつかの初期値であってもよい呼び出すことができます。

4.文字列は、基本データ型かどうか?これのStringBuilder、StringBufferの違いは何ですか?

文字列は、プリミティブデータ型ではありません。

それは割り当て、プログラムの中で数回ステッチすることができますが、文字列の定義の後、不変であるが、実際には各課題は、メモリ内のメモリ空間を再オープンすることです。

StringBuilderとStringBufferのは、StringBuilderのは、スレッドセーフではありません、彼らはメモリ内のスペースの割り当てを開きません、変数、何度もあり、StringBufferのは、スレッドセーフです。

どのような内部5.のStringBuilderとStringBufferの実装の原則?

違いは、appendメソッド内のStringBufferのStringBufferとSpringBuilderは、スレッドセーフであるsynchronizedキーワードを追加していることです。

それらはAbstractBuilderから継承され、内部実装は、レッグカフアレイは、アレイ16の初期長さです。実際の配列変数にコピー内部System.arraycopyのストリングと呼ばれる追記文字列連結方法を呼び出すとき。

何6. StringBuilderの膨張機構?

文字列の配列内のStringBuilderは、デフォルトのサイズは、拡張前の配列の新しいサイズに、実行される、容量が16を超える場合、16である配列+2、34の大きさの、すなわち最初の膨張の2倍のサイズです。配列の前の拡大は、新しい配列にコピーされます。

7.文字列str =「」と文字列str =新しい文字列(「B」)の違いは何ですか?

文字列strは=「」、最初に直接に存在する場合、なぜそれに定数プールとポイントを作成しないで、一定のプール「」文字列かどうかを知る必要があります。

文字列str =新しい文字列(「B」)は、それにヒープ文字列オブジェクトのインスタンスのメモリ、及びポイントで作成され、それはまた、定数プール内の「B」オブジェクトを作成します。

8. ==と違いに等しいですか?

値は、比較の基本的な種類を比較の問題である場合==、アドレスを参照します。

比較の対象は、equalsメソッドを複数の基準アドレスの事であるオーバーライドしない場合は、等しいです。あなたは、オブジェクトがequalsメソッドをオーバーライドします比較すると、オブジェクトの内容が同じかどうかを比較します。

注意を払う方法の必要性に等しい何オーバーライド9.?

方法に等しく書き換える場合、hashCodeメソッドをオーバーライドする必要があり、hashCodeメソッドは、オブジェクトのハッシュ値を計算することです。

Javaでそれを提供しています。

スケジュール設定がtrueの場合、自分のhashCodeは必ずしも等しくなります。

偽は、それらは同じハッシュコードが同じではないかもしれないとすることができる、すなわち、ハッシュコードが等しい、必ずしも同じではないに等しい等しい等しいです。

主にセットで使用されるオーバーライドhashCodeメソッドは、決定した理由。

クラスがhashCodeメソッドをオーバーライドしない場合は、2つのオブジェクトが等しいと等しいときにのみ書き換えるためのメソッドがtrueに等しい、彼らは同じhashCoefficientではありません。このとき、そのハッシュ値が、彼らは、キーの地図は、この時点では、論理的にマップ内の2つの同じキー値が存在することになるではないに等しくされていないのでことを、等しくないのため、彼らは、地図へのキーとして設定されている場合プログラムのための私たちの期待に沿っインチ だから、オーバーライドメソッドは、hashCodeメソッドをオーバーライドする必要があります等しいです。

10.どのような注意を払うとhashCodeメソッドの必要性をオーバーライドしますか?

ハッシュ関数の設計では、競合を避けるために試してみてください。あなたが頻繁にハッシュ衝突を発生させる場合はMapのキーターゲットが異なるハッシュ値に保存されているように、位置への鍵となり、地図のパフォーマンスに影響を与えます。

おすすめ

転載: www.cnblogs.com/763977251-sg/p/11836506.html