JAvaインターネットFOR面接-JAVA基礎-面接常問

1557 ワード

麺は高級感がありますが、初級の質問が好きな会社もあります.
一.final修飾はクラス、方法、属性にどのような役割を果たすか(瓜子中古車)
修飾クラス:このクラスは継承できません.たとえば、Stringクラス、StringBufferクラス、Systemクラスです.
修飾方法:書き換えられない.たとえば、ObjectクラスのgetClass()メソッドです.
修飾プロパティ:このプロパティは定数であり、初期化されると値を割り当てることはできません.習慣的には、大文字で表すことがよく使われます.
変数static final修飾へんすうstatic final修飾:グローバル定数グローバル定数
二.finalizeの役割(瓜子中古車)
finalize()はObjectのメソッドで、ゴミ回収器がオブジェクトのメモリを回収する前に呼び出されます.すなわち、オブジェクトが仮想マシンによって死亡を宣言されたときにfinalize()メソッドを呼び出し、そのオブジェクトに生前の最後のことを処理させます(このオブジェクトはこのタイミングで死の運命を抜け出すことができます).
この問題を理解するには、仮想マシンがどのようにオブジェクトを判断するかを見てみましょう.
Javaは、オブジェクトが死期に達したかどうかを判定するために、達成性分析アルゴリズムを使用します.Javaでは一連の「GC Roots」オブジェクトを起点とし、1つのオブジェクトの参照チェーンが最終的に「GC Roots」オブジェクトに遡ることができれば、天下は平穏である.そうでなければ、AオブジェクトのみがBを参照し、BオブジェクトがAを参照し、A、B参照チェーンが「GC Roots」に達すると、2人は仮想マシンに死亡条件に合致し、ゴミ回収器に回収される資格があると判定されます.
死を判断する根拠に言及したが、死を判断された後、生還する機会がある.
どのように自己救済するか:
1.オブジェクトはfinalize()メソッドを上書きした(これにより、死んだと判定された後に呼び出され、最後の救済を行う機会がある).
2.finalize()メソッドで「GC Roots」チェーンに再参照する(例えば、現在のオブジェクトの参照thisをあるオブジェクトのクラス変数/メンバー変数に付与し、到達可能な参照を再確立する).
注意:
finalize()は、オブジェクトメモリの回収前に一度だけ呼び出されます(Thefinalize  method is never invoked more than once by a Java virtual machine for any given object. );
finalize()の呼び出しには不確定な行があり、メソッドが呼び出されることを保証するだけであるが、メソッドのタスクが実行されることを保証しない(例えば、オブジェクトの手足が不十分で、ぐずぐずしていて、自分を救う過程で、殺されて回収された).
以上、対象救済の例を挙げたが、finalize()の役割は、最後のリソース回収に用いられると考えられることが多い.
自己救済における表現に基づいて,この方法は大きな不確実性(方法におけるタスクの実行が完了することを保証しない)を有し,実行コストが高い.だから資源を回収しても良い表現はありません.
以上、finalize()の方法は鳥用ではありません.
二.volatileの役割(瓜子中古車)