まず、final、finalize、finalize の違いについて話しましょう
(その他のインタビュー質問の推奨事項:Java インタビューの質問と回答)
final?修飾子 (キーワード) クラスがfinalと宣言された場合、そのクラスは新しいサブクラスを派生できなくなり、親クラスとして継承できなくなります。したがって、クラスをabstractとfinalの両方で宣言することはできません。変数またはメソッドが使用中に変更されないように、final として宣言します。 Final として宣言された変数には、宣言時に初期値を与える必要があり、後続の参照でのみ読み取ることができ、変更することはできません。 Final として宣言されたメソッドも使用のみが可能であり、オーバーロードすることはできません
finally? 例外処理中にクリーンアップ操作を実行するために、finally ブロックを提供します。例外がスローされた場合は、一致する catch 節が実行され、制御はfinally ブロック (存在する場合) に渡されます。
finalize?メソッド名。 Java テクノロジを使用すると、ガベージ コレクターがメモリからオブジェクトをクリアする前に、finalize() メソッドを使用して必要なクリーンアップを実行できます。このメソッドは、オブジェクトが参照されていないと判断された場合に、このオブジェクトのガベージ コレクターによって呼び出されます。これは Object クラスで定義されているため、すべてのクラスがそれを継承します。サブクラスは、finalize() メソッドをオーバーライドして、システム リソースを整理したり、その他のクリーンアップ作業を実行したりします。ガベージ コレクターがオブジェクトを削除する前に、finalize() メソッドがオブジェクトに対して呼び出されます。
2 番目に、HashMap と Hashtable の違いです。
はすべて、Map インターフェイスに属するクラスであり、一意のキーを特定の値にマッピングすることを実装します。
HashMap クラスは分類や並べ替えを行いません。 null キーと複数の null 値を許可します。
Hashtable は HashMap に似ていますが、null キーと null 値は許可されません。また、同期的であるため、HashMap よりも遅くなります。
3 番目、String s = new String("xyz"); String オブジェクトはいくつ作成されますか?
2 つのオブジェクト、1 つは "xyx"、もう 1 つは "xyx" を指します 参照オブジェクトs.
4 番目に、sleep() と wait() の違いは何ですか?
sleep() メソッドは、スレッドを一定期間停止するメソッドです。スリープ間隔が終了した後、スレッドは必ずしもすぐに実行を再開するとは限りません。これは、(a) 「ウェイクアップ」スレッドの優先順位が高い (b) 実行中のスレッドが他の理由でブロックされていない限り、その時点では他のスレッドが実行中であり、実行を放棄するようにスケジュールされていない可能性があるためです。
wait() はスレッドが対話するときです。スレッドが同期オブジェクト x に対して wait() 呼び出しを発行すると、スレッドは実行を一時停止し、呼び出されたオブジェクトはウェイクアップされるか待機状態になるまで待機状態になります。時間が経過します。
5 番目、short s1 = 1; s1 = s1 1; 何が問題ですか? short s1 = 1; s1 = 1; 何が問題ですか?
short s1 = 1; s1 = s1 1;はエラーです。s1 は short 型、s1 1 は int 型であり、明示的に short 型に変換することはできません。これは、s1 =(short)(s1 1) のように変更できます。 short s1 = 1; s1 = 1 が正しいです。
(推奨チュートリアル:java コース)
6 つ目は、オーバーロードとオーバーライドの違いです。オーバーロードされたメソッドは戻り値の型を変更できますか?
メソッドのオーバーライドとオーバーロードは、Java 多態性の異なる現れです。オーバーライドは親クラスとサブクラス間の多態性の現れであり、オーバーロードはクラス内の多態性の現れです。サブクラスで定義されたメソッドがその親クラスと同じ名前とパラメータを持つ場合、そのメソッドはオーバーライドされていると言います。サブクラスのオブジェクトがこのメソッドを使用すると、サブクラスの定義が呼び出されるため、親クラスの定義が「シールド」されているように見えます。クラス内に同じ名前の複数のメソッドが定義されており、それらのメソッドのパラメーターの数または型が異なる場合、それをメソッドのオーバーロードと呼びます。オーバーロードされたメソッドは戻り値の型を変更できます。
7 番目に、Set 内の要素は繰り返すことができません。では、それらが繰り返されているかどうかを区別するにはどのような方法が使用されますか? == を使用するべきですか? それとも、equals() を使用するべきですか? それらの違いは何ですか?
Set の要素は繰り返すことができないため、 iterator() メソッドを使用して繰り返しかどうかを区別します。 equals() は 2 つの Set が等しいかどうかを判断します。
equals() メソッドと == メソッドは、参照値が同じオブジェクトを指しているかどうかを決定します。equals() は、2 つの別個のオブジェクトの内容と型が一致する場合に true 値を返すために、クラス内でオーバーライドされます。
第八に、エラーと例外の違いは何ですか?
エラーは、回復が不可能ではないが困難な場合の深刻な問題を示します。たとえば、メモリのオーバーフローです。プログラムがそのような状況に対処することを期待することは不可能です。
例外は設計または実装の問題を表します。つまり、プログラムが正常に実行されている場合には決して起こらない状況を表します。
9 番目に、最も頻繁に発生する実行時例外を教えてください。
ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException,ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException
第 10 に、Set 内の要素は繰り返すことができません。では、それらが繰り返されているかどうかを区別するにはどのような方法が使用されますか? == を使用する必要がありますか? それとも、equals() を使用する必要がありますか? それらの違いは何ですか?
Set 内の要素は繰り返すことができないため、iterator() メソッドを使用して、それらが繰り返されているかどうかを区別します。 equals() は 2 つの Set が等しいかどうかを判断します。
equals() メソッドと == メソッドは、参照値が同じオブジェクトを指しているかどうかを決定します。equals() は、2 つの別個のオブジェクトの内容と型が一致する場合に true 値を返すために、クラス内でオーバーライドされます。
関連する推奨事項:Java 入門チュートリアル
以上がJava 面接でよくある 10 の質問の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。