Heim  >  Artikel  >  Java  >  10 häufig gestellte Fragen zu Java-Interviews

10 häufig gestellte Fragen zu Java-Interviews

王林
王林nach vorne
2021-02-04 10:20:133098Durchsuche

10 häufig gestellte Fragen zu Java-Interviews

Die folgenden 10 Fragen werden in aktuellen Interviews häufig gestellt. Sie werden nun als Referenz zusammengestellt und weitergegeben.

1. Bewerten Sie sich selbst auf einer 10-Punkte-Skala – Wie gut sind Sie in Java?

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.

2. Erklären Sie den Unterschied zwischen Java 7 und Java 8.

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 Annotationen

bietet die Möglichkeit, denselben Annotationstyp mehrmals auf dieselbe Deklaration oder Typverwendung anzuwenden.

Typanmerkungen

Typanmerkungen 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?

Hier sollten Sie den wichtigsten Punkt kennen:

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?

Dies ist eine sehr häufige Frage, um festzustellen, ob Sie mit Grundkenntnissen vertraut sind. Dies sind die Methoden, die jedes Objekt hat:

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()返回对象的hashcode
  • public 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 ThrowableDer 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.

Die Methoden notify, notifyAll und wait von Object spielen alle eine Rolle bei den Aktivitäten unabhängig laufender Threads im Synchronisierungsprogramm, die später besprochen werden und hier nicht besprochen werden.

Es gibt fünf Methoden: 🎜🎜🎜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.

6. Was ist der Unterschied zwischen Final, Final und Finalize?

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.

7. Was ist das Problem mit Diamanten? Das Diamantproblem spiegelt wider, warum Mehrfachvererbung in Java nicht zulässig ist. Wenn es zwei Klassen gibt, die eine gemeinsame Superklasse mit einer bestimmten Methode haben, wird diese in beiden Unterklassen überschrieben. Wenn Sie sich dann entscheiden, von beiden Unterklassen zu erben, kann die Sprache nicht entscheiden, welche Methode Sie aufrufen möchten, wenn Sie sie aufrufen möchten

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?

Ich denke, das ist ein ziemlich schwieriges Problem. Sie müssen einige Änderungen an Ihrer Klasse vornehmen, um Unveränderlichkeit zu erreichen:

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?

Singleton ist eine Klasse, die nur die Erstellung einer Instanz von sich selbst zulässt und Zugriff auf die erstellte Instanz bietet. Es enthält statische Variablen, die eindeutige und private Instanzen von sich selbst enthalten können. Es kann verwendet werden, wenn der Benutzer die Instanziierung einer Klasse auf ein Objekt beschränken möchte. Dies ist oft hilfreich, wenn ein einzelnes Objekt benötigt wird, um Vorgänge systemübergreifend zu koordinieren.

10. Was ist Abhängigkeitsinjektion?

Dies ist die erste Frage, die Sie wissen müssen, wenn Sie in Java EE oder Spring arbeiten. Inversion of Control (IoC) ist ein Entwurfsprinzip in der objektorientierten Programmierung, mit dem die Kopplung zwischen Computercodes reduziert werden kann. Die gebräuchlichste Methode heißt Dependency Injection (DI), die andere Methode heißt „Dependency Lookup“. Durch die Umkehrung der Kontrolle übergibt eine externe Entität, die alle Objekte im System steuert, bei der Erstellung eines Objekts die Referenz des Objekts, von dem sie abhängt, an dieses. Man kann auch sagen, dass Abhängigkeiten in das Objekt eingefügt werden.

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

Meiner Erfahrung nach sind die wichtigsten Fragen heute. Wenn Sie das wissen, werden Sie meiner Meinung nach im Rekrutierungsprozess einen großen Vorteil haben.

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-Tutorial

Das 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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen