Die Kernwissenspunkte des Java-Interviews – die neueste Version der Sammlung von Java-Interviewfragen

Vorwort

Der vorherige Artikel stellte einige häufige Interviewfragen in Java-Interviews vor und gab entsprechende Referenzantworten, darunter hauptsächlich Multithreading-Fragen in Java SE, einige häufige Interviewfragen zur Reflexion, das Kopieren von Objekten und häufige Fragen in Java Web. Einige Probleme. Dieser Artikel stellt Ihnen weiterhin häufige Interviewfragen in Java vor. Das erste, was ich Ihnen vorstellen werde, sind die häufigen abnormalen Probleme in Java:

1. Abnormal

1. Was ist der Unterschied zwischen Wurf und Würfen?

• throws: ist die Deklaration, dass eine Ausnahme ausgelöst werden darf.

2. Was ist der Unterschied zwischen „final“, „finally“ und „finalize“?

• final: Dies ist ein Modifikator. Wenn die Klasse geändert wird, kann die Klasse nicht vererbt werden. Wenn die Methode und die Variable geändert werden, bedeutet dies, dass die Methode und die Variable nicht geändert und nur verwendet werden können.

• final: Es ist der letzte Teil von try{} Catch{} Finally{}, was bedeutet, dass er ausgeführt wird, egal was passiert. Der Final-Teil kann weggelassen werden, aber wenn der Final-Teil vorhanden ist, ist der Code in Final vorhanden hingerichtet.

• finalize: Es handelt sich um eine Methode der Object-Klasse. Diese Methode des zurückgewonnenen Objekts wird aufgerufen, wenn der Garbage Collector ausgeführt wird.

3. Welcher Teil von try-catch-finally kann weggelassen werden?

try-catch-finally Sowohl „catch“ als auch „finally“ können weggelassen werden, jedoch nicht gleichzeitig. Das heißt, wenn ein „try“ vorliegt, muss ein „catch“ oder „finally“ folgen.

4. Wird in try-catch-finally schließlich noch ausgeführt, wenn es einen Return im Catch gibt?

„final“ wird ausgeführt. Selbst wenn es sich um „Return in Catch“ handelt, wartet „Return in Catch“ auf die Ausführung des Codes in „Finally“, bevor er ausgeführt wird.

5. Was sind die häufigsten Ausnahmeklassen?

• NullPointerException Nullzeigerausnahme

• ClassNotFoundException: Die angegebene Klasse existiert nicht

• NumberFormatException-String-to-Number-Ausnahme

• IndexOutOfBoundsException Array-Index-Ausnahme außerhalb der Grenzen

• ClassCastException-Datentypkonvertierungsausnahme

• FileNotFoundException-Ausnahme: Datei nicht gefunden

• Für die NoSuchMethodException-Methode existiert keine Ausnahme

• IOException IO-Ausnahme

• SocketException Socket-Ausnahme

2. Netzwerk

1. Was bedeuten die http-Antwortcodes 301 und 302? Was ist der Unterschied?

301: Permanente Weiterleitung.

302: Temporäre Weiterleitung.

Ihr Unterschied ist:

301 ist für die Suchmaschinenoptimierung (SEO) vorteilhafter;

302 Es besteht die Gefahr, dass Sie zum Abfangen des Netzwerks aufgefordert werden.

2. Was ist der Unterschied zwischen Weiterleiten und Umleiten?

Forward bedeutet Weiterleiten und Redirect bedeutet Umleiten:

• Die URL-Anzeige in der Adressleiste: Die Weiterleitungs-URL ändert sich nicht, die Weiterleitungs-URL ändert sich jedoch.

• Datenfreigabe: Forward kann die Daten in der Anfrage teilen, Redirect jedoch nicht.

• Effizienz: Forward ist effizienter als Redirect.

3. Beschreiben Sie kurz den Unterschied zwischen TCP und UDP?

TCP und UDP sind Protokolle in der Transportschicht des OSI-Modells. TCP sorgt für einen zuverlässigen Kommunikationstransport, während UDP häufig verwendet wird, um Broadcast- und Detailsteuerung für den Anwendungskommunikationstransport zu ermöglichen.

Der Unterschied zwischen den beiden ist ungefähr wie folgt:

• TCP ist verbindungsorientiert, UDP ist nicht verbindungsorientiert, dh vor dem Senden von Daten ist keine Verbindung erforderlich.

• TCP bietet zuverlässigen Dienst (Datenübertragung), udp kann keine Garantie übernehmen;

• TCP ist byteorientiert, UDP ist paketorientiert;

• Die TCP-Datenübertragung ist langsam, die UDP-Datenübertragung ist schnell.

4. Warum muss TCP dreimal die Hand schütteln, ist das nicht zweimal möglich? Warum?

Wenn zwei Handshakes verwendet werden, wird die Verbindung hergestellt, solange der Server ein Bestätigungspaket sendet. Da der Client jedoch zu diesem Zeitpunkt nicht auf die Anfrage des Servers antwortet, wartet der Server zu diesem Zeitpunkt immer auf den Client Server werden bestimmte Ressourcen verschwendet. Wenn der Drei-Wege-Handshake verwendet wird und der Server keine erneute Bestätigung vom Client erhält, weiß er, dass der Client keine Anfrage zum Einrichten einer Anforderung stellt, und die Ressourcen des Servers werden nicht verschwendet.

5. Sagen Sie mir, wie das TCP-Sticky-Paket generiert wird.

Das TCP-Sticky-Paket kann auf der sendenden oder empfangenden Seite auftreten. Schauen wir uns die Ursachen für Sticky-Pakete an beiden Enden an:

• Sticky-Pakete beim Absender: Der Absender muss vor dem Senden warten, bis der Puffer voll ist, was zu Sticky-Paketen führt.

• Sticky-Pakete beim Empfänger: Der Empfänger empfängt die gepufferten Pakete nicht rechtzeitig, was dazu führt, dass mehrere Pakete empfangen werden.

6. Was sind die sieben Schichten des OSI-Modells?

• Physikalische Schicht: Verwenden Sie das Übertragungsmedium, um eine physische Verbindung für die Datenverbindungsschicht bereitzustellen und die transparente Übertragung des Bitstroms zu realisieren.

• Datenverbindungsschicht: Verantwortlich für die Einrichtung und Verwaltung von Verbindungen zwischen Knoten.

• Netzwerkschicht: Wählen Sie mithilfe des Routing-Algorithmus den am besten geeigneten Pfad für die Nachricht oder das Paket zur Weiterleitung durch das Kommunikationssubnetz aus.

• Transportschicht: Bieten Sie Benutzern eine zuverlässige End-to-End-Fehler- und Flusskontrolle, um die korrekte Übertragung von Paketen sicherzustellen.

• Sitzungsschicht: Bietet Methoden zum Herstellen und Verwenden von Verbindungen zu den Präsentationsschichten zweier Entitäten.

• Präsentationsschicht: Behandelt die Darstellung von Benutzerinformationen, wie z. B. Kodierung, Datenformatkonvertierung, Ver- und Entschlüsselung usw.

• Anwendungsschicht: Bereitstellung von Diensten direkt für Benutzer und Erledigung verschiedener Aufgaben, die Benutzer im Netzwerk ausführen möchten.

7. Was ist der Unterschied zwischen Get- und Post-Anfragen?

• Get-Anfragen werden vom Browser aktiv zwischengespeichert, Post-Anfragen jedoch nicht.

• Get-Pass-Parameter haben eine Größenbeschränkung, Post jedoch nicht.

• Die Übertragung von Post-Parametern ist sicherer. Die Parameter von get sind auf die URL im Klartext beschränkt, die Parameter von post jedoch nicht.

8. Wie erreicht man domänenübergreifend?

Für die domänenübergreifende Umsetzung gibt es mehrere Möglichkeiten:

• Der Server führt eine domänenübergreifende Einstellung von CORS gleich * aus;

• Verwenden Sie die Annotation @CrossOrigin, um Cross-Origin auf einer einzelnen Schnittstelle auszuführen;

• JSONP domänenübergreifend verwenden;

9. Erzählen Sie mir etwas über das Implementierungsprinzip von JSONP?

jsonp: JSON mit Auffüllung, das die src-Verbindung des Skript-Tags verwendet, um auf die Eigenschaften verschiedener Quellen zuzugreifen, und die von der Fernbedienung zurückgegebene „JS-Funktion“ zur Ausführung lädt.

3. Designmuster

1. Erzählen Sie mir von den Designmustern, mit denen Sie vertraut sind?

• Singleton-Modus: Wird garantiert einmal erstellt, wodurch Systemaufwand gespart wird.

• Fabrikmuster (einfache Fabrik, abstrakte Fabrik) : entkoppelter Code.

Beobachtermuster : Definiert Eins-zu-viele-Abhängigkeiten zwischen Objekten, sodass alle abhängigen Objekte automatisch benachrichtigt und aktualisiert werden, wenn sich ein Objekt ändert.

Darstellungsmodus : Bietet eine einheitliche Schnittstelle für den Zugriff auf eine Gruppe von Schnittstellen im Subsystem. Das Erscheinungsbild definiert eine Schnittstelle auf hoher Ebene, um die Verwendung des Subsystems zu vereinfachen.

Vorlagenmethodenmodus : Definiert das Grundgerüst eines Algorithmus und verschiebt einige Schritte an Unterklassen. Die Vorlagenmethode ermöglicht es Unterklassen, die Schritte des Algorithmus neu zu definieren, ohne die Algorithmusstruktur zu ändern.

Statusmodus : Ermöglicht einem Objekt, sein Verhalten zu ändern, wenn sich sein interner Status ändert und das Objekt den Anschein erweckt, als hätte es seine Klasse geändert.

2. Was ist der Unterschied zwischen einer einfachen Fabrik und einer abstrakten Fabrik?

Einfache Fabrik : Sie wird zur Herstellung beliebiger Produkte in derselben hierarchischen Struktur verwendet und kann nichts gegen das Hinzufügen neuer Produkte unternehmen.

Fabrikmethode : Wird zur Herstellung fester Produkte in derselben hierarchischen Struktur verwendet und unterstützt das Hinzufügen beliebiger Produkte.

Abstrakte Fabrik : Sie wird zur Herstellung aller Produkte verschiedener Produktfamilien verwendet und ist nicht in der Lage, neue Produkte hinzuzufügen. Sie unterstützt das Hinzufügen von Produktfamilien.

四、Spring/Spring MVC

1. Warum Feder verwenden?

• Spring bietet IOC-Technologie, und der Container hilft Ihnen bei der Verwaltung abhängiger Objekte, sodass Sie abhängige Objekte nicht selbst erstellen und verwalten müssen und die Programmentkopplung einfacher ist.

• Spring bietet Transaktionsunterstützung und macht Transaktionsvorgänge komfortabler.

• Spring bietet eine Slice-orientierte Programmierung, die es einfacher macht, mit bestimmten Arten von Problemen umzugehen.

• Bequemere Framework-Integration. Spring kann problemlos andere Frameworks wie MyBatis, Hibernate usw. integrieren.

2. Erklären Sie, was AOP ist.

AOP ist eine Technologie für die aspektorientierte Programmierung, die die einheitliche Wartung von Programmfunktionen durch Vorkompilierung und dynamischen Laufzeit-Proxy realisiert.

Einfach ausgedrückt handelt es sich um die Programmieridee der einheitlichen Verarbeitung einer bestimmten „Schnittfläche“ (Kategorie), beispielsweise der einheitlichen Verarbeitung von Protokollen und Ausnahmen.

3. Erklären Sie, was ioc ist.

ioc: Inversion of Control (chinesisch: Inversion of Control) ist der Kern von Spring. Für das Spring Framework ist Spring für die Steuerung des Lebenszyklus von Objekten und der Beziehung zwischen Objekten verantwortlich.

In einfachen Worten bezieht sich Kontrolle auf die Kontrolle des aktuellen Objekts über interne Mitglieder. Die Umkehrung der Kontrolle bedeutet, dass diese Kontrolle nicht vom aktuellen Objekt, sondern von anderen zu verwaltenden Objekten (Klassen, Container von Drittanbietern) verwaltet wird.

4. Was sind die Hauptmodule des Frühlings?

• Federkern: Der grundlegendste Teil des Frameworks, der IOC- und Abhängigkeitsinjektionsfunktionen bereitstellt.

• Spring-Kontext: Das auf der Grundlage des Kernpakets erstellte Kontextpaket bietet eine Objektzugriffsmethode im Framework-Stil.

• Spring Dao: Data Access Object bietet eine Abstraktionsschicht für JDBC.

• spring aop: Bietet eine aspektorientierte Programmierimplementierung, mit der Sie Abfangjäger, Punktschnitte usw. anpassen können.

• Spring Web: Bietet integrierte Funktionen für die Webentwicklung, z. B. Datei-Upload, IOC-Container-Initialisierung mithilfe von Servlet-Listenern und applicationContext für Web.

• spring Web mvc: Das mvc-Paket in spring stellt die Implementierung von Model-View-Controller (MVC) für Webanwendungen bereit.

5. Welche Injektionsmethoden werden im Frühjahr am häufigsten verwendet?

• Setter-Eigenschaftsinjektion

• Konstruktorinjektion

• Annotationsinjektion

6. Sind Bohnen im Frühjahr fadensicher?

Die Bean im Frühling verwendet standardmäßig den Singleton-Modus, und das Spring-Framework führt keine Multithread-Kapselungsverarbeitung für die Singleton-Bean durch.

Tatsächlich sind Spring Beans in den meisten Fällen zustandslos (z. B. Dao-Klassen), sodass Beans bis zu einem gewissen Grad auch sicher sind. Wenn Beans jedoch zustandsbehaftet sind (z. B. Ansichtsmodellobjekte), müssen Entwickler die Thread-Sicherheit gewährleisten Ja, der einfachste Weg besteht darin, den Umfang der Bean zu ändern und „Singleton“ in „Prototyp“ zu ändern, sodass die angeforderte Bean einer neuen Bean entspricht und die Thread-Sicherheit gewährleistet werden kann.

• Zustandsbehaftet zu sein bedeutet, über Datenspeicherfähigkeiten zu verfügen.

• Statuslos bedeutet, dass keine Daten gespeichert werden.

7. Wie viele Bean-Scopes unterstützt Spring?

Spring unterstützt 5 Bereiche wie folgt:

• Singleton: Es gibt nur eine Bean-Instanz im Spring-IOC-Container, und die Bean existiert im Singleton-Modus, dem Standardwert des Systems.

• Prototyp: Bei jedem Aufruf einer Bean aus dem Container wird eine neue Instanz erstellt. Das heißt, jedes getBean entspricht der Ausführung einer neuen Bean-Operation.

• Umfang im Webumfeld:

• Anfrage: Für jede http-Anfrage wird eine Bean erstellt;

• Sitzung: Dieselbe HTTP-Sitzung teilt sich eine Bean-Instanz.

• Global-Session: Für Portlet-Container stellt Globalsession eine globale HTTP-Sitzung bereit, da jedes Portlet eine separate Sitzung hat.

Hinweis: Die Verwendung des Prototypbereichs erfordert sorgfältige Überlegungen, da das häufige Erstellen und Zerstören von Beans einen hohen Leistungsaufwand mit sich bringt.

8. Wie können Bohnen im Frühling automatisch geerntet werden?

• no: Der Standardwert, d. h. es erfolgt keine automatische Verdrahtung und für die Verkabelung sollten explizite Bean-Referenzen verwendet werden.

• byName: Es fügt Objektabhängigkeiten basierend auf dem Namen der Bean ein.

• byType: Es fügt Objektabhängigkeiten basierend auf dem Typ ein.

• Konstruktor: Um Abhängigkeiten über den Konstruktor einzufügen, müssen zahlreiche Parameter festgelegt werden.

• Autodetect: Der Container wird zuerst über den Konstruktor automatisch verkabelt, oder, falls nicht, über byType automatisch verkabelt.

9. Was sind die Implementierungsmethoden von Spring-Transaktionen?

• Deklarative Transaktion: Es gibt zwei Möglichkeiten, eine deklarative Transaktion zu realisieren, basierend auf der XML-Konfigurationsdatei und Annotation (fügen Sie der Klasse die Annotation @Transaction hinzu).

• Codierter Modus: Bereitstellung einer codierten Form zum Verwalten und Verwalten von Transaktionen.

10. Erzählen Sie mir etwas über die Isolation von Frühlingstransaktionen?

Spring hat fünf Isolationsstufen, der Standardwert ist: ISOLATION_DEFAULT (unter Verwendung der Datenbankeinstellungen), die anderen vier Isolationsstufen stimmen mit der Datenbankisolationsstufe überein:

12. Was sind die Komponenten von Spring MVC?

• Front-Controller-DispatcherServlet.

• Mapping-Controller HandlerMapping.

• Prozessor-Controller.

• ModelAndView modellieren und anzeigen.

• View-Resolver ViewResolver.

13. Welche Funktion hat @RequestMapping?

Ordnen Sie HTTP-Anfragen den entsprechenden Klassen/Methoden zu

14. Welche Funktion hat @Autowired?

@Autowired Durch die Verwendung von @Autowired können Variablen, Methoden und Konstruktoren von Klassenmitgliedern mit Anmerkungen versehen, die Arbeit der automatischen Assemblierung abgeschlossen und die Set/Get-Methode eliminiert werden.

Beispiel: Spring Boot/Spring Cloud

1. Was ist Spring Boot?

Die Federmanschette dient der Federung und wird verwendet, um den anfänglichen Konstruktions- und Entwicklungsprozess neuer Federanwendungen zu vereinfachen.

2. Warum Spring Boot verwenden?

• Einfache Konfiguration

• Unabhängig arbeiten

• Automatische Verkabelung

• Keine Codegenerierung und XML-Konfiguration

• Bietet Anwendungsüberwachung

• Einfach zu verwenden

• Verbessern Sie die Entwicklungseffizienz

3. Was ist die Kernkonfigurationsdatei von Spring Boot?

Zwei Konfigurationsdateien des Spring-Boot-Kerns:

• Bootstrap (.yml oder .properties): Boostrap wird vom übergeordneten applicationContext geladen, es wird vor applicationton geladen und die Eigenschaften in boostrap können nicht überschrieben werden;

• Anwendung (.yml oder .properties): zur automatischen Konfiguration von Spring-Boot-Projekten.

4. Welche Arten von Spring-Boot-Konfigurationsdateien gibt es? Was ist der Unterschied?

Konfigurationsdateien haben das .properties-Format und das .yml-Format. Der Hauptunterschied zwischen ihnen ist der Kalligraphiestil.

Eigenschaften werden wie folgt konfiguriert:

Frühling. RabbitMQ. Port=56721

yml ist wie folgt konfiguriert:

Hinweis: Das YML-Format unterstützt den Import von @PropertySource-Annotationen nicht.

5. Welche Möglichkeiten gibt es mit Spring Boot, um eine Hot-Bereitstellung zu erreichen?

• Verwenden Sie devtools, um die Hot-Bereitstellung zu starten, fügen Sie die devtools-Bibliothek hinzu und setzen Sie spring. devtools. restart. activate in der Konfigurationsdatei auf „true“.

• Aktivieren Sie im Intellij Idea-Editor die Option „Automatische Kompilierung“ oder „Manuelle Neukompilierung“.

6. Was ist der Unterschied zwischen JPA und Hibernate?

Der vollständige Name von JPA lautet Java Persistence API, die Java-Persistenzschnittstellenspezifikation, und der Ruhezustand gehört zur spezifischen Implementierung von JPA.

7. Was ist eine Frühlingswolke?

Spring Cloud ist eine geordnete Sammlung einer Reihe von Frameworks. Es nutzt den Entwicklungskomfort von Spring Boot, um die Entwicklung einer verteilten Systeminfrastruktur auf subtile Weise zu vereinfachen, z. B. Service Discovery-Registrierung, Konfigurationscenter, Nachrichtenbus, Lastausgleich, Leistungsschalter, Datenüberwachung usw., kann mit dem Entwicklungsstil von durchgeführt werden Spring Boot zum Starten und Bereitstellen mit einem Klick.

8. Welche Funktion hat der Spring Cloud-Leistungsschalter?

In einer verteilten Architektur ist die Rolle des Leistungsschaltermodus ähnlich. Wenn eine Serviceeinheit ausfällt (ähnlich einem Kurzschluss in einem Elektrogerät), wird über die Fehlerüberwachung des Leistungsschalters (ähnlich) eine Fehlerantwort an den Anrufer zurückgegeben einer durchgebrannten Sicherung). , anstatt lange zu warten. Auf diese Weise wird der Thread aufgrund des Aufrufs des fehlerhaften Dienstes nicht für längere Zeit belegt und nicht freigegeben, wodurch die Ausbreitung von Fehlern im verteilten System vermieden wird.

9. Was sind die Kernkomponenten von Spring Cloud?

• Eureka: Dienstregister zur Erkennung.

• Feign: Basierend auf dem dynamischen Proxy-Mechanismus wird die Anforderungs-URL-Adresse entsprechend der Anmerkung und dem ausgewählten Computer gespleißt und die Anforderung initiiert.

• Multifunktionsleiste: Um einen Lastausgleich zu erreichen, wählen Sie eine von mehreren Maschinen für einen Dienst aus.

• Hystrix: Stellt Thread-Pools bereit, verschiedene Dienste verwenden unterschiedliche Thread-Pools, realisiert die Isolierung verschiedener Dienstaufrufe und vermeidet das Problem der Dienstlawine.

• Zuul: Gateway-Management, das Zuul-Gateway leitet die Anfrage an den entsprechenden Dienst weiter.

Zusammenfassen

Der vorherige Artikel stellte einige häufige Interviewfragen in Java-Interviews vor und gab entsprechende Referenzantworten, darunter hauptsächlich Multithreading-Fragen in Java SE, einige häufige Interviewfragen zur Reflexion, das Kopieren von Objekten und häufige Fragen in Java Web. Einige Probleme. In diesem Artikel werden die Ausnahmen in Java SE, häufige Interviewfragen im Netzwerk sowie die entsprechenden Interviewfragen des Entwurfsmusters vorgestellt. Abschließend habe ich die allgemeinen Interviewfragen im beliebten Framework vorgestellt, darunter hauptsächlich Interviewfragen zu Spring/Spring MVC sowie Spring Boot und Spring Cloud. Ich hoffe, dass jeder es auf der Grundlage des Verständnisses beherrschen kann. Dies ist die Grundlage und der Kern von Java. Nur wenn wir diese Grundkenntnisse solide verstehen, können wir sie besser im tatsächlichen Entwicklungsprozess anwenden. Kurz gesagt, ob es sich um ein Interview oder einen Anfänger handelt, dieser Artikel wird für Kollegen in Richtung Java mehr oder weniger hilfreich sein. Ich hoffe, dass Sie hart lernen, hart arbeiten, leben und lernen und Ihre Fähigkeiten ständig verbessern. Gleichzeitig hoffe ich auch, dass die arbeitssuchenden Freunde einen zufriedenstellenden Job finden! ! ! !

Ich denke du magst

Origin blog.csdn.net/std7879/article/details/127743315
Empfohlen
Rangfolge