Java >> Java tutorial >  >> Tag >> Spring

Top 21 Spørgsmål til Spring Boot Interview

I de sidste par måneder har jeg modtaget et par henvendelser om Spring Boot Interview Spørgsmål. I dette indlæg vil jeg dække de 21 bedste spørgsmål til Spring Boot Interview. Derudover vil jeg også dække nogle Microservice-arkitektur-relaterede spørgsmål.

Jeg har opdelt disse Spring Boot-interviewspørgsmål i tre kategorier – for en nybegynder, for mellemliggende og for en erfaren udvikler. Så hvis du ikke har nogen erfaring med Spring Boot, vil nye spørgsmål hjælpe dig.

Spørgsmål til forårsopstartsinterview til nybegyndere

1. Hvad er Spring Boot, og hvordan er det nyttigt i webapplikationsudvikling?

Spring Boot er en ramme bygget oven på Spring Framework til hurtig applikationsudvikling. Tilsvarende er Ruby on Rails, Django med Python-webrammer berømte. Især bragte Spring en tiltrængt webramme til Java til at bygge webapplikationer. Vigtige funktioner som indlejret applikationsserver og automatisk konfiguration muliggør hurtig udvikling og implementering.

  • Spring Boot-rammen gør det nemt at importere afhængigheder.
  • Det gør det også nemmere at bruge Spring Security i applikationerne med dens rige funktioner.
  • Aktuator – Man kan implementere produktionsklare funktioner til overvågning af applikationen.

2. Hvad er forskellene mellem Spring Boot og Spring?

Spring-framework indeholder flere funktioner, der kan bruges i Spring Boot-rammen. På den anden side bruges Spring Boot-rammen til applikationsudvikling.

På samme måde giver Spring framework funktioner som databinding, afhængighedsinjektion, aspektorienteret programmering, dataadgang, sikkerhed.

Kort sagt, Spring Boot er et af modulerne i Spring Framework. Spring Boot er bygget på toppen af ​​Spring rammen. Spring Boot er en mikroservice-baseret ramme til at bygge applikationer. Funktionen ved automatisk konfiguration i Spring Boot hjælper med at reducere kodelinjer.

3. Hvordan kan du konfigurere Spring Boot-applikationen med maven eller gradle?

For at opsætte en fjederstøvleapplikation kan man bruge maven eller gradle. Begge bruges til at trække nødvendige afhængigheder i applikationen. Især til fjederstøvleapplikation kan man trække spring-boot-starter-parent afhængighed.

I maven bruger man pom.xml fil og i gradle bruger man build.gradle til afhængighedserklæring

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. Hvordan kan du ændre standardporten for Spring Boot Application?

Der er tre måder, du kan ændre standardporten for Spring Boot Application. Derfor er den mest ligetil måde at bruge application.properties eller application.yml fil.

  • server.port brug denne egenskab i application.properties .
  • Du kan også ændre porten programmatisk i hoved-@SpringBootApplication klasse.
  • Du kan bruge porten efter eget valg, mens du starter programmet som en jar-fil. java -jar -Dserver.port=8980 myapplication.jar

5. Hvordan ville du konfigurere et program med HTTPS-port med Spring Boot?

Som standard kører Spring Boot-applikationen på HTTP-port. For at få din applikation til at køre med HTTPS-port, er der to måder.

  • Man kan bruge server.port , server.ssl.key-store-password ,server.ssl.key-store ,server.ssl.key-store-type og server.ssl.key-alias .
  • En anden måde at bruge HTTPS-porten på er programmatisk.

6. Hvilke indlejrede servere understøtter Spring Boot?

Spring Boot-applikationen understøtter Tomcat-, Jetty- og Undertow-webservere. Som standard understøttes Tomcat-webserveren af ​​Spring Boots webstarter.

For at ændre standard webserveren skal man udelukke spring-boot-starter-tomcat og inkludere tilsvarende serverstarter som anløbsbro eller understrøm.

<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. Hvad er fordelene ved Spring Boot?

Her er de vigtigste fordele ved Spring Boot

  • Gør det muligt at oprette selvstændige Spring-applikationer
  • Man kan nemt bruge tomcat, anløbsbro eller understrømsserver
  • Hurtig udvikling
  • Tillader også nemt at bruge mikroservice-baseret arkitektur

Spørgsmål til forårsopstartsinterview til mellemudviklere

Indtil videre har jeg dækket nogle grundlæggende interviewspørgsmål. Hvis du er en udvikler med et par års erfaring i Java eller Spring Boot Development, vil det næste sæt spørgsmål hjælpe dig med, hvor du kan forbedre dig.

8. Hvordan implementerer man Spring Boot Web Application som en jar og krigsfiler?

Generelt implementerer vi webapplikation som webarkivfil (WAR). Vi installerer krigsfilen på den eksterne webserver.

Åbenbart tilbyder Spring et plugin spring-boot-maven-plugin hvis du bruger maven til at bygge applikationen. Du kan derefter pakke webapplikationen som en eksekverbar jar-fil. Hvis du bruger gradle, gradle build vil som standard oprette en eksekverbar jar-fil.

For maven,

<packaging>jar</packaging> vil bygge en jar-fil.

<packaging>war</packaging> vil bygge en krigsfil. Hvis emballageelementet ikke er inkluderet, vil maven som standard jar-fil. Du skal også beholde containerafhængigheden som følger:

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

For gradle skal du markere den indlejrede containers afhængigheder som tilhørende war-plugin's providedRuntime konfiguration.

9. Hvorfor bruger vi annotationen @SpringBootApplication i den primære Spring Boot-applikationsklasse?

For at programmer skal bruge automatisk konfiguration, komponentscanninger og ekstra konfigurationer, kan man inkludere en enkelt annotation @SpringBootApplication . Denne annotering indeholder tre annoteringer @EnableAutoConfiguration , @ComponentScan og @Configuration .

  • @EnableAutoConfiguration – aktiver Spring Boots automatiske konfiguration
  • @ComponentScan – dette gør det muligt at scanne de pakker, hvor applikationen er placeret.
  • @Configuration – tillad registrering af ekstra bønner i konteksten eller importer yderligere konfigurationsklasser.

10. Hvad er @RestController og @RequestMapping annotation brugt til?

@RestController – Denne annotering tilføjer annoteringer @Controller og @ResponseBody . Denne annotation markerer en klasse, der vil håndtere de indkommende anmodninger. Normalt bruges denne annotation til at skabe RESTful API'er.

@RequestMapping – Denne annotation giver routinginformation i klassen, der håndterer indgående anmodninger. Denne annotation kortlægger de indgående HTTP-anmodninger til den tilsvarende metode.

11. Hvorfor har vi brug for forårsprofiler?

Når vi bygger virksomhedsapplikationer, bruger vi forskellige miljøer som Dev, Test, QA og Production. Spring Boot gør det muligt at konfigurere applikationsegenskaber forskelligt for hvert af disse miljøer.

For at hjælpe med at adskille konfigurationen for hvert miljø kan man navngive egenskabsfilen i henhold til miljøet som application-dev.properties , application-test.properties og application-prod.properties .

12. Hvordan deaktiverer man specifik automatisk konfiguration?

For at deaktivere enhver specifik automatisk konfiguration kan man bruge exclude attribut for @EnableAutoConfiguration annotation.

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

13. Hvad er Thymeleaf, og hvordan bruger man det?

Thymeleaf er en skabelonmotor på serversiden til en webapplikation. Dens hovedformål er at bringe naturlige skabeloner til webapplikationen.

Specifikt skal man inkludere afhængigheden spring-boot-starter-thymeleaf i applikationen til at bruge timianblade.

14. Hvad er de forskellige Spring Boot startere derude, og hvilket formål kan du bruge dem?

En stor fordel ved Spring Boot er eftertrykkeligt at være i stand til at bruge forskellige afhængigheder til din Spring Boot-applikation. Alle starter Spring Boot afhængigheder er under org.springframework.boot gruppe. Disse afhængigheder starter med spring-boot-starter- .

Der er mere end 50 starterafhængigheder, men her er en liste over afhængigheder, som de fleste udviklere vil bruge i deres applikationer:

  • spring-boot-starter – Kernestarter. Dette inkluderer automatisk konfiguration, logning og YAML.
  • spring-boot-starter-data-jpa – Dette inkluderer Spring data JPA med dvale.
  • spring-boot-starter-security – Spring Security-modellen tilbyder sikkerhed til din webapplikation. Som standard tilføjer den grundlæggende formularbaseret godkendelse.
  • spring-boot-starter-web – Dette inkluderer et webmodul og hjælper med at skabe web, RESTful-applikationer ved hjælp af Spring MVC.
  • spring-boot-starter-thymeleaf – Import af dette modul gør det muligt for udvikleren at bruge thymeleaf-skabelonmotor i applikationen.
  • spring-boot-starter-jdbc – Dette modul hjælper med at oprette forbindelse til databasen for din applikation.
  • spring-boot-starter-tomcat – Normalt er dette en del af fjederstøvlens forældremodul. Dette giver en udvikler mulighed for at bruge en indlejret tomcat-servletbeholder.

Spørgsmål til forårsopstartsinterview til erfarne udviklere

Det næste sæt spørgsmål er til en erfaren udvikler. På trods af udmærkelsen bør en nybegynder såvel som en mellemudvikler lære om disse spørgsmål.

15. Hvordan forbinder du Spring Boot Application til databasen ved hjælp af JPA?

Spring Boot giver spring-boot-starter-data-jpa afhængighed for at forbinde Spring-applikationen til en relationsdatabase.

På den anden side håndterer Spring Data JPA kompleksiteten af ​​JDBC-baseret databaseadgang og objektrelationel modellering. Følgelig forbedrer det implementeringen af ​​håndtering af dataadgangslag. Fra udviklerens synspunkt reducerer det afhængigheden af ​​relationel databaseforespørgsel.

JPA tillader at kortlægge applikationsklasser til databasetabeller.

16. Hvorfor bruger du Spring Boot Actuator?

Spring Boot Actuator bringer produktionsklare funktioner til applikationen. Som et resultat kan man nemt overvåge applikationen.

Det giver også revision, sundhedstjek og forskellige målinger for applikationen. Derfor inkluderer du afhængighed som følger:

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

Her er nogle af de endepunkter, som denne afhængighed giver applikationen:

  • env – Slutpunkt for at vise alle miljøegenskaberne
  • health – Slutpunkt for at vise applikationens helbred
  • metrics – Dette slutpunkt viser forskellige metrics for applikationen
  • loggers – Vis konfigurationen af ​​loggere i applikationen
  • httptrace – Slutpunkt for at vise HTTP-sporingsoplysninger

17. Hvad bruges Spring Boot Devtools til?

Spring Boot DevTools eller Developer Tools er et sæt værktøjer, der gør udviklingsprocessen lettere. For at inkludere DevTools-understøttelse skal man tilføje afhængigheden spring-boot-devtools i projektet.

Spring Boot DevTools hjælper med at deaktivere den caching, som mange spring boot-afhængigheder bruger. Dette er nyttigt i udviklingsprocessen, da udvikleren ønsker at se ændringerne med det samme.

Derudover tillader brugen af ​​dette bibliotek programmer at genstarte, når der er en ændring i filer på klassestien.

Desuden muliggør biblioteket debug-logning for webgruppen.

18. Hvad er fordelen ved at bruge Spring Data JPA?

Spring Data Jpa leverer JpaTemplate til at integrere Spring-applikationen med JPA. Du kan også vælge en specifik implementering af JPA-specifikationen. Som standard vil det være Hibernate .

Fordele ved Spring Data JPA

  • Reducerer kedelkode
  • Genererede forespørgsler hjælper med at reducere udviklerens afhængighed af databaseforespørgsler
  • Opbevaringsmønster giver udviklere mulighed for nemt at håndtere persistens.

19. Forklar Spring Boot understøtter afslappet binding.

Generelt skal nøglen til en ejendom være et nøjagtigt match med et ejendomsnavn i Spring Boot-applikationen. Spring Boot understøtter afslappet binding, hvilket betyder, at nøglen til en ejendom ikke behøver at være et nøjagtigt match med et ejendomsnavn.

Desuden kan miljøejendommen skrives under alle omstændigheder. Eksempel – Hvis du har en ejendom propertyDB i din bønneklasse med annotation @ConfigurationProperties , kan du binde den egenskab til enhver af disse miljøegenskaber – PROPERTYDB , propertydb eller property_db .

20. Hvis du vil bruge Spring Security i din applikation, hvordan bruger du den, og hvordan gør den applikationen sikker?

I øjeblikket kan du inkludere spring-boot-starter-security for at sikre din Spring Boot-applikation afhængighed i dit projekt. Som standard tilføjer den nogle af sikkerhedsforanstaltningerne til din applikation. Disse standardforanstaltninger omfatter tilføjelse af grundlæggende formularbaseret godkendelse til din applikation eller sikring af REST API'er.

Efterfølgende, for at udnytte Spring Security, kan man udvide WebSecurityConfigurerAdapter klasse for at tilføje brugerdefinerede sikkerhedsforanstaltninger. I samme klasse skal du bruge @EnableWebSecurity anmærkning. Denne annotation giver Spring mulighed for at finde konfigurationer og anvende klassen på global WebSecurity.

21. Hvad bruger du annotationen @ControllerAdvice til?

@ControllerAdvice annotering hjælper med at administrere undtagelserne i Spring Boot Application. Kort sagt er det en opfangning af undtagelser, der er smidt af metoder, der er kommenteret med @RequestMapping .

ResponseEntityExceptionHandler er basisklassen, der giver centraliseret undtagelseshåndtering.

Indtil videre har jeg dækket spørgsmål til Spring Boot-interview. Jeg vil stadig dække nogle få Microservices-interviewspørgsmål, der kan hjælpe udviklere.

Microservices interviewspørgsmål

1. Hvad er Microservices?

Microservices er en arkitektonisk stil. Den strukturerer en applikation som en samling af tjenester, der er

  • Meget vedligeholdelsesvenlig
  • Løst koblet
  • Nem at implementere
  • Ejes af et lille team

2. Hvad er de almindelige værktøjer, der bruges til at bygge og implementere mikrotjenester?

Dette afhænger af teknologistakken. Docker forbliver et almindeligt værktøj uanset teknologistakken. Derfor tillader docker at oprette en container til mikrotjenesten. Denne container kan derefter implementeres i skymiljøet.

Wiremock er et andet værktøj til fleksibel API-mocking for mikrotjenester.

Hysterix er en afbryder, der hjælper med latens og fejltolerance af applikationen.

3. Hvordan hjælper Spring med udvikling af Microservices?

Vigtigst af alt, foråret hjælper med hurtig udvikling. Spring Boot hjælper med at bygge REST API'er, webapplikationer. Spring Cloud hjælper med at integrere med eksterne systemer.

4. Hvad er udfordringerne med Microservices?

Mikrotjenester er afhængige af hinanden. Derfor skal kommunikationen mellem disse tjenester sikres. Da mikrotjenester er et distribueret system, kan det blive en kompleks model. Der kan være en operationel overhead. Flere tjenester betyder flere ressourcer.

Konklusion

I dette indlæg dækkede jeg de fleste spørgsmål om Spring Boot, som du kan komme ud for under et interview. Hvis du kunne lide dette indlæg, bedes du abonnere på min blog her.


Java tag