Heim  >  Artikel  >  Java  >  Die 8 häufigsten Fehler bei Java-Interviewfragen

Die 8 häufigsten Fehler bei Java-Interviewfragen

(*-*)浩
(*-*)浩Original
2019-11-11 14:21:362004Durchsuche

Die 8 häufigsten Fehler bei Java-Interviewfragen

1. Verwendung von Statik und Endgültigkeit

Die Rolle von Statik kann unter drei Aspekten diskutiert werden, nämlich statische Variablen, statische Methoden und statische Art.

Statische Variablen: Als statisch deklarierte statische Variablen sind im Wesentlichen globale Variablen. Wenn ein Objekt deklariert wird, wird keine Kopie der statischen Variablen generiert, sondern alle Instanzvariablen der Klasse teilen sich gleich Eine statische Variable. Mit anderen Worten: Diese statische Variable wird nur einmal geladen und nur ein Teil des Speicherplatzes zugewiesen.

Statische Methoden: Als statisch deklarierte statische Methoden haben die folgenden Eigenschaften:

(1) Statische Methoden können nur statische Methoden aufrufen;

(2 ) Statische Methoden können nur auf statische Daten zugreifen.

(3) Statische Methoden können in keiner Weise auf this oder super verweisen.

Statische Klasse: Normalerweise eine gewöhnliche Klassendeklaration als Statisch ist nicht zulässig, nur eine innere Klasse ist zulässig (die Hauptmethode ist ein typisches Beispiel). Zu diesem Zeitpunkt kann die deklarierte statische Klasse direkt als normale Klasse verwendet werden, ohne dass eine externe Klasse instanziiert werden muss.

Die Rolle von final kann aus drei Aspekten verstanden werden: Variablen, Methoden und Klassen:

Der Wert einer durch final geänderten Variablen kann nicht geändert werden und ist eine Konstante; >Endgültig geänderte Methoden können nicht überschrieben werden.

Der Unterschied zwischen abstrakten Klassen und Schnittstellen Schnittstelle mehrere Klassen erben? Kann eine Klasse mehrere Schnittstellen implementieren?

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 Klassenobjekte verweisen, die diese implementieren alle Schnittstellenmethoden. Abstrakte Klassen müssen von Unterklassen geerbt werden und Schnittstellen müssen von Klassen implementiert werden.

Abstrakte Klassen können nur Methodendeklarationen und Methodenimplementierungen vornehmen.

Variablen, die in Schnittstellen definiert sind, können nur öffentliche statische Konstanten sein.

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.

Abstrakte Methoden können nur deklariert, nicht implementiert werden. abstraktes void abc(); kann nicht als abstraktes void abc(){} geschrieben werden.

Abstrakte Klassen benötigen keine abstrakten Methoden.

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

Abstrakte Methoden müssen implementiert werden, sie dürfen also nicht statisch oder privat sein.

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

3. Funktionen und Verwendung von this und super

this:

(1) Kann auf alle außer Konstruktormethoden zugreifen Eigenschaften und Methoden werden dadurch aufgerufen. (2) Kann nicht in statischen Methoden verwendet werden.

(3) Verwenden Sie diese (Parameterliste) im Konstruktor, um andere Konstruktionsmethoden dieser Klasse aufzurufen im ersten Satz der Bauweise zu platzieren.

super:

Zugriff auf die Methoden und Attribute der übergeordneten Klasse

(1) Zugriff auf die Methoden und Attribute der übergeordneten Klasse; ) Im Konstruktor Der Konstruktor der übergeordneten Klasse wird über super (Parameterliste) aufgerufen, die in der ersten Zeile des Konstruktors der Unterklasse platziert werden muss.

4. Der Unterschied zwischen „final“, „finalize“ und „finalize?“ kann keine neuen Unterklassen ableiten, d. h. es kann nicht vererbt werden. Durch die Deklaration von Variablen als final wird sichergestellt, dass sie während der Verwendung nicht geändert werden. Als final deklarierte Variablen können nur gelesen und nach der Initialisierung nicht in Referenzen geändert werden. Als final deklarierte Methoden können nur in Unterklassen verwendet und nicht überschrieben werden.

Endlich: Normalerweise nach try...catch platziert, führt die Struktur immer den Codeblock aus, was bedeutet, dass der Code hier unabhängig davon, ob das Programm normal ausgeführt wird oder eine Ausnahme auftritt, so lange ausgeführt werden kann Die JVM ist nicht geschlossen und der externe Code kann freigegeben werden. Der Ressourcencode wird in den Final-Block geschrieben.

finalize: Eine in der Object-Klasse definierte Methode ermöglicht die Verwendung der finalize()-Methode, um notwendige Bereinigungsarbeiten durchzuführen, bevor der Garbage Collector das Objekt aus dem Speicher löscht. Diese Methode wird vom Garbage Collector aufgerufen, wenn er ein Objekt zerstört. Durch Überschreiben der finalize()-Methode können Sie Systemressourcen organisieren oder andere Bereinigungsarbeiten durchführen.

5. Was ist der Unterschied zwischen Fehler und Ausnahme?

Fehler stellt Fehler und Ausnahmen auf Systemebene dar, die das Programm nicht behandeln muss Wenn eine Wiederherstellung nicht unmöglich, aber schwierig ist, kann man nicht erwarten, dass das Programm eine solche Situation bewältigt durch das Programm, bei dem es sich um ein Entwurfs- oder Implementierungsproblem handelt, das eine Situation darstellt, die bei normaler Ausführung des Programms niemals auftreten würde.

6. Erklären Sie den Lebenszyklus von Servlet und den Unterschied zwischen Servlet und CGI.

Nachdem das Servlet vom Server instanziiert wurde, führt der Container seine Init-Methode aus, und wenn die Anforderung eintrifft, führt er seine Dienstmethode aus. Die Dienstmethode sendet automatisch die der Anforderung entsprechende doXXX-Methode (doGet, doPost) usw ., wenn der Server beschließt, die Instanz zu zerstören. Der Unterschied zwischen

und CGI besteht darin, dass sich das Servlet im Serverprozess befindet. Es führt seine Dienstmethode über Multithreading aus und seine Instanz wird im Allgemeinen nicht zerstört, während CGI jede Anfrage verarbeitet Beide generieren neue Prozesse und zerstören den Dienst nach Abschluss, sodass die Effizienz geringer ist als bei Servlet.

7. Wie verhindert man eine Cache-Lawine?

Ursache:

Die Cache-Lawine kann darauf zurückzuführen sein, dass die Daten nicht in den Cache geladen werden oder der Cache gleichzeitig in einem großen Bereich ausfällt. Dies führt dazu, dass alle Anfragen die Datenbank abfragen, was zu einer zu hohen CPU- und Speicherauslastung der Datenbank oder sogar zu Ausfallzeiten führt.

Entsprechende Lösung:

Verwenden Sie die Sperrenanzahl oder eine angemessene Anzahl von Warteschlangen, um zu viel Druck auf die Datenbank zu vermeiden, wenn der Cache ausfällt. Obwohl diese Methode die Datenbank entlasten kann, verringert sie auch den Durchsatz des Systems.

Analysieren Sie das Benutzerverhalten und versuchen Sie, Fehlerzeitpunkte gleichmäßig zu verteilen. Vermeiden Sie Cache-Lawinen.

Wenn ein bestimmter Cache-Server ausgefallen ist, können Sie einen primären und einen Backup-Server in Betracht ziehen, z. B. einen Redis-Primär- und einen Backup-Server. Doppeltes Caching beinhaltet jedoch Aktualisierungstransaktionen, und die Aktualisierung liest möglicherweise fehlerhafte Daten, was behoben werden muss.

8. Sprechen Sie über Ihr Verständnis von MVC

MVC ist die Abkürzung für Model-View-Controler. Das ist Model-View-Controller. MVC ist ein Entwurfsmuster, das die Trennung von Anwendungseingabe, -verarbeitung und -ausgabe erzwingt.

Die Modelle, Ansichten und Controller in MVC sind für unterschiedliche Aufgaben verantwortlich.

Ansicht: Eine Ansicht ist die Schnittstelle, die Benutzer sehen und mit der sie interagieren. Ansichten zeigen dem Benutzer relevante Daten an und akzeptieren Eingaben des Benutzers. Ansichten führen keine Geschäftslogikverarbeitung durch.

Modell: Das Modell stellt Geschäftsdaten und Geschäftsverarbeitung dar und entspricht JavaBean. Ein Modell kann Daten für mehrere Ansichten bereitstellen. Dies verbessert die Wiederverwendbarkeit von Anwendungen.

Controller: Wenn der Benutzer auf der Webseite auf die Schaltfläche „Senden“ klickt, akzeptiert der Controller die Anfrage und ruft das entsprechende Modell auf, um die Anfrage zu verarbeiten, und ruft dann die entsprechende Ansicht auf, um das Verarbeitungsergebnis basierend auf der Verarbeitung anzuzeigen Ergebnis.

MVC-Verarbeitungsprozess: Zunächst akzeptiert der Controller die Anfrage des Benutzers, ruft das entsprechende Modell für die Geschäftsverarbeitung auf und gibt Daten an den Controller zurück. Der Controller ruft die entsprechende Ansicht auf, um die Verarbeitungsergebnisse anzuzeigen. und dem Benutzer durch Ansichten präsentiert.

Das obige ist der detaillierte Inhalt vonDie 8 häufigsten Fehler bei Java-Interviewfragen. 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