Der Herausgeber hat die schriftlichen Testfragen im sehr beliebten Interview 2017 für Freunde, die Java -Programmierer interviewen, zusammengestellt. Wenn Sie ein Leser sind, der sich darauf vorbereitet, Java -Programmierer zu interviewen, lernen Sie es schnell kennen.
1. Die folgende Anweisung ist korrekt ()
A. Zwei öffentlich modifizierte Klassen können gleichzeitig in einer Datei existieren.
B. Der Konstruktor kann überschrieben werden
C. Unterklassen können nicht auf Eigenschaften zugreifen, die von der übergeordneten Klasse nicht durch öffentliche und geschützte Klasse geändert werden.
D.Final modifizierte Klassen können vererbt werden
Antwort: c
Es kann nur eine öffentliche Klasse in einer Java -Quelldatei geben. Wenn es eine öffentliche Klasse gibt, muss der Ausgangsdateiname damit übereinstimmen, andernfalls kann er nicht kompiliert werden. Wenn in der Quelldatei keine öffentliche Klasse vorhanden ist, gibt es keine Konsistenzanforderung zwischen dem Dateinamen und der Klasse. Was Main () betrifft, muss es nicht in der öffentlichen Klasse platziert werden, um das Programm durchzuführen.
Umschreiben besteht darin, die Methoden der übergeordneten Klasse zu ändern, nachdem die untergeordnete Klasse von der übergeordneten Klasse geerbt wurde. Der Methodenname, der Parameter und der Rückgabewert müssen gleich sein. Die endgültigen Methoden können nicht umschreiben. Wenn Sie eine Methode nicht erben können, können Sie diese Methode nicht überschreiben.
Erweiterung: Der Unterschied zwischen Umschrieben überschrieben und Überlastung überlastet
Überlastung von Java -Methoden
Es ist so, dass in einer Klasse mehrere Methoden erstellt werden können, die denselben Namen haben, jedoch unterschiedliche Parameter und unterschiedliche Definitionen haben. Beim Aufrufen von Methoden wird die spezifische Methode durch die Anzahl verschiedener Parameter und Parametertypen bestimmt, die ihnen übergeben wurden. Die Rückgabewerttypen können gleich oder unterschiedlich sein, was auch ein objektorientierter Polymorphismus ist.
Java -Methode Umschreiben
Der Polymorphismus zwischen der übergeordneten Klasse und der Kinderklasse definiert die Funktionen der übergeordneten Klasse neu. Wenn eine in einer Unterklasse definierte Methode denselben Namen und Parametern wie seine übergeordnete Klasse hat, sagen wir, dass die Methode überschrieben ist. In Java können Unterklassen Methoden aus der übergeordneten Klasse erben, ohne dieselbe Methode neu zu schreiben. Manchmal möchte die Unterklasse die Methoden der Elternklasse nicht intakt erben, sondern bestimmte Änderungen vornehmen, was erforderlich ist, um die Methode neu zu schreiben. Das Überschreiben von Methoden wird auch als Methodenüberschreibung bezeichnet.
Wenn eine Methode in einer Unterklasse denselben Methodennamen, Rückgabetyp und Parametertabelle wie eine Methode in der übergeordneten Klasse hat, überschreibt die neue Methode die ursprüngliche Methode. Wenn Sie die ursprüngliche Methode in der übergeordneten Klasse benötigen, können Sie das Super -Keyword verwenden, das sich auf die übergeordnete Klasse der aktuellen Klasse bezieht.
Die Zugriffsmodifikationsberechtigungen von Unterklassenfunktionen können nicht geringer sein als die der übergeordneten Klasse.
Umschreiben Sie Methoden nur in Vererbungsbeziehungen, und Umschreiben von Methoden können nur Methoden neu schreiben, die in der Elternklasse nicht privat sind.
2. Die Anzahl der Ausführungszeiten der für (int x = 0, y = 0; (y! = 0) && (x <4); x ++) Schleife IS ()
A. Unbegrenzte Zeiten
B. 4 -mal ausführen
C. 3 -mal ausführen
D. Führen Sie es nicht einmal aus
Antwort: d
Der Anfangswert von y beträgt 0. In der gesamten für die Schleife bleibt der Wert von y unverändert, sodass die Urteilsaussage (y! = 0) nicht wahr ist, sodass er nicht einmal ausgeführt wird.
3. In Bezug auf den Java Heap ist die folgende Erklärung falsch ()
A. Alle Instanzen und Klassenarrays werden auf dem Haufen Speicher zugewiesen.
B. Der vom Objekt besetzte Heap -Speicher wird vom automatischen Speicherverwaltungssystem gesammelt.
C. Heap -Gedächtnis besteht aus überlebenden und toten Objekten und freien Fragmenten.
D. Arrays werden im Stapel zugewiesen
Antwort: d
Zunächst wird das Array im Haufen zugewiesen, sodass die Aussage von D falsch ist.
Die Struktur des Java -Heaps: Der Haufen des JVM ist der Laufzeitbereich, und alle Instanzen und Klassenarrays werden auf dem Haufen Speicher zugewiesen. Es wird erstellt, wenn der JVM gestartet wird. Der vom Objekt besetzte Heap -Speicher wird vom automatischen Speicherverwaltungssystem gesammelt, dh dem Müllsammler. Das Heap -Speicher besteht aus Objekten, die überleben und sterben. Die überlebenden Objekte sind für die Anwendung zugänglich und sind nicht Müll gesammelt. Das tote Objekt ist ein Objekt, das für die Anwendung nicht zugänglich ist und vom Müllsammler nicht recycelt wurde. Sie belegen den Heap -Speicherraum, bis der Müllsammler diese Objekte zurückerobert.
4. Bei Verwendung des Super- und dieser Schlüsselwörter lautet die richtige Beschreibung unten () ()
A. Verwenden Sie Super () im Unterklassenkonstruktor, um den Konstruktor anzuzeigen, der die übergeordnete Klasse aufruft.
Super () muss in der ersten Zeile des Unterklassenkonstruktors geschrieben werden, andernfalls wird die Zusammenstellung nicht übergeben.
B.super () und dies () müssen nicht in der ersten Zeile in der Konstruktor -Methode platziert werden
C.This () und Super () können gleichzeitig in einem Konstruktor erscheinen
D. This () und Super () können in statischen Umgebungen verwendet werden, einschließlich statischer Methoden und statischer Anweisungsblöcke
Antwort: a
Das Java -Schlüsselwort Dies kann nur in der Methodenkörper verwendet werden. Wenn ein Objekt erstellt wird, weist die Java Virtual Machine (JVM) dem Objekt, das sich auf sich selbst bezieht, einen Zeiger zu, und der Name dieses Zeigers ist dies. Daher kann dies nur in nicht statischen Methoden in der Klasse verwendet werden, und dies darf nicht in statischen Methoden und statischen Codeblöcken erfolgen.
Der Schlüssel zu Super ist ähnlich, was darin besteht, dass die blockierte Elementvariable oder die Mitgliedsmethode sichtbar wird oder auf die blockierte Elementvariable und die Mitgliedsmessmethode bezeichnet.
Super wird jedoch in Unterklassen verwendet, um auf blockierte Mitglieder in der direkten Elternklasse zuzugreifen. Beachten Sie, dass es sich um die direkte übergeordnete Klasse handelt (das ist die neueste Superklasse über der Klasse)
5. Welche der folgenden Aussagen ist korrekt ()
A. Nachdem das Java -Programm zusammengestellt wurde, wird der Maschinencode generiert
B. Das Java -Programm erzeugt nach dem Zusammenstellen einen Byte -Code.
C. Java -Programme generieren DLLs, nachdem sie zusammengestellt wurden
D. Keiner der oben genannten ist korrekt
Antwort: b
Java Bytecode ist eine Zwischendatei, die von der Java -Quelldateikompilierung generiert wird
Die plattformübergreifende Natur der virtuellen Java-Maschinen ist ein imaginärer Computer, der Java-Bytecode ausführen kann. Es ist auch relativ ähnlich wie bei anderen Programmiersprachen.
Lassen Sie uns zunächst den Kompilierungsprozess der C -Sprache vorstellen: Die C -Datei wird vom C -Compiler -Programm zusammengestellt und generiert die ausführbare Windows -Dateidatei und wird dann in Windows ausgeführt.
Lassen Sie uns den Java -Kompilierungsprozess vorstellen: Die Java -Datei wird vom Java -Compiler zusammengestellt. Die Java -Bytecode -Datei ist die Klassendatei in der virtuellen Java -Maschine. Der Maschinencode wird von der CPU ausgeführt; Java wird mit Bytecode zusammengestellt.
Computer können nur Maschinencodes ausführen. Wenn Java ausgeführt wird, verwandelt es Bytecode in den Maschinencode. C/C ++ wird beim Kompilieren direkt in den Maschinencode kompiliert
6. Welche der folgenden Aussagen ist korrekt ()
A. Der abstrakte Modifikator modifiziert Felder, Methoden und Klassen
B. Der Körperteil der abstrakten Methode muss in ein Paar Klammern eingewickelt werden {}
C. Abstrakten Methoden deklarieren, Zahnspangen sind optional
D. Deklarieren Sie abstrakte Methoden können nicht in Zahnspangen geschrieben werden
Antwort: d
Der abstrakte Modifikator wird verwendet, um Klassen und Mitgliedsmethoden zu ändern
Mit Abstract modifizierte Klassen repräsentieren abstrakte Klassen. Abstrakte Klassen befinden sich in der abstrakten Schicht des Vererbungsbaums. Abstrakte Klassen können nicht instanziiert werden.
Die abstrakte Methode wird verwendet, um eine abstrakte Methode auszudrücken, und die abstrakte Methode hat keinen Methodenkörper. Abstrakte Methoden werden verwendet, um zu beschreiben, welche Funktionen das System hat, aber keine spezifischen Implementierungen bereitstellen.
Abstract ist ein wichtiges Schlüsselwort in Java und kann verwendet werden, um eine Klasse oder eine Methode zu ändern.
Wenn eine Methode geändert wird, bedeutet dies, dass die Methode nur eine Merkmalssignatur (Signatur) aufweist und keine spezifischen Implementierungen hat, sondern die spezifische Implementierung in der Unterklasse, die die Klasse erbt, überlässt, sodass es keine Klammern gibt.
7. Die folgenden Aussagen sind korrekt ()
A. Der Konstruktor in der Klasse kann nicht weggelassen werden
B. Der Konstruktor muss denselben Namen wie die Klasse haben, aber die Methode kann nicht denselben Namen wie die Klasse haben
C. Der Konstruktor wird ausgeführt, wenn ein Objekt neu ist
D. Eine Klasse kann nur einen Konstruktor definieren
Antwort: c
Es kann hier Missverständnisse geben. Tatsächlich können gewöhnliche Klassenmethoden den gleichen Namen wie der Klassenname haben. Der einzige Unterschied zwischen ihnen und dem Konstruktor besteht darin, dass der Konstruktor keinen Rückgabewert hat.
8. Ist der GC -Thread ein Daemon -Thread ()
Antwort: Ja
Die Themen werden in Daemon-Threads und nicht-daemon-Threads (d. H. Benutzer-Threads) unterteilt.
Solange es in der aktuellen JVM-Instanz keinen Nicht-Daemon-Thread gibt, funktioniert der Daemon-Thread alle. Erst wenn der letzte Nicht-Dahemon-Thread endet, arbeitet der Daemon-Thread mit dem JVM.
Die typischste Anwendung von Daemon -Threads ist GC (Müllsammler)
9. In Bezug auf Sleep () und Wait () ist der folgende Fehler () ()
A. Schlaf ist eine Methode der Thread -Klasse (Thread), Warten ist eine Methode der Objektklasse;
B. Der Schlaf löst das Objektschloss nicht frei. Warten Sie das Objektschloss.
C. Schlafpausen fädelt, aber der Überwachungsstatus bleibt bestehen und wird nach dem Ende automatisch wieder aufgenommen.
D. Geben Sie nach dem Warten den Warteschleusenpool ein. Erst nach der Ausgabe der Benachrichtigungsmethode für dieses Objekt wird die Objektschloss erhalten und tritt in den laufenden Status ein.
Antwort: d
Der Schlaf ist eine Methode der Thread -Klasse (Thread), die dazu führt, dass dieser Thread die Ausführung für eine bestimmte Zeit pausiert und anderen Thread Ausführungsmöglichkeiten bietet. Der Überwachungsstatus bleibt jedoch bestehen und wird danach automatisch fortgesetzt. Wenn Sie den Schlaf anrufen, wird das Objektschloss nicht freigegeben.
Warten ist eine Methode der Objektklasse. Wenn Sie die Warteverfahren auf diesem Objekt aufrufen, gibt der Thread die Objektschloss auf und gägt den Warteschleusenpool auf, der auf dieses Objekt wartet. Erst nach der Ausgabe einer Benachrichtigungsmethode (oder der Benachrichtigung) für dieses Objekt tritt dieser Thread in den Objektsperrpool ein und bereitet sich darauf vor, die Objektschloss zu erhalten und in den laufenden Status zu gelangen.
10. Die Methode Resume () ist für die Wiederherstellung der Ausführung verantwortlich, deren Threads () wiederhergestellt werden
A, ein Thread, der durch Aufrufen der Stop () -Methode gestoppt wird.
B, ein Faden, der gestoppt wird, indem Sie die Sleep () -Methode aufrufen.
C, ein Thread, der gestoppt wird, indem die Wait () -Methode aufgerufen wird.
D, ein Thread, der gestoppt wird, indem die methode suspend () aufgerufen wird.
Antwort: d
Suspend kann einen Thread aussetzen, was bedeutet, den Thread auszusetzen. Es nimmt Ressourcen ein, läuft aber nicht. Verwenden Sie den Lebenslauf, um den suspendierten Thread wiederherzustellen und den Thread weiter auszuführen.