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 superthis:
(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!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Um JDBC -Transaktionen korrekt zu verarbeiten, müssen Sie zun?chst den automatischen Komiti -Modus ausschalten und dann mehrere Vorg?nge ausführen und schlie?lich entsprechend den Ergebnissen festlegen oder rollen. 1. Nennen Sie Conn.SetAutoCommit (False), um die Transaktion zu starten. 2. Führen Sie mehrere SQL -Operationen aus, z. B. einfügen und aktualisieren. 3. Rufen Sie Conn.Commit () an, wenn alle Vorg?nge erfolgreich sind, und rufen Sie Conn.Rollback () auf, wenn eine Ausnahme auftritt, um die Datenkonsistenz zu gew?hrleisten. Gleichzeitig sollten Try-with-Ressourcen verwendet werden, um Ressourcen zu verwalten, Ausnahmen ordnungsgem?? zu behandeln und Verbindungen zu schlie?en, um Verbindungsleckage zu vermeiden. Darüber hinaus wird empfohlen, Verbindungspools zu verwenden und Save -Punkte zu setzen, um teilweise Rollback zu erreichen und Transaktionen so kurz wie m?glich zu halten, um die Leistung zu verbessern.

ThejvMenablesJavas "Writeonce, Runanywhere" -CapabilityByexecutingByteCodethroughfourMainComponents: 1.TheClassloadersubStemLoads, Links, undinitializes

Verwenden Sie Klassen im Java.Time -Paket, um das alte Datum und die Kalenderklassen zu ersetzen. 2. Erhalten Sie das aktuelle Datum und die aktuelle Uhrzeit durch LocalDate, LocalDatetime und Local Time; 3. Erstellen Sie ein bestimmtes Datum und eine bestimmte Uhrzeit mit der von () Methode; 4.. Verwenden Sie die Plus/Minus -Methode, um die Zeit nicht zu erh?hen und zu verkürzen. 5. Verwenden Sie ZonedDatetime und zoneId, um die Zeitzone zu verarbeiten. 6. Format und analysieren Sie Datumszeichenfolgen über DateTimeFormatter; 7. Verwenden Sie sofortige, um bei Bedarf mit den alten Datumstypen kompatibel zu sein. Die Verarbeitung der Datum in der modernen Java sollte der Verwendung von Java.Timeapi vorrangig machen, was klare, unver?nderliche und linear ist

Pre-Formancetartuptimemoryusage, QuarkusandmicronautleadduToCompile-Time-foringandgraalvSupport, WithQuarkusofttenperformLightBetterin serverloser Szenarien.2. Thyvelopecosystem,

Networkportsandfirewallsworktogethertoenablecommunicationwhileensuringsecurity.1.Networkportsarevirtualendpointsnumbered0–65535,withwell-knownportslike80(HTTP),443(HTTPS),22(SSH),and25(SMTP)identifyingspecificservices.2.PortsoperateoverTCP(reliable,c

Die Müllsammlung von Java (GC) ist ein Mechanismus, der automatisch den Speicher verwaltet, der das Risiko eines Speicherlecks verringert, indem unerreichbare Objekte zurückgeführt werden. 1.GC beurteilt die Zug?nglichkeit des Objekts aus dem Stammobjekt (z. B. Stapelvariablen, aktive Threads, statische Felder usw.) und nicht erreichbare Objekte als Müll markiert. 2. Basierend auf dem markierten Algorithmus markieren Sie alle erreichbaren Objekte und l?schen Sie nicht markierte Objekte. 3.. Verfolgen Sie eine Generationskollektionsstrategie: Die neue Generation (Eden, S0, S1) führt h?ufig MollGC aus; Die ?lteren Menschen erzielen weniger, dauert jedoch l?nger, um MajorGC durchzuführen. MetaPace speichert Klassenmetadaten. 4. JVM bietet eine Vielzahl von GC -Ger?ten: SerialGC ist für kleine Anwendungen geeignet; ParallelgC verbessert den Durchsatz; CMS reduziert sich

GradleStheBetterChoiceFormostnewProjectsDuetoitSuperiorFlexibilit?t, Leistung und ModerntoolingSupport.1.GRADLE'SGROOVY/KOTLINDSLISMORECONCISEANDEIPRESSIVETHANMANMANBOSEXML.2.GRAGRECONCISEANDEPRPRESSIVETHANMAVENSVOSEXML.2.

Auf Defer wird verwendet, um bestimmte Vorg?nge auszuführen, bevor die Funktion zurückgibt, z. B. die Reinigungsressourcen. Die Parameter werden sofort bewertet, wenn sie aufgeschoben werden, und die Funktionen werden in der Reihenfolge von Last-In-First-Out (LIFO) ausgeführt. 1. Mehrere Defers werden in umgekehrter Reihenfolge der Erkl?rungen ausgeführt. 2. h?ufig für die sichere Reinigung wie das Schlie?en von Dateien verwendet; 3. Der benannte Rückgabewert kann ge?ndert werden; V. 5. Vermeiden Sie den Missbrauch von Verschiebungen in Schleifen, um Ressourcenleckage zu verhindern. Die korrekte Verwendung kann die Sicherheit und die Lesbarkeit der Code verbessern.
