Top Spring Framework-Interviewfragen

1. Einführung

In diesem Artikel werden wir uns einige der häufigsten Fragen zum Frühling ansehen, die während eines Vorstellungsgesprächs auftauchen könnten.

2. Federkern

Q1. Was ist Spring Framework?

Spring ist das am weitesten verbreitete Framework für die Entwicklung von Java Enterprise Edition-Anwendungen. Die Kernfunktionen von Spring können bei der Entwicklung von Java-Anwendungen verwendet werden.

Wir können seine Erweiterungen verwenden, um verschiedene Webanwendungen auf der Java EE-Plattform zu erstellen, oder wir verwenden die Einfügungsbestimmungen für Abhängigkeiten in einfachen eigenständigen Anwendungen.

Q2. Was sind die Vorteile von Spring?

Frühlingsziele zur Vereinfachung der Java EE-Entwicklung. Hier sind die Vorteile der Verwendung:

  • Lightweight: Es ist ein leichter Aufwand, das Framework in zu verwenden

Entwicklung Inversion of Control (IoC): ** Der Federcontainer kümmert sich um die Verdrahtung

Abhängigkeiten verschiedener Objekte, anstatt zu erstellen oder zu suchen abhängige Objekte Aspektorientierte Programmierung (AOP): ** Spring unterstützt die Trennung von AOP

Geschäftslogik aus Systemdiensten IoC-Container: ** verwaltet den Lebenszyklus und das Projekt von Spring Bean

spezifische Konfigurationen MVC-Framework: ** wird zum Erstellen von Webanwendungen oder RESTful verwendet

Webservices, die XML/JSON-Antworten zurückgeben können Transaktionsverwaltung: ** Reduziert den Code für die Kesselplatte in

JDBC-Vorgänge, Hochladen von Dateien usw. entweder mithilfe von Java-Anmerkungen oder per Spring Bean XML-Konfigurationsdatei Ausnahmebehandlung: ** Spring bietet eine komfortable API zum Übersetzen

technikspezifische Ausnahmen in ungeprüfte Ausnahmen

Q3. Welche Frühlings-Unterprojekte kennst du? Beschreibe sie kurz.

  • Core - ein Schlüsselmodul, das grundlegende Teile des

Framework, wie IoC oder DI JDBC ** - Dieses Modul aktiviert eine JDBC-Abstraktionsschicht, in der die JDBC-Abstraktionsschicht entfernt wird

müssen JDBC-Codierung für bestimmte Hersteller-Datenbanken durchführen ORM-Integration ** - bietet Integrationsebenen für beliebte Benutzer

objektrelationale Zuordnungs-APIs wie JPA, JDO und Hibernate Web ** - ein weborientiertes Integrationsmodul, das mehrteilige Dateien bereitstellt

Upload, Servlet-Listener und weborientierter Anwendungskontext Funktionalitäten MVC Framework ** - ein Webmodul, das den Model View Controller implementiert

Entwurfsmuster AOP-Modul ** - Aspektorientierte Programmierimplementierung, die es ermöglicht

Definition sauberer Methoden-Interceptors und Pointcuts

Q4. Was ist Abhängigkeitsinjektion?

Abhängigkeitsinjektion, ein Aspekt von Inversion of Control (IoC), ist ein allgemeines Konzept, das besagt, dass Sie Ihre Objekte nicht manuell erstellen, sondern beschreiben, wie sie erstellt werden sollen. Ein IoC-Container wird bei Bedarf die erforderlichen Klassen instanziieren.

Weitere Einzelheiten finden Sie unter link/inversion-control-and-dependency-in-spring[hier].

Q5. Wie können wir im Frühling Bohnen spritzen?

Es gibt verschiedene Möglichkeiten:

  • Setter-Injektion

  • Konstruktorinjektion

  • Feldinjektion

Die Konfiguration kann mithilfe von XML-Dateien oder Anmerkungen erfolgen.

Weitere Informationen finden Sie unter link/inversion-control-and-dependency-in-spring[in diesem Artikel].

F6. Was ist der beste Weg, Bohnen zu spritzen und warum?

Es wird empfohlen, Konstruktorargumente für zwingende Abhängigkeiten und Setter für optionale Abhängigkeiten zu verwenden. Die Konstruktorinjektion ermöglicht das Injizieren von Werten in unveränderliche Felder und erleichtert das Testen.

Q7. Was ist der Unterschied zwischen BeanFactory und ApplicationContext ?

BeanFactory ist eine Schnittstelle, die einen Container darstellt, der Bean-Instanzen bereitstellt und verwaltet. Die Standardimplementierung instantiiert Beans, wenn getBean () aufgerufen wird.

ApplicationContext ist eine Schnittstelle, die einen Container darstellt, der alle Informationen, Metadaten und Beans in der Anwendung enthält. Es erweitert auch die BeanFactory -Schnittstelle, aber die Standardimplementierung instanziiert die Beans eifrig, wenn die Anwendung startet. Dieses Verhalten kann für einzelne Beans überschrieben werden.

F8. Was ist eine Frühlingsbohne?

Die Spring-Beans sind Java-Objekte, die vom Spring-IoC-Container initialisiert werden.

Q9. Was ist der Standard-Bean-Bereich im Spring-Framework?

Standardmäßig wird ein Spring Bean als singleton initialisiert.

Q10. Wie definiere ich den Umfang einer Bohne?

Um den Gültigkeitsbereich von Spring Bean festzulegen, können Sie in XML-Konfigurationsdateien die Annotation @ Scope oder das Attribut "scope" verwenden. Es gibt fünf unterstützte Bereiche:

  • singleton

  • Prototyp

  • anfrage

  • session

  • global-session

Q11. Sind Singleton Beans fadensicher?

Nein, Singleton-Beans sind nicht Thread-sicher, da es bei Thread-Sicherheit um die Ausführung geht, wohingegen der Singleton ein Entwurfsmuster ist, das sich auf die Erstellung konzentriert. Die Thread-Sicherheit hängt nur von der Bean-Implementierung selbst ab.

Q12. Wie sieht der Lebenszyklus der Frühlingsbohne aus?

Zunächst muss ein Spring-Bean instanziiert werden, das auf Java- oder XML-Bean-Definitionen basiert. Es kann auch erforderlich sein, einige Initialisierungen durchzuführen, um sie in einen verwendbaren Zustand zu bringen. Wenn das Bean nicht mehr benötigt wird, wird es aus dem IoC-Container entfernt.

Der gesamte Zyklus mit allen Initialisierungsmethoden ist im Bild dargestellt ( http://www.dineshonjava.com/2012/07/bean-lifecycle-and-callbacks.html

Q13. Was ist die Spring-Java-basierte Konfiguration?

Dies ist eine der Möglichkeiten, Spring-basierte Anwendungen typsicher zu konfigurieren. Es ist eine Alternative zur XML-basierten Konfiguration.

Wenn Sie Ihr Projekt von XML zu Java-Konfiguration migrieren möchten, finden Sie weitere Informationen unter zu diesem Artikel .

Q14. Können wir mehrere Spring-Konfigurationsdateien in einem Projekt haben?

Ja, bei großen Projekten wird die Verwendung mehrerer Federkonfigurationen empfohlen, um die Wartbarkeit und Modularität zu erhöhen.

Sie können mehrere Java-basierte Konfigurationsdateien laden:

@Configuration
@Import({MainConfig.class, SchedulerConfig.class})
public class AppConfig {

Oder laden Sie eine XML-Datei, die alle anderen Konfigurationen enthält:

ApplicationContext context = new ClassPathXmlApplicationContext("spring-all.xml");

Und in dieser XML-Datei haben Sie:

<import resource="main.xml"/>
<import resource="scheduler.xml"/>

Q15. Was ist Frühlingssicherheit?

Spring Security ist ein separates Modul des Spring-Frameworks, das sich auf die Bereitstellung von Authentifizierungs- und Autorisierungsmethoden in Java-Anwendungen konzentriert. Es kümmert sich auch um die meisten Sicherheitsanfälligkeiten wie CSRF-Angriffe.

Um Spring Security in Webanwendungen zu verwenden, können Sie mit einer einfachen Anmerkung beginnen: @ EnableWebSecurity .

Sie finden die gesamte Artikelserie zu link:/security-spring.

F16. Was ist Spring Boot?

Spring Boot ist ein Projekt, das einen vorkonfigurierten Satz von Frameworks bereitstellt, um die Boilerplate-Konfiguration zu reduzieren, sodass eine Spring-Anwendung mit der geringsten Menge an Code ausgeführt werden kann.

Q17. Nennen Sie einige der im Spring Framework verwendeten Designmuster?

Singleton-Pattern: Singleton-Beans

  • Factory Pattern: Bean Factory Klassen

  • Prototyp-Muster: Prototyp-Beans

  • Adapter Pattern: Spring Web und Spring MVC

  • Proxy-Muster: Spring-Aspektorientierte Programmierunterstützung

  • Vorlagenmethode Muster: JdbcTemplate , HibernateTemplate, usw.

  • Front Controller: Spring MVC DispatcherServlet

  • Datenzugriffsobjekt: Spring DAO-Unterstützung

  • Modellansicht-Controller: Spring MVC

Q18. Wie funktioniert der Geltungsbereich Prototype ?

Scope prototype bedeutet, dass jedes Mal, wenn Sie eine Instanz des Beans aufrufen, Spring eine neue Instanz erstellt und diese zurückgibt. Dies unterscheidet sich vom Standardbereich singleton , bei dem eine einzelne Objektinstanz einmal pro Spring-IoC-Container instanziiert wird.

3. Spring Web MVC

Q19. So erhalten Sie ServletContext - und ServletConfig -Objekte in einer Spring-Bean?

Sie können entweder durch:

  1. Implementierung von Spring-fähigen Schnittstellen. Die vollständige Liste ist verfügbar

  1. Verwenden der Annotation @ Autowired für diese Beans:

@Autowired
ServletContext servletContext;

@Autowired
ServletConfig servletConfig;

Q20. Was ist ein Controller in Spring MVC?

Einfach ausgedrückt, werden alle vom DispatcherServlet verarbeiteten Anforderungen an Klassen gerichtet, die mit @ Controller kommentiert wurden. Jede Controller-Klasse ordnet eine oder mehrere Anforderungen Methoden zu, die die Anforderungen mit den bereitgestellten Eingaben verarbeiten und ausführen.

Wenn Sie einen Schritt zurückgehen müssen, empfehlen wir einen Blick auf das Konzept des Links:/spring-controller[Front Controller in der typischen Spring MVC-Architektur].

Q21. Wie funktioniert die Annotation @ RequestMapping ?

Die Annotation @ RequestMapping wird verwendet, um Webanforderungen den Spring Controller-Methoden zuzuordnen. Zusätzlich zu einfachen Anwendungsfällen können wir es zum Abbilden von HTTP-Headern, zum Binden von Teilen des URI mit @ PathVariable, und zum Arbeiten mit URI-Parametern und der Annotation @ RequestParam verwenden.

Weitere Details zu @ RequestMapping sind verfügbar link:/spring-requestmapping

4. Spring Data Access

Q22. Was ist die Spring-Klasse JDBCTemplate und wie wird sie verwendet?

Die Spring-JDBC-Vorlage ist die Haupt-API, über die wir auf die Datenbankoperationslogik zugreifen können, die uns interessiert:

  • Erstellen und Schließen von Verbindungen

  • Ausführen von Anweisungen und Aufrufen gespeicherter Prozeduren

  • Durchlaufen des ResultSet und Rückgabe der Ergebnisse

Um es zu verwenden, müssen wir die einfache Konfiguration von DataSource definieren:

@Configuration
@ComponentScan("org.baeldung.jdbc")
public class SpringJdbcConfig {
    @Bean
    public DataSource mysqlDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/springjdbc");
        dataSource.setUsername("guest__user");
        dataSource.setPassword("guest__password");

        return dataSource;
    }
}

Für weitere Erklärungen können Sie den Link:/spring-jdbc-jdbctemplate[diesen schnellen Artikel]aufrufen.

Q23. Wie würden Sie Transaktionen im Frühling ermöglichen und welche Vorteile haben sie?

Es gibt zwei verschiedene Möglichkeiten, Transactions zu konfigurieren - mit Anmerkungen oder mit Aspect Oriented Programming (AOP).

Die Vorteile der Verwendung von Spring Transactions laut http://docs.spring.io/spring/docs/current/spring-framework-reference/html/transaction.html (), sind:

  • Bereitstellung eines konsistenten Programmiermodells für verschiedene Transaktionen

APIs wie JTA, JDBC, Hibernate, JPA und JDO ** Unterstützung der deklarativen Transaktionsverwaltung

  • Bieten Sie eine einfachere API für die programmatische Transaktionsverwaltung als

einige komplexe Transaktions-APIs wie JTA ** Sehr gute Integration in die verschiedenen Abstraktionen von Spring für den Datenzugriff

Q24. Was ist Frühling DAO?

Spring Data Access Object ist eine Unterstützung von Spring, mit der Datenzugriffstechnologien wie JDBC, Hibernate und JPA auf konsistente und einfache Weise verarbeitet werden können.

Sie können natürlich auf die Persistenz tiefer eingehen, indem Sie den Link:/persistence-with-spring-series/[gesamte Serie]über Persistenz in Spring diskutieren.

5. Frühlingsaspektorientierte Programmierung (AOP)

Q25. Was ist aspektorientierte Programmierung?

Aspects ermöglichen die Modularisierung von Querschnittsthemen wie Transaktionsmanagement, die sich über mehrere Typen und Objekte erstrecken, indem dem bereits vorhandenen Code zusätzliches Verhalten hinzugefügt wird, ohne die betroffenen Klassen zu ändern.

Q26. Was sind Aspect , Advice , Pointcut, und JoinPoint in AOP?

  • Aspekt : Eine Klasse, die Querschnittsprobleme implementiert, wie z

Transaktionsmanagement Advice ** : Die Methoden, die ausgeführt werden, wenn ein bestimmter JoinPoint

mit passendem Pointcut wird in der Anwendung erreicht Pointcut ** : Ein Satz regulärer Ausdrücke, die mit übereinstimmen

JoinPoint , um zu bestimmen, ob Advice ausgeführt werden muss oder nicht JoinPoint ** : ein Punkt während der Ausführung eines Programms, z

Ausführung einer Methode oder Behandlung einer Ausnahme

Q27. Was ist Weben ?

Weaving ist laut https://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html (inoffizielle Dokumente) ein Prozess, der Aspekte mit anderen zu erstellenden Anwendungstypen oder Objekten verknüpft ein empfohlenes Objekt. Dies kann zur Kompilierzeit, Ladezeit oder zur Laufzeit erfolgen. Spring AOP führt wie andere reine Java-AOP-Frameworks zur Laufzeit weaving aus.

6. Fazit

In diesem ausführlichen Artikel haben wir einige der wichtigsten Fragen für ein technisches Interview zu Spring erläutert.

Wir hoffen, dass dieser Artikel Ihnen bei Ihrem bevorstehenden Frühlingsinterview helfen wird. Viel Glück!

  • "** Bisherige