2017年6月7日、天気は晴れから曇りになりました。ご機嫌です。
先週の土曜日に初めての筆記試験を受けましたが、主に基本的な知識をしっかりと理解していなかったために非常に気分が悪くなりました。今後の参考のために、筆記試験の質問の一部を以下にまとめました。
1.GCとは何ですか?なぜ GC なのか?
GC (GarbageCollection) は、ガベージ コレクション メカニズムです。 Java では、開発者はポインタを使用してメモリを自由に管理することはできません。GC は、JVM がメモリ (実際にはオブジェクト) を管理する方法です。 Java 仮想マシンはガベージを自動的に判断して収集できますが、通常はメモリ領域をすぐには解放しません。プログラム内で System.gc() を使用してガベージ コレクションを強制することもできますが、システムはそれを保証しないことに注意してください。すぐにメモリを解放します。 GC を使用すると、Java 開発者は面倒なメモリ管理作業を軽減し、プログラム開発をより効率的に行うことができます。
GC の基本原則:
Java のメモリ管理は、実際にはオブジェクトの割り当てと解放を含むオブジェクトの管理です。
プログラマーの場合、オブジェクトを解放するときに、オブジェクトへのすべての参照を null に割り当てるだけで、プログラムがオブジェクトにアクセスできなくなります。これを「到達不能」と呼びます。 GC は、すべての「到達不能」オブジェクトのメモリ空間を再利用する責任を負います。
GC の場合、プログラマがオブジェクトを作成すると、GC はオブジェクトのアドレス、サイズ、使用状況の監視を開始します。通常、GC は有向グラフを使用して、ヒープ内のすべてのオブジェクトを記録および管理します。このようにして、どのオブジェクトが「到達可能」であり、どのオブジェクトが「到達不能」であるかが決定される。一部のオブジェクトが「到達不能」であると GC が判断した場合、GC はこれらのメモリ空間を再利用する責任があります。ただし、GC をさまざまなプラットフォームに確実に実装できるようにするために、Java には多くの GC 動作に関して厳格な規制がありません。たとえば、どのような種類のリサイクルアルゴリズムを使用するか、いつリサイクルを実行するかなどの重要な問題について明確な規制はありません。したがって、JVM 実装者ごとに実装アルゴリズムが異なることが多く、Java プログラマの開発に多くの不確実性をもたらします。
2. インターフェースと抽象クラスの違いは何ですか?
インターフェースはアクションの抽象化であり、抽象クラスはルートの抽象化です。抽象クラスは、このオブジェクトが何であるかを表します。インターフェイスは、このオブジェクトができることを表します。 たとえば、男性と女性、これら 2 つのクラス (クラスである場合)、その抽象クラスは人々です。説明: 彼らは全員人間です。人間も食べることができ、犬も食べることができます。「食べる」をインターフェイスとして定義し、これらのクラスに実装させます。したがって、高級言語では、クラスは 1 つのクラス (抽象クラス) しか継承できませんが (人が同時に生物であると同時に無生物になることができないのと同じです)、複数のインターフェイス (インターフェイスを食べる) を実装できます。 、ウォーキングインターフェイス)。
物事の本質に焦点を当てる場合は、抽象クラスを使用し、操作に焦点を当てる場合は、インターフェイスを使用します。
(1) 抽象クラスもインターフェースも直接インスタンス化することはできません。インスタンス化する場合、抽象クラス変数はすべての抽象メソッドを実装するサブクラス オブジェクトを指し、インターフェース変数はすべてのインターフェース メソッドを実装するクラス オブジェクトを指す必要があります。 。
(2) 抽象クラスはサブクラスによって継承され、インターフェースはサブクラスによって実装される必要があります。
(3) インターフェースはメソッド宣言のみを行うことができますが、抽象クラスはメソッド宣言とメソッド実装を行うことができます。
(4) インターフェースで定義される変数はパブリック静的定数のみであり、抽象クラス内の変数は通常の変数です。
(5) 抽象クラス内のすべての抽象メソッドは、サブクラスによって実装されなければなりません。サブクラスが親クラスのすべての抽象メソッドを実装できない場合、サブクラスは抽象クラスのみにすることができます。同様に、クラスがインターフェイスを実装する場合、すべてのインターフェイス メソッドを実装できない場合、そのクラスは抽象クラスのみになります。
(6) 抽象メソッドは宣言のみが可能であり、インターフェイスは設計の結果であり、抽象クラスは再構築の結果です。
(7) 抽象クラスには抽象メソッドは必要ありません。
(8) クラス内に抽象メソッドがある場合、このクラスは抽象クラスのみにすることができます。
(9) 抽象メソッドは実装する必要があるため、静的またはプライベートにすることはできません。
(10) インターフェイスはインターフェイスを継承でき、複数のインターフェイスを継承できますが、クラスは単一のルートからのみ継承できます。
(11) 抽象クラスとインターフェイスはどちらも特定のオブジェクトを抽象化するために使用されますが、インターフェイスの抽象化レベルが最も高くなります。
(12) 抽象クラスは特定のメソッドと属性を持つことができますが、インターフェイスは抽象メソッドと不変定数のみを持つことができます。
(13) 抽象クラスは主にカテゴリーを抽象化するために使用され、インターフェースは主に関数を抽象化するために使用されます。
(14) 抽象クラスでは、メソッドに実装が含まれていない場合、派生クラスがメソッドをオーバーライドする必要があります。インターフェイス内のすべてのメソッドは実装されていない必要があります。
3. Mybatis が半自動 ORM マッピング ツールと言われているのはなぜですか?全自動との違いは何ですか?
Hibernate は完全に自動化された ORM マッピング ツールです。Hibernate を使用して関連オブジェクトまたは関連コレクション オブジェクトをクエリする場合、オブジェクト関係モデルに基づいて直接取得できるため、完全に自動化されます。 Mybatis が関連オブジェクトまたは関連コレクション オブジェクトをクエリする場合、SQL で手動で記述する必要があるため、半自動 ORM マッピング ツールと呼ばれます。
以上がJAVA筆記試験に出題されるいくつかの問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。