Java >> Java Tutorial >  >> Tag >> Spring

Die 21 wichtigsten Spring Boot-Interviewfragen

In den letzten Monaten habe ich einige Anfragen zu Spring Boot-Interviewfragen erhalten. In diesem Beitrag werde ich die 21 wichtigsten Spring Boot-Interviewfragen behandeln. Darüber hinaus werde ich auch einige Fragen zur Microservice-Architektur behandeln.

Ich habe diese Spring Boot-Interviewfragen in drei Kategorien unterteilt – für Anfänger, Fortgeschrittene und erfahrene Entwickler. Wenn Sie also noch keine Erfahrung mit Spring Boot haben, helfen Ihnen Anfängerfragen.

Spring Boot-Interviewfragen für unerfahrene Entwickler

1. Was ist Spring Boot und wie ist es bei der Entwicklung von Webanwendungen nützlich?

Spring Boot ist ein auf Spring Framework aufbauendes Framework für die schnelle Anwendungsentwicklung. In ähnlicher Weise sind Ruby on Rails, Django mit Python-Webframeworks berühmt. Insbesondere brachte Spring Java ein dringend benötigtes Web-Framework zum Erstellen von Webanwendungen. Wichtige Funktionen wie eingebetteter Anwendungsserver und automatische Konfiguration ermöglichen eine schnelle Entwicklung und Bereitstellung.

  • Das Spring Boot-Framework ermöglicht den einfachen Import von Abhängigkeiten.
  • Es erleichtert auch die Verwendung von Spring Security in den Anwendungen mit seinen umfangreichen Funktionen.
  • Aktuator – Man kann produktionsreife Funktionen zur Überwachung der Anwendung implementieren.

2. Was sind die Unterschiede zwischen Spring Boot und Spring?

Das Spring-Framework enthält mehrere Funktionen, die im Spring Boot-Framework verwendet werden können. Andererseits wird das Spring Boot-Framework für die Anwendungsentwicklung verwendet.

Ebenso bietet das Spring-Framework Funktionen wie Datenbindung, Abhängigkeitsinjektion, aspektorientierte Programmierung, Datenzugriff und Sicherheit.

Kurz gesagt, Spring Boot ist eines der Module von Spring Framework. Spring Boot baut auf dem Spring-Framework auf. Spring Boot ist ein Microservice-basiertes Framework zum Erstellen von Anwendungen. Die Funktion der automatischen Konfiguration in Spring Boot hilft bei der Reduzierung von Codezeilen.

3. Wie können Sie die Spring Boot-Anwendung mit maven oder gradle einrichten?

Um eine Spring-Boot-Anwendung einzurichten, kann man maven oder gradle verwenden. Beide werden verwendet, um erforderliche Abhängigkeiten in der Anwendung abzurufen. Insbesondere für Spring-Boot-Anwendungen kann man spring-boot-starter-parent ziehen Abhängigkeit.

In Maven verwendet man pom.xml Datei und in Gradle verwendet man build.gradle für Deklaration von Abhängigkeiten

Maven:

    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot</artifactId>
    <version>2.4.1</version>

Gradle:

compile group: 'org.springframework.boot', name: 'spring-boot', version: '2.4.1'

4. Wie können Sie den Standardport der Spring Boot-Anwendung ändern?

Es gibt drei Möglichkeiten, den Standardport der Spring Boot-Anwendung zu ändern. Folglich ist der direkteste Weg die Verwendung von application.properties oder application.yml Datei.

  • server.port Verwenden Sie diese Eigenschaft in application.properties .
  • Sie können den Port auch programmgesteuert im Haupt-@SpringBootApplication ändern Klasse.
  • Sie können den Port Ihrer Wahl verwenden, während Sie die Anwendung als JAR-Datei starten. java -jar -Dserver.port=8980 myapplication.jar

5. Wie würden Sie eine Anwendung mit HTTPS-Port mit Spring Boot einrichten?

Standardmäßig wird die Spring Boot-Anwendung auf dem HTTP-Port ausgeführt. Um Ihre Anwendung mit einem HTTPS-Port auszuführen, gibt es zwei Möglichkeiten.

  • Man kann server.port verwenden , server.ssl.key-store-password ,server.ssl.key-store ,server.ssl.key-store-type und server.ssl.key-alias .
  • Eine andere Möglichkeit, den HTTPS-Port zu verwenden, ist programmgesteuert.

6. Welche eingebetteten Server unterstützt Spring Boot?

Die Spring Boot-Anwendung unterstützt Tomcat-, Jetty- und Undertow-Webserver. Standardmäßig wird der Tomcat-Webserver vom Webstarter von Spring Boot unterstützt.

Um den Standard-Webserver zu ändern, muss spring-boot-starter-tomcat ausgeschlossen werden und enthalten entsprechende Server-Starter wie Jetty oder Undertow.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

7. Was sind die Vorteile von Spring Boot?

Hier sind die Hauptvorteile von Spring Boot

  • Ermöglicht das Erstellen eigenständiger Spring-Anwendungen
  • Man kann einfach Tomcat-, Jetty- oder Undertow-Server verwenden
  • Schnelle Entwicklung
  • Ermöglicht auch die einfache Verwendung einer Microservice-basierten Architektur

Spring Boot-Interviewfragen für fortgeschrittene Entwickler

Bisher habe ich einige grundlegende Interviewfragen behandelt. Wenn Sie ein Entwickler mit einigen Jahren Erfahrung in der Java- oder Spring Boot-Entwicklung sind, helfen Ihnen die nächsten Fragen, wo Sie sich verbessern können.

8. Wie stellt man die Spring Boot-Webanwendung als JAR- und WAR-Dateien bereit?

Im Allgemeinen stellen wir Webanwendungen als Webarchivdatei (WAR) bereit. Wir stellen die WAR-Datei auf dem externen Webserver bereit.

Offensichtlich bietet Spring ein Plugin spring-boot-maven-plugin an wenn Sie Maven verwenden, um die Anwendung zu erstellen. Anschließend können Sie die Webanwendung als ausführbare JAR-Datei packen. Wenn Sie Gradle verwenden, gradle build erstellt standardmäßig eine ausführbare JAR-Datei.

Für Maven,

<packaging>jar</packaging> erstellt eine JAR-Datei.

<packaging>war</packaging> wird eine Kriegsdatei erstellen. Wenn das Verpackungselement nicht enthalten ist, erstellt der Maven standardmäßig eine JAR-Datei. Sie müssen auch die Containerabhängigkeit wie folgt beibehalten:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

Für Gradle müssen Sie die Abhängigkeiten des eingebetteten Containers als zu providedRuntime des War-Plugins gehörend markieren Konfiguration.

9. Warum verwenden wir die Anmerkung @SpringBootApplication in der Hauptanwendungsklasse von Spring Boot?

Damit Anwendungen die automatische Konfiguration, Komponentenscans und zusätzliche Konfigurationen verwenden, kann man eine einzelne Anmerkung @SpringBootApplication einfügen . Diese Anmerkung enthält drei Anmerkungen @EnableAutoConfiguration , @ComponentScan , und @Configuration .

  • @EnableAutoConfiguration – Aktivieren Sie die automatische Konfiguration von Spring Boot
  • @ComponentScan – Dies ermöglicht das Scannen der Pakete, in denen sich die Anwendung befindet.
  • @Configuration – Registrierung zusätzlicher Beans im Kontext zulassen oder zusätzliche Konfigurationsklassen importieren.

10. Was sind @RestController und @RequestMapping Anmerkung verwendet für?

@RestController – Diese Anmerkung fügt die Anmerkungen @Controller hinzu und @ResponseBody . Diese Anmerkung markiert eine Klasse, die die eingehenden Anforderungen verarbeitet. Normalerweise wird diese Anmerkung verwendet, um RESTful-APIs zu erstellen.

@RequestMapping – Diese Anmerkung stellt Routing-Informationen in der Klasse bereit, die eingehende Anforderungen verarbeitet. Diese Annotation ordnet die eingehenden HTTP-Anfragen der entsprechenden Methode zu.

11. Warum brauchen wir Federprofile?

Beim Erstellen von Unternehmensanwendungen verwenden wir verschiedene Umgebungen wie Entwicklung, Test, QA und Produktion. Spring Boot ermöglicht die unterschiedliche Konfiguration von Anwendungseigenschaften für jede dieser Umgebungen.

Um die Konfiguration für jede Umgebung zu trennen, kann man die Eigenschaftendatei entsprechend der Umgebung benennen, z. B. application-dev.properties , application-test.properties und application-prod.properties .

12. Wie deaktiviere ich die spezifische Autokonfiguration?

Um eine bestimmte Autokonfiguration zu deaktivieren, kann man exclude verwenden Attribut für @EnableAutoConfiguration Anmerkung.

@EnableAutoConfiguration(exclude = DataSourceAutoConfiguration.class)
public class SampleApplication
{
}

13. Was ist Thymeleaf und wie wird es verwendet?

Thymeleaf ist eine serverseitige Template-Engine für eine Webanwendung. Sein Hauptzweck ist es, natürliche Vorlagen in die Webanwendung zu bringen.

Insbesondere muss man die Abhängigkeit spring-boot-starter-thymeleaf einbeziehen in der Anwendung zur Verwendung von Thymeleaf.

14. Welche verschiedenen Spring Boot-Starter gibt es und für welchen Zweck können Sie sie verwenden?

Ein großer Vorteil von Spring Boot besteht ausdrücklich darin, dass Sie verschiedene Abhängigkeiten für Ihre Spring Boot-Anwendung verwenden können. Alle Starter-Spring-Boot-Abhängigkeiten befinden sich unter org.springframework.boot Gruppe. Diese Abhängigkeiten beginnen mit spring-boot-starter- .

Es gibt mehr als 50 Starter-Abhängigkeiten, aber hier ist eine Liste von Abhängigkeiten, die die meisten Entwickler in ihren Anwendungen verwenden werden:

  • spring-boot-starter – Kernstarter. Dazu gehören automatische Konfiguration, Protokollierung und YAML.
  • spring-boot-starter-data-jpa – Dazu gehört Spring Data JPA mit Ruhezustand.
  • spring-boot-starter-security – Das Spring Security-Modell bietet Sicherheit für Ihre Webanwendung. Standardmäßig wird eine grundlegende formularbasierte Authentifizierung hinzugefügt.
  • spring-boot-starter-web – Dies beinhaltet ein Webmodul und hilft bei der Erstellung von Web-, RESTful-Anwendungen mit Spring MVC.
  • spring-boot-starter-thymeleaf – Durch das Importieren dieses Moduls kann der Entwickler die Thymeleaf-Vorlagen-Engine in der Anwendung verwenden.
  • spring-boot-starter-jdbc – Dieses Modul hilft bei der Verbindung zur Datenbank für Ihre Anwendung.
  • spring-boot-starter-tomcat – Normalerweise ist dies Teil des Spring Boot-Elternmoduls. Dadurch kann ein Entwickler einen eingebetteten Tomcat-Servlet-Container verwenden.

Spring Boot-Interviewfragen für erfahrene Entwickler

Die nächsten Fragen richten sich an einen erfahrenen Entwickler. Trotz der Unterscheidung sollte sich sowohl ein Anfänger als auch ein fortgeschrittener Entwickler mit diesen Fragen vertraut machen.

15. Wie verbinden Sie die Spring Boot-Anwendung mithilfe von JPA mit der Datenbank?

Spring Boot stellt spring-boot-starter-data-jpa bereit Abhängigkeit, um die Spring-Anwendung mit einer relationalen Datenbank zu verbinden.

Andererseits bewältigt Spring Data JPA die Komplexität des JDBC-basierten Datenbankzugriffs und der objektrelationalen Modellierung. Folglich verbessert es die Implementierung der Handhabung der Datenzugriffsschicht. Aus Sicht des Entwicklers reduziert es die Abhängigkeit von relationalen Datenbankabfragen.

JPA ermöglicht die Zuordnung von Anwendungsklassen zu Datenbanktabellen.

16. Warum verwenden Sie den Spring Boot Actuator?

Spring Boot Actuator bringt produktionsbereite Funktionen in die Anwendung. Als Ergebnis kann man die Anwendung leicht überwachen.

Es bietet auch Auditing, Zustandsprüfung und verschiedene Metriken für die Anwendung. Daher schließen Sie die Abhängigkeit wie folgt ein:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    <scope>provided</scope>
</dependency>

Hier sind einige der Endpunkte, die diese Abhängigkeit für die Anwendung bereitstellt:

  • env – Endpunkt zum Anzeigen aller Umgebungseigenschaften
  • health – Endpunkt, um den Zustand der Anwendung anzuzeigen
  • metrics – Dieser Endpunkt zeigt verschiedene Metriken der Anwendung an
  • loggers – Anzeige der Konfiguration von Loggern in der Anwendung
  • httptrace – Endpunkt zum Anzeigen von HTTP-Trace-Informationen

17. Wofür wird Spring Boot Devtools verwendet?

Spring Boot DevTools oder Developer Tools sind eine Reihe von Tools, die den Entwicklungsprozess vereinfachen. Um DevTools-Unterstützung einzuschließen, muss die Abhängigkeit spring-boot-devtools hinzugefügt werden im Projekt.

Spring Boot DevTools hilft beim Deaktivieren des Cachings, das viele Spring Boot-Abhängigkeiten verwenden. Dies ist im Entwicklungsprozess nützlich, da der Entwickler die Änderungen sofort sehen möchte.

Darüber hinaus ermöglicht die Verwendung dieser Bibliothek, dass Anwendungen neu gestartet werden, wenn sich Dateien im Klassenpfad ändern.

Darüber hinaus ermöglicht die Bibliothek die Debug-Protokollierung für die Webgruppe.

18. Was ist der Vorteil der Verwendung von Spring Data JPA?

Spring Data Jpa stellt JpaTemplate bereit, um die Spring-Anwendung in JPA zu integrieren. Sie können auch eine bestimmte Implementierung der JPA-Spezifikation auswählen. Standardmäßig ist es Hibernate .

Vorteile von Spring Data JPA

  • Reduziert Boilerplate-Code
  • Generierte Abfragen helfen dabei, die Abhängigkeit des Entwicklers von Datenbankabfragen zu verringern
  • Das Repository-Muster ermöglicht es Entwicklern, die Persistenz einfach zu handhaben.

19. Erklären Sie, dass Spring Boot entspanntes Binden unterstützt.

Im Allgemeinen muss der Schlüssel einer Eigenschaft genau mit einem Eigenschaftsnamen in der Spring Boot-Anwendung übereinstimmen. Spring Boot unterstützt entspanntes Binden, was bedeutet, dass der Schlüssel einer Eigenschaft nicht genau mit einem Eigenschaftsnamen übereinstimmen muss.

Außerdem kann die Umgebungseigenschaft in jedem Fall geschrieben werden. Beispiel – Wenn Sie eine Eigenschaft propertyDB haben in Ihrer Bean-Klasse mit der Anmerkung @ConfigurationProperties , können Sie diese Eigenschaft an eine dieser Umgebungseigenschaften binden – PROPERTYDB , propertydb , oder property_db .

20. Wenn Sie Spring Security in Ihrer Anwendung verwenden möchten, wie verwenden Sie es und wie macht es die Anwendung sicher?

Zurzeit können Sie zum Sichern Ihrer Spring Boot-Anwendung spring-boot-starter-security einschließen Abhängigkeit in Ihrem Projekt. Standardmäßig werden einige der Sicherheitsmaßnahmen für Ihre Anwendung hinzugefügt. Zu diesen Standardmaßnahmen gehören das Hinzufügen einer grundlegenden formularbasierten Authentifizierung zu Ihrer Anwendung oder das Sichern von REST-APIs.

Anschließend kann man zur Nutzung von Spring Security WebSecurityConfigurerAdapter erweitern -Klasse, um benutzerdefinierte Sicherheitsmaßnahmen hinzuzufügen. In derselben Klasse verwenden Sie @EnableWebSecurity Anmerkung. Diese Anmerkung ermöglicht es Spring, Konfigurationen zu finden und die Klasse auf globale WebSecurity anzuwenden.

21. Wofür verwenden Sie die Annotation @ControllerAdvice?

@ControllerAdvice Annotation hilft bei der Verwaltung der Ausnahmen in der Spring Boot-Anwendung. Kurz gesagt, es ist ein Interceptor von Ausnahmen, die von Methoden ausgelöst werden, die mit @RequestMapping annotiert sind .

ResponseEntityExceptionHandler ist die Basisklasse, die eine zentralisierte Ausnahmebehandlung bereitstellt.

Bisher habe ich Fragen zu Spring Boot-Interviews behandelt. Ich werde dennoch einige Interviewfragen zu Microservices behandeln, die Entwicklern helfen können.

Microservices-Interviewfragen

1. Was sind Microservices?

Microservices ist ein Architekturstil. Es strukturiert eine Anwendung als eine Sammlung von Diensten, die

  • Sehr wartungsfreundlich
  • Los gekoppelt
  • Leicht einsetzbar
  • Im Besitz eines kleinen Teams

2. Welche gängigen Tools werden zum Erstellen und Bereitstellen von Microservices verwendet?

Dies hängt vom Technologie-Stack ab. Docker bleibt unabhängig vom Technologie-Stack ein gemeinsames Werkzeug. Daher ermöglicht Docker das Erstellen eines Containers für den Microservice. Dieser Container kann dann in der Cloud-Umgebung bereitgestellt werden.

Wiremock ist ein weiteres Tool für flexibles API-Mocking für Microservices.

Hysterix ist ein Schutzschalter, der bei Latenz und Fehlertoleranz der Anwendung hilft.

3. Wie hilft Spring bei der Entwicklung von Microservices?

Am wichtigsten ist, dass Spring bei der schnellen Entwicklung hilft. Spring Boot hilft beim Erstellen von REST-APIs und Webanwendungen. Spring Cloud hilft bei der Integration mit externen Systemen.

4. Was sind die Herausforderungen bei Microservices?

Microservices sind aufeinander angewiesen. Folglich muss die Kommunikation zwischen diesen Diensten gesichert werden. Da Microservices ein verteiltes System sind, kann es zu einem komplexen Modell werden. Es kann einen Betriebsaufwand geben. Mehr Dienste bedeuten mehr Ressourcen.

Schlussfolgerung

In diesem Beitrag habe ich die meisten Fragen zu Spring Boot behandelt, denen Sie während eines Vorstellungsgesprächs begegnen könnten. Wenn Ihnen dieser Beitrag gefallen hat, abonnieren Sie bitte meinen Blog hier.


Java-Tag