Heim  >  Artikel  >  Java  >  Fragen zum Vorstellungsgespräch für Java-Praktikanten (mit Antworten)

Fragen zum Vorstellungsgespräch für Java-Praktikanten (mit Antworten)

(*-*)浩
(*-*)浩Original
2019-11-28 13:39:064230Durchsuche

Fragen zum Vorstellungsgespräch für Java-Praktikanten (mit Antworten)

1. Was sind die Java-Container-Frameworks?

Es gibt zwei Schnittstellen namens Collection und Set im Java-Container-Framework

2. Liste, Karte, Menge, Array, was sind die Unterschiede zwischen ihnen                                                                                                                                                                                                                          Implementierungsklassen: LinkedList, ArrayList, Vector.LinkedList: Die zugrunde liegende Implementierung basiert auf einer verknüpften Liste . Der verknüpfte Listenspeicher ist verstreut und speichert auch die Adresse des nächsten Elements.

Der Unterschied zwischen ArrayList und Vector: ArrayList ist nicht threadsicher und weist eine hohe Effizienz auf basiert auf Thread-Sicherheit und weist eine geringe Effizienz auf.

1) Die Set-Schnittstelle verfügt hauptsächlich über zwei Implementierungsklassen: HashSet (die unterste Ebene wird durch HashMap implementiert) und LinkedHashSet

2) Die Map-Schnittstelle implementiert hauptsächlich die Klassen HashMap, HashTable und LinkedHashMap

HashMap ist nicht threadsicher, effizient und unterstützt NULL; HashTable ist threadsicher, ineffizient und unterstützt nicht NULL

Array: Array, das Objekte und grundlegende Datentypen speichern kann, mit fester Länge.

Liste: Die Elemente sind geordnet und wiederholbar

Satz: Die Elemente sind ungeordnet, nicht wiederholt und haben keinen Index.

Map: eine zweispaltige Sammlung, die zum Speichern von Schlüssel-Wert-Paaren verwendet wird. Schlüsselwerte sind einzigartig und können nicht wiederholt werden.

3. Was ist der Unterschied zwischen Sammlung und Sammlungen

a.javautil.Collection ist eine Sammlungsschnittstelle. Es bietet allgemeine Schnittstellenmethoden für grundlegende Operationen an Sammlungsobjekten. Die Collection-Schnittstelle verfügt über viele spezifische Implementierungen in der Java-Klassenbibliothek. Die Bedeutung der Collection-Schnittstelle besteht darin, eine möglichst einheitliche Betriebsmethode für verschiedene spezifische Collections bereitzustellen. b.java.util.Collections ist eine Wrapper-Klasse. Es enthält verschiedene statische polymorphe Methoden im Zusammenhang mit Sammlungsvorgängen. Diese Klasse kann nicht instanziiert werden und ähnelt einer Dienstprogrammklasse, die das Collection-Framework von Java bedient.

4. Was sind die Unterschiede zwischen String, Stringbuilder und Stringbuffer?

Die im Programm verwendeten Strings können in zwei Kategorien unterteilt werden: Die eine besteht darin, dass dies nicht der Fall ist kann nach der Erstellung erneut verwendet werden. Die andere ist eine Zeichenfolgenvariable, die nach der Erstellung geändert werden kann. Da das Programm häufig Operationen wie Vergleiche und Suchvorgänge für den ersteren Typ von Zeichenfolgenvariablen ausführen muss, wird es normalerweise in einem Objekt mit einem bestimmten Namen platziert. Für die oben genannten Operationen an Objekten In Java-Programmen gespeicherte Zeichenfolgenvariablen sind Variablen der Zeichenfolgenklasse.

Da letztere Zeichenfolgenvariablen häufig zum Hinzufügen, Einfügen, Ändern usw. in das Programm eingefügt werden müssen, handelt es sich im Allgemeinen um Zeichenfolgenvariablen dieser Art in Objekten der StringBuilder-Klasse gespeichert.

String-String-Variable,

StringBuffer-String-Variable (Thread-sicher),

StringBuilder-String-Variable (nicht Thread-sicher)

5. Was ist der Unterschied zwischen == und equal? ​​

Wenn Sie zwei Zeichen im Programm vergleichen, verwenden Sie den Vergleichsoperator „==", und wenn Sie zwei Zeichenfolgen vergleichen, müssen Sie den Gleichheitsoperator verwenden ()-Methode.

6. Der Unterschied zwischen & und &&

&& ist ein prägnanter Operator und & ist ein nicht prägnanter Operator. Der Unterschied zwischen prägnanten Operatoren (&&, ||) und nicht prägnanten Operatoren (&, |) besteht darin, dass nicht prägnante Operationen die linken und rechten Ausdrücke berechnen müssen, bevor sie den Ergebniswert übernehmen, während prägnante Ausdrücke möglicherweise nur den linken Ausdruck ohne berechnen Berechnen des Ausdrucks auf der rechten Seite, d. h. für den Ausdruck &&, solange der Ausdruck auf der linken Seite falsch ist, wird der Ausdruck auf der rechten Seite nicht berechnet und der gesamte Ausdruck ist für || falsch; Der Ausdruck auf der linken Seite ist wahr. Wenn der Ausdruck auf der rechten Seite nicht ausgewertet wird, ist der gesamte Ausdruck wahr.

7. Der Unterschied zwischen Programmen, Prozessen und Threads

1) Ein Programm ist eine Datei mit Anweisungen und Daten, die auf einer Festplatte oder einem anderen Datenspeichergerät gespeichert ist, was bedeutet, dass es sich bei dem Programm um statischen Code handelt. 2) Ein Prozess ist ein Ausführungsprozess eines Programms und die Grundeinheit für das System zum Ausführen von Programmen, daher ist der Prozess dynamisch. Das Ausführen eines Programms auf dem System ist der Prozess von der Erstellung über den Betrieb bis zum Tod eines Programms. Einfach ausgedrückt ist ein Prozess ein ausführendes Programm, das nacheinander Anweisungen im Computer ausführt. Gleichzeitig belegt jeder Prozess auch bestimmte Systemressourcen, wie z. B. CPU-Zeit, Speicherplatz, Dateien sowie Speicherorte für Eingabe- und Ausgabegeräte. Nutzungsrechte etc.

3) Thread: Tatsächlich ähnelt es einem Prozess. Es ist auch ein ausführendes Programm, aber ein Thread ist eine kleinere Ausführungseinheit als ein Prozess. Ein Prozess kann während der Ausführung mehrere Threads generieren und so mehrere Ausführungspfade bilden. Im Gegensatz zu Prozessen teilen sich jedoch mehrere Threads desselben Typs denselben Speicherplatz und eine Reihe von Systemressourcen. Daher ist die Belastung beim Generieren eines Threads oder beim Wechseln zwischen Threads viel geringer als bei einem Prozess Aus diesem Grund werden Threads auch als Lightweight-Prozesse bezeichnet.

8. Was sind die Zustände eines Threads

Es gibt fünf Zustände: neuer Zustand, Bereitschaftszustand, laufender Zustand, Blockierungszustand und Todeszustand

9. Der Unterschied zwischen gegenseitigem Thread-Ausschluss und Synchronisierung

Gegenseitiger Ausschluss bedeutet, dass zwei oder mehr Threads nicht gleichzeitig ausgeführt werden können, während Synchronisierung bedeutet, dass die Ausführung von zwei oder mehr Threads einer sequentiellen Einschränkung unterliegt.

10. Was ist der Unterschied zwischen Thread-Synchronisation und gemeinsam genutzten Daten?

Freigabe bezieht sich auf die gemeinsame Nutzung von Speicherdaten zwischen Threads, da Threads gemeinsam Eigentümer der Daten im sind Speicherplatz Dies führt zu Dateninkonsistenzen, da mehrere Threads gleichzeitig Daten verarbeiten. Daher wird zur Lösung dieses Problems eine Synchronisierung vorgeschlagen, die auf der gemeinsamen Nutzung basiert mehrere Threads.

Synchronisierung bedeutet, dass der Thread, der Daten verarbeitet, keine Daten verarbeiten kann, die andere Threads noch nicht verarbeitet haben, aber andere Daten verarbeiten kann.

11. Der Unterschied zwischen Thread-Synchronisation und Asynchronität

Thread-Synchronisation besteht darin, dass mehrere Threads gleichzeitig auf dieselbe Ressource zugreifen und darauf warten, dass der Ressourcenzugriff endet. Dies ist Zeitverschwendung und geringe Effizienz. Greifen Sie beim Zugriff auf Ressourcen auf andere Ressourcen zu, während Sie darauf warten, einen Multithreading-Mechanismus zu implementieren.

12. Was sind die Rundungsmethoden in Java

Die Math-Klasse bietet drei Methoden zum Runden: Decke, Boden, Rundung, diese Methoden Englische Namen, die darauf wirken, entsprechen einander. Zum Beispiel:

Die englische Bedeutung von ceil ist die Obergrenze. Das Ergebnis von Math.ceil (11.3) ist 12 von Math.ceil (- Das Ergebnis von 11.6) ist -11;

floor bedeutet auf Englisch „Boden“, und diese Methode bedeutet Abrunden Math.floor(-11.4) ist - 12;

Am schwierigsten zu beherrschen ist die Rundungsmethode. Der Algorithmus ist Math.floor(x+0.5), was bedeutet, dass 0,5 addiert wird Daher ist Math. Das Ergebnis von .round(11.5) ist 12 und das Ergebnis von Math.round(-11.5) ist -11.

Math.round() entspricht dieser Regel: Addieren Sie alle positiven Zahlen nach dem Dezimalpunkt, die größer als 5 sind, was 5 plus positive Zahlen entspricht. Addieren Sie nichts, das kleiner als 5 ist.

13. Worauf bezieht sich MVC?

M - Modellmodellebene, normalerweise werden die von uns geschriebenen Klassen in der Modellebene platziert

V - Ansicht ist die Ansichtsschicht, im Allgemeinen eine JSP-Seite

C - Kontrollschicht, einschließlich Aktion, Service, Dao, verarbeitungsbezogene Geschäftslogik

14. Was ist der Unterschied? zwischen Klassen und Objekten?

Eine Klasse ist eine Beschreibung einer bestimmten Art von Dingen, eine abstrakte und konzeptionelle Definition; und ein Objekt ist ein tatsächlich konkretes Individuum dieser Art von Dingen eine Instanz genannt.

15.Verwendung von Final?

a. Die Deklaration einer Klasse als finale Klasse, also als nicht geerbte Klasse, bedeutet, dass sie nicht vererbt werden kann andere Klassen.

b. Endgültiger Modifikator. Gibt an, dass der Wert dieser Variablen nicht geändert werden kann.

c. Letzter Modifikator. Gibt an, dass diese Methode nicht überladen werden kann.

Verwendung von Abstract

a. Die Deklaration einer Klasse als abstrakte Klasse hat keine Implementierungsmethode und erfordert eine Unterklasse, um die Implementierung der Methode bereitzustellen, also Instanzen davon Klasse kann nicht erstellt werden.

b. Abstrakter Modifikator. Geben Sie an, dass die Methode nur den Methodenheader ohne den Methodenkörper deklariert. Die abstrakte Methode muss in der Unterklasse implementiert werden.

Verwendung von Static

a. Gibt an, dass die Variable von allen Objekten gemeinsam genutzt wird, d. h. alle Instanzen können die Variable verwenden.

b. Endgültiger Modifikator. Gibt Methoden an, die aufgerufen werden können, ohne ein Objekt zu instanziieren.

16. Der Unterschied zwischen Mitgliedsvariablen und lokalen Variablen

In einer Klasse definierte Variablen sind Mitgliedsvariablen, während in einer Methode definierte Variablen lokale Variablen sind.

Unterschied:

a Aus grammatikalischer Sicht gehören Mitgliedsvariablen zur Klasse, während lokale Variablen in der Methode oder Parameter der Methode definiert sind ; Mitgliedsvariablen können durch öffentliche, private, statische und andere Modifikatoren geändert werden, während lokale Variablen nicht durch Zugriffskontrollmodifikatoren geändert werden können und sowohl statische als auch lokale Variablen durch final geändert werden können.

b. Aus der Perspektive der Speicherung von Variablen sind Mitgliedsvariablen Teil des Objekts und das Objekt existiert im Heap-Speicher, während lokale Variablen im Stapelspeicher existieren.

c. Aus der Perspektive der Überlebenszeit von Variablen im Speicher sind Mitgliedsvariablen Teil des Objekts, während lokale Variablen mit dem Aufruf der Methode generiert werden verschwinden dadurch automatisch.

d. Wenn einer Mitgliedsvariablen kein Anfangswert zugewiesen wird, wird ihr automatisch der Standardwert des Typs zugewiesen (es gibt eine Ausnahme: Die durch final, aber nicht durch static geänderte Mitgliedsvariable muss zugewiesen werden explizit); Lokale Variablen werden nicht automatisch zugewiesen und müssen explizit zugewiesen werden, bevor sie verwendet werden können.

Das obige ist der detaillierte Inhalt vonFragen zum Vorstellungsgespräch für Java-Praktikanten (mit Antworten). 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