Die folgenden 10 Fragen werden in aktuellen Interviews häufig gestellt. Sie werden nun als Referenz zusammengestellt und weitergegeben.
Das ist eine sehr knifflige Frage, wenn Sie sich über sich selbst oder Ihre Java-Kenntnisse nicht sicher sind. Wenn Sie ein Java-Experte sind, sollten Sie ihn niedrig halten. Danach erhalten Sie möglicherweise Fragen, je nachdem, für welches Niveau Sie sich anmelden. Wenn Sie beispielsweise 10 sagen würden, aber eine ziemlich schwierige Frage nicht beantworten könnten, wäre das ein Nachteil.
Ganz ehrlich, es gibt viele Unterschiede. Wenn Sie hier die wichtigsten aufzählen können, reicht es aus. Sie sollten die neuen Funktionen in Java 8 erklären. Eine vollständige Liste finden Sie auf der Original-Website: Java 8 JDK.
Das Wichtigste, was Sie wissen sollten, ist:
Lambda-Ausdrücke, eine neue Sprachfunktion, wurden in dieser Version eingeführt. Mit Lambda-Ausdrücken können Sie Funktionen als Methodenparameter oder Code als Daten behandeln. Mit Lambda-Ausdrücken können Sie Instanzen von Einzelmethodenschnittstellen (sogenannte funktionale Schnittstellen) kompakter ausdrücken.
Methodenverweise stellen leicht lesbare Lambda-Ausdrücke für Methoden bereit, die bereits Namen haben.
Standardmethoden ermöglichen das Hinzufügen neuer Funktionen zu den Schnittstellen einer Bibliothek und stellen die Binärkompatibilität mit Code sicher, der für ältere Versionen dieser Schnittstellen geschrieben wurde.
Das Wiederholen von Annotationenbietet die Möglichkeit, denselben Annotationstyp mehrmals auf dieselbe Deklaration oder Typverwendung anzuwenden.
TypanmerkungenTypanmerkungen bieten die Möglichkeit, Anmerkungen überall dort anzuwenden, wo ein Typ verwendet wird, nicht nur in Deklarationen. Diese Funktion unterstützt eine verbesserte Codetypprüfung bei Verwendung mit einem steckbaren Typsystem. 3. Wissen Sie, welche Sammlungstypen es gibt?
ArrayList
LinkedList
HashMap
HashSet
Danach können einige Probleme auftreten, z Sollten Sie diesen speziellen Sammlungstyp verwenden, welche Vorteile bietet er im Vergleich zu anderen Typen, wie speichert er Daten und wie funktionieren die Datenstrukturen im Hintergrund?
Hier gilt es am besten, so viel wie möglich über diese Sammlungstypen zu lernen, denn die Vielfalt der Fragen ist nahezu unerschöpflich.
4. Über welche Methoden verfügt die Object-Klasse?Die Object-Klasse, die zum java.lang-Paket gehört, befindet sich an der Spitze des Klassenhierarchiebaums. Jede Klasse ist ein direkter oder indirekter Nachkomme der Objektklasse. Jede Klasse, die Sie verwenden oder schreiben, erbt die Instanzmethoden eines Objekts. Sie sind nicht verpflichtet, eine dieser Methoden zu verwenden. Wenn Sie sich jedoch dafür entscheiden, müssen Sie sie möglicherweise mit klassenspezifischem Code überschreiben.
Von Object geerbte Methoden, die in diesem Abschnitt besprochen werden, sind:
protected Object clone() throws CloneNotSupportedException
erstellt eine Kopie dieses Objekts und gibt sie zurück. public boolean equals(Object obj)
Identifiziert, ob andere Objekte diesem Objekt „gleich“ sind. protected Object clone() throws CloneNotSupportedException
创建并返回此对象的副本。public boolean equals(Object obj)
标识其他对象是否“等于”这个对象。protected void finalize() throws Throwable
当垃圾收集确定没有对对象的引用时,垃圾收集器在对象上调用。public final Class getClass()
返回对象的运行时类。public int hashCode()
返回对象的hashcodepublic String toString()
返回对象的字符串表示形式。Object的notify、notifyAll和wait方法都在同步程序中独立运行线程的活动中起着作用,这将在后面讨论,在这里不会讨论。
有五种方法:
public final void notify()
public final void notifyAll()
public final void wait()
public final void wait(long timeout)
public final void wait(long timeout, int nanos)
protected void finalize() throws Throwable
Der Garbage Collector wird für ein Objekt aufgerufen, wenn er feststellt, dass keine Verweise auf das Objekt vorhanden sind. public final Class getClass()
Gibt die Laufzeitklasse des Objekts zurück. public int hashCode()
Gibt den Hashcode des Objekts zurück
public String toString()
Gibt die String-Darstellung des Objekts zurück.
public final void notify()
🎜🎜public final void notifyAll()
🎜🎜public final void wait()🎜🎜<code>public final void wait(long timeout)
🎜🎜public final void wait(long timeout, int nanos)
🎜🎜🎜5 Warum ist das String-Objekt in Java Ist es in Java unveränderlich?🎜🎜1 Da Strings in Java unveränderlich sind, gibt es einen String-Pool. Auf diese Weise spart die Java-Laufzeit viel Java-Heap-Speicherplatz, da verschiedene String-Variablen auf dieselbe String-Variable im Pool verweisen können. Wenn String nicht unveränderlich ist, ist die String-Internierung nicht möglich, denn wenn sich der Wert einer Variablen ändert, wird dies in anderen Variablen widergespiegelt. 🎜🎜 (Weitere Empfehlungen für verwandte Interviewfragen: 🎜Java-Interviewfragen und -antworten🎜)🎜🎜2. Wenn die Zeichenfolge nicht unveränderlich ist, stellt sie eine ernsthafte Sicherheitsbedrohung für die Anwendung dar. Beispielsweise werden der Datenbankbenutzername und das Kennwort als Zeichenfolgen übergeben, um die Datenbankverbindung, den Socket-Programmierhost und die Portdetails als Zeichenfolgen zu erhalten. Da String unveränderlich ist, kann sein Wert nicht geändert werden. Andernfalls könnte ein Hacker den Referenzwert ändern und so Sicherheitsprobleme in der Anwendung verursachen. 🎜3. Da String unveränderlich ist, ist er für Multithreading sicher und eine einzelne String-Instanz kann von verschiedenen Threads gemeinsam genutzt werden. Vermeiden Sie aus Gründen der Thread-Sicherheit die Verwendung von Synchronisierungszeichenfolgen.
4. Strings werden in Java-Klassenladern verwendet und Unveränderlichkeit bietet die Sicherheit, dass die richtige Klasse vom Klassenlader geladen wird. Stellen Sie sich beispielsweise eine Instanz vor, in der Sie versuchen, java.sql zu laden. Die Verbindungsklasse ist verbunden, aber der referenzierte Wert wird in „myhacking“ geändert. Verbindungsklasse, die unnötige Vorgänge in der Datenbank ausführen kann.
5. Da String unveränderlich ist, wird sein Hashcode beim Erstellen zwischengespeichert und muss nicht erneut berechnet werden. Dies macht es zu einem guten Kandidaten für Schlüssel in einer Karte und wird schneller verarbeitet als andere HashMap-Schlüsselobjekte. Aus diesem Grund ist String das am häufigsten verwendete Objekt für HashMap-Schlüssel.
Diese Frage gefällt mir am besten. Das Schlüsselwort
final wird in mehreren Kontexten verwendet, um eine Entität zu definieren, die nur einmal zugewiesen werden kann.
Der Java-Finally-Block ist ein Block, der zum Ausführen wichtiger Codes verwendet wird, z. B. zum Schließen von Verbindungen, Streams usw. Unabhängig davon, ob die Ausnahme behandelt wird oder nicht, wird der Java-Finally-Block immer ausgeführt. Der Java-Endblock folgt auf den Try- oder Catch-Block.
Finalize ist eine Methode, die vom GarbageCollector (Garbage Collector) aufgerufen wird, bevor ein Objekt gelöscht/zerstört wird, das für die Garbage Collection in Frage kommt, um Bereinigungsaktivitäten durchzuführen.
Wir nennen dieses Problem das Diamantproblem. Der Name stammt aus dem Bild oben, das die Warnung darstellt.
8. Wie kann man eine Klasse unveränderlich machen?
1 Deklarieren Sie die Klasse als endgültig, damit sie nicht erweitert werden kann.
2. Machen Sie alle Felder privat, sodass kein direkter Zugriff zulässig ist.
3. Stellen Sie keine Setter-Methoden für Variablen bereit
4 Machen Sie alle Variablenfelder endgültig, sodass ihre Werte nur einmal zugewiesen werden können.
5. Initialisieren Sie alle Felder über den Konstruktor, der tiefes Kopieren durchführt.
6. Führen Sie das Klonen von Objekten in der Getter-Methode durch, um eine Kopie anstelle der tatsächlichen Objektreferenz zurückzugeben.
9. Was bedeutet Singleton?
10. Was ist Abhängigkeitsinjektion?
Die Komponente führt keine Positionierungsabfragen durch und stellt nur gewöhnliche Java-Methoden für den Container bereit, um Abhängigkeiten zu ermitteln. Der Container ist allein für die Zusammenstellung der Komponenten verantwortlich. Er übergibt Objekte, die Abhängigkeiten erfüllen, über JavaBean-Eigenschaften oder Konstruktoren. Die Praxis, Abhängigkeiten über JavaBean-Eigenschaften einzufügen, wird als Setter-Injektion bezeichnet. Die Praxis, Abhängigkeiten als Konstruktor-Parameter zu übergeben, wird als Konstruktor-Injektion bezeichnet.
Zusammenfassung
Wenn Sie ähnliche Erfahrungen mit diesem Thema gemacht haben oder einige Erfolgsgeschichten haben, teilen Sie diese bitte in den Kommentaren unten.
Verwandte Empfehlungen:
Java-Video-TutorialDas obige ist der detaillierte Inhalt von10 häufig gestellte Fragen zu Java-Interviews. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!