Heim  >  Artikel  >  Java  >  Einige Fragen, die im schriftlichen JAVA-Test auftauchen

Einige Fragen, die im schriftlichen JAVA-Test auftauchen

怪我咯
怪我咯Original
2017-06-25 10:19:511327Durchsuche

Am 7. Juni 2017 wechselte das Wetter von sonnig zu bewölkt. Ich bin gut gelaunt.

Letzten Samstag habe ich meinen ersten schriftlichen Test abgelegt. Ich fühlte mich sehr schlecht, vor allem, weil ich nicht über fundierte Grundkenntnisse verfügte. Nun habe ich einige der Fragen im schriftlichen Test zur leichteren Orientierung wie folgt zusammengefasst in der Zukunft.

1. Was ist GC? Warum GC?

GC (GarbageCollection) ist ein Garbage-Collection-Mechanismus. In Java können Entwickler keinen Zeiger verwenden, um den Speicher frei zu verwalten. GC ist die Art und Weise, wie die JVM den Speicher (eigentlich Objekte) verwaltet. Die Java Virtual Machine kann Müll automatisch ermitteln und sammeln, gibt ihren Speicherplatz jedoch im Allgemeinen nicht sofort frei. Sie können auch System.gc() im Programm verwenden, um die Müllsammlung zu erzwingen. Beachten Sie jedoch, dass das System dies nicht garantiert Der Speicher wird sofort freigegeben. Mit GC können Java-Entwickler mühsame Speicherverwaltungsarbeiten loswerden und die Programmentwicklung effizienter gestalten.

Grundprinzipien von GC:

Javas Speicherverwaltung ist eigentlich die Verwaltung von Objekten, einschließlich der Zuweisung und Freigabe von Objekten.

Ordnen Sie Objekte mit dem neuen Schlüsselwort zu. Weisen Sie beim Freigeben eines Objekts einfach alle Referenzen auf das Objekt zu, damit das Programm nicht mehr auf das Objekt zugreifen kann. . Der GC ist dafür verantwortlich, den Speicherplatz aller „nicht erreichbaren“ Objekte zurückzugewinnen.

Wenn der Programmierer bei GC ein Objekt erstellt, beginnt der GC, die Adresse, Größe und Verwendung des Objekts zu überwachen. Normalerweise verwendet GC einen gerichteten Graphen, um alle Objekte im Heap aufzuzeichnen und zu verwalten. Auf diese Weise wird ermittelt, welche Objekte „erreichbar“ und welche „nicht erreichbar“ sind. Wenn der GC feststellt, dass einige Objekte „nicht erreichbar“ sind, ist der GC für die Rückgewinnung dieser Speicherplätze verantwortlich. Um jedoch sicherzustellen, dass GC auf verschiedenen Plattformen implementiert werden kann, gibt es in Java für viele GC-Verhalten keine strengen Vorschriften. Beispielsweise gibt es keine klaren Vorschriften zu wichtigen Themen wie der Art des zu verwendenden Recyclingalgorithmus und dem Zeitpunkt des Recyclings. Daher verfügen verschiedene JVM-Implementierer häufig über unterschiedliche Implementierungsalgorithmen, was große Unsicherheit in die Entwicklung von Java-Programmierern mit sich bringt.

2. Was ist der Unterschied zwischen Schnittstelle und abstrakter Klasse?

Schnittstelle ist die Abstraktion von Aktionen, und abstrakte Klasse ist die Abstraktion der Quelle. Die abstrakte Klasse stellt dar, was dieses Objekt ist. Die Schnittstelle stellt dar, was dieses Objekt tun kann. Zum Beispiel sind Männer und Frauen, diese beiden Klassen (wenn es sich um Klassen handelt), ihre abstrakte Klasse Menschen. Erläuterung: Sie sind alle Menschen. Menschen können essen, und Hunde können auch essen. Sie können „Essen“ als Schnittstelle definieren und es dann von diesen Klassen implementieren lassen. Daher kann eine Klasse in Hochsprachen nur eine Klasse (abstrakte Klasse) erben (so wie eine Person nicht gleichzeitig ein Lebewesen und ein Nichtlebendes sein kann), aber sie kann mehrere Schnittstellen implementieren (Essschnittstelle). , Gehschnittstelle).

Wenn Sie sich auf das Wesentliche einer Sache konzentrieren, verwenden Sie abstrakte Klassen. Wenn Sie sich auf eine Operation konzentrieren, verwenden Sie Schnittstellen.

(1) Weder abstrakte Klassen noch Schnittstellen können direkt instanziiert werden. Wenn sie instanziiert werden sollen, müssen abstrakte Klassenvariablen auf Unterklassenobjekte verweisen, die alle abstrakten Methoden implementieren, und Schnittstellenvariablen müssen auf Unterklassen verweisen Objekte, die alle Schnittstellenmethoden implementieren.

(2) Abstrakte Klassen müssen von Unterklassen geerbt werden und Schnittstellen müssen von Unterklassen implementiert werden.

(3) Schnittstellen können nur Methodendeklarationen durchführen, während abstrakte Klassen Methodendeklarationen und Methodenimplementierungen durchführen können.

(4) In der Schnittstelle definierte Variablen können nur öffentliche statische Konstanten sein, und Variablen in abstrakten Klassen sind gewöhnliche Variablen.

(5) Alle abstrakten Methoden in einer abstrakten Klasse müssen von der Unterklasse implementiert werden. Wenn die Unterklasse nicht alle abstrakten Methoden der übergeordneten Klasse implementieren kann, kann die Unterklasse nur eine abstrakte Klasse sein. Wenn eine Klasse eine Schnittstelle implementiert und nicht alle Schnittstellenmethoden implementieren kann, kann die Klasse ebenfalls nur eine abstrakte Klasse sein.

(6) Abstrakte Methoden können nur deklariert, nicht implementiert werden. Schnittstellen sind das Ergebnis des Designs und abstrakte Klassen sind das Ergebnis der Rekonstruktion.

(7) In abstrakten Klassen sind keine abstrakten Methoden erforderlich.

(8) Wenn eine Klasse eine abstrakte Methode enthält, kann die Klasse nur eine abstrakte Klasse sein.

(9) Abstrakte Methoden müssen implementiert werden, daher können sie nicht statisch oder privat sein.

(10) Schnittstellen können Schnittstellen erben und mehrere Schnittstellen erben, Klassen können jedoch nur von einem einzigen Stamm erben.

(11) Sowohl abstrakte Klassen als auch Schnittstellen werden zum Abstrahieren bestimmter Objekte verwendet, aber Schnittstellen haben die höchste Abstraktionsebene.

(12) Abstrakte Klassen können bestimmte Methoden und Attribute haben, während Schnittstellen nur abstrakte Methoden und unveränderliche Konstanten haben können.

(13) Abstrakte Klassen werden hauptsächlich zum Abstrahieren von Kategorien verwendet, und Schnittstellen werden hauptsächlich zum Abstrahieren von Funktionen verwendet.

(14) Wenn Methoden in abstrakten Klassen keine Implementierung enthalten, müssen abgeleitete Klassen diese überschreiben. Alle Methoden in der Schnittstelle dürfen nicht implementiert sein.

3. Warum soll Mybatis ein halbautomatisches ORM-Mapping-Tool sein? Was ist der Unterschied zur Vollautomatik?

Hibernate ist ein vollautomatisches ORM-Mapping-Tool. Wenn Sie Hibernate zum Abfragen verwandter Objekte oder verwandter Sammlungsobjekte verwenden, können Sie diese direkt basierend auf dem Objektbeziehungsmodell abrufen, sodass dies vollständig automatisch erfolgt. Wenn Mybatis zugehörige Objekte oder zugehörige Sammlungsobjekte abfragt, muss es manuell in SQL geschrieben werden, daher wird es als halbautomatisches ORM-Zuordnungstool bezeichnet.

Das obige ist der detaillierte Inhalt vonEinige Fragen, die im schriftlichen JAVA-Test auftauchen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn