Om Spring Boot
Den Java-baserte Spring Boot er et åpen kildekode-nettverk som brukes til å lage mikrotjenester og frittstående applikasjoner. Spring Boot forkorter lengden på en kode og gjør at Spring-applikasjonen enkelt kjører, mens Spring-rammeverket oppnår fleksibilitet og infrastrukturstøtte gjennom dependency injeksjon.
Spring Boot konfigurerer automatisk Spring-applikasjonen, gir frittstående kvalitet uten app-distribusjon med webservere, og avgjørende også når det gjelder å bestemme hvilke pakker og standardinnstillinger som må installeres for avhengigheter.
Spring Boot utviklerstatistikk
Det er for tiden stor etterspørsel etter Spring Boot i bedriftsverdenen på grunn av den utmerkede, høye skalerbarheten og tilgjengeligheten.
Til nå har mer enn 37.000 commitments blitt lastet opp til GitHub. En commit er en snapshop av et depot (sentral plassering av data) som viser alle de siste kildekodeendringene direkte til depotet.
Hvordan intervjue en Spring Boot utvikler?
Noen tips til et screeningintervju
Før en Spring Boot-utvikler ansettes, må ekspertene som gjennomfører intervjuet forberede flere spørsmål for å finne ut om kandidaten oppfyller de nødvendige kriteriene. Viktige spørsmål stilles først, og deretter gruppen av tekniske og praktiske spørsmål.
Vår anskaffelsesspesialist Maria Kyryliuk understreker:
"Utviklere som snakker lidenskapelig om jobben sin, har gode soft skills, viser respekt under intervjuet og sikrer kamerasynlighet og funksjon, er oppmerksomme på samtalen og har gode engelskkunnskaper er alle gode tegn. Og selvfølgelig, hvis jeg føler at det er en god samtaleflyt og en gjensidig forståelse, så er dette det endelige inntrykket som runder av intervjuet”.
De viktigste tekniske ferdighetene å se etter hos en Spring Boot utvikler
En god Spring Boot utvikler bør ha kunnskap om flere sett med tekniske ferdigheter for utførelse og fullføring av tildelte oppgaver.
Når det gjelder arkitektur og programvaredesign, bør den perfekte utvikleren kjenne til noen arkitektoniske mønstre, som:
- Peer-to-peer pattern
- Broker pattern
- Master-slave pattern
- Model-view-controller pattern
- Layered pattern
- Event-bus pattern
- Client-server pattern
- Blackboard pattern
- Pipe-filter pattern
- Interpreter pattern
Deretter er det OOP, eller objektorientert programmering, og dens grunnleggende konsepter som innkapsling, abstraksjon, arv, polymorfisme, brukerdefinerte typer, forhåndsdefinerte typer og operasjoner.
En annen avgjørende ferdighet er kunnskap om mikrotjenester og deres bruk. Java-utviklerne må oppdatere sine ferdigheter og kunnskaper, og kunne følge trenden med å bygge mikrotjenester, i stedet for monolittiske applikasjoner. God kunnskap om Docker Container en nødvendig forutsetning for dette.
Docker har vist seg å være nyttig for både å lage og kompilere mikrotjenesteapplikasjoner, samt nyttig i ulike miljøer. Utviklerne må kjenne godt til DURS-prinsippene, og de fungerer som et Microservice-grunnlag. Det er noen grunnleggende prinsipper for DURS: feilisolering, domenedrevet design, desentralisering, kontinuerlig levering og DevOps.
Den erfarne Spring Boot utvikleren trenger dessuten å kjenne til riktig bruk av mikrotjenestearkitekturområder. Disse nøkkelområdene er autorisasjon, autentisering, nettverkssikkerhet, datasikkerhet og distribusjon.
Når det gjelder mikrotjenestemønstre, er de nedenfor foretrukket og praktisert av erfarne utviklere.
- Delivery pipelines
- GraphQL APIs
- Secure by Design
- Docker Rootless Mode
- HTTPS brukt til sikring
- Håndtering av sensitiv informasjon
- Dependencies må skannes
- Unngåelse av sikkerhetsangrep
- RSocket Endpoints
- Time-based Security
- Cloud and Cluster specific Security best practices
- Access and Identity Tokens
- Scan Docker and Kubernetes Configuration
Utvikleren trenger også kjennskap om den beste praksisen for mikrotjenester, som:
- Microservices rettet mot brukerbehov
- Microservices API Designpraksis
- DevSecOps approach
- Defense in depth pattern
- Managing Sessions
- Automatic security updates
- Sentralisert software for sikkerhet og overvåking
- Aggregating application logger
- Distribuert sporing
DevOps Verktøy
En annen stor fordel for utvikleren er kunnskap og ferdigheter om DevOps. Kunnskap om ett eller flere av verktøyene nedenfor er en god ressurs:
Utviklerne må kunne lage og utvikle passende enhetstester for spesifikke koder. For testing av Java-kodeenhet brukes alltid JUnit. Xunit er det overordnede rammeverket til JUnit. Dekning av enhetstester innenfor et prosjekt sikres gjennom utførelse og implementering av enhetstest-suiter. Enhetstestingen gjøres både manuelt og med automatiserte metoder.
Det finnes et prinsipp som sier "først testing, deretter koding", og JUnit er basert på akkurat dette. JUnit bidrar til bedre effektivitet og kvalitet på utviklerens arbeid. Funksjonene til dette rammeverket:
- Merknader
- Påstander
- Test kjørere
- Automatic Test suite utførelse
- Test Suites
- Test fremgang
- Fixtures
En typisk enhetstest inneholder en test-case for å sjekke programfunksjonaliteten eller en metode innenfor klassen. Test-casen opprettes med input og resultat i tankene for å sjekke begge. Forutsetningskontrollene for input er fullført.
Kontrollene av postcondition-resultater er også fullført. For hver test-case kan du tilsvarende utnevne en positiv og negativ test. Slike tester kan integreres med verktøy som Ant, Maven and Eclipse. De kan også integreres med IDE.
Hva skiller en dyktig Spring Boot utvikler fra en god en?
Den perfekte matchen er en dyktig Spring Boot utvikler som har god forståelse og kunnskap om Java webstandarder som filter og servlet. Et annet pluss er om utvikleren kjenner til meldingskøer (ActiveMQ/RabbitMQ/Kafka), docker, mikrotjenestemønstre og hvordan en cache-server fungerer (Redis). Utvikleren bør dessuten være i stand til å skrive en ren kode og bruke TDD-praksis på en god måte.
Hvordan Proxify kan hjelpe deg med å finne det beste Spring Boot talentet
Det å ta ansettelsesprosessen selv, kan gjøre det å finne det perfektet talentet vanskelig.
For en vellykket gjennomføring fra start til slutt, kan denne prosessen ta mye tid, da det innebærer mye mer enn bare å publisere en annonse eller planlegge intervjuer med kandidater og søkere.
Prosessen inkluderer å bruke mye tid, samt ressurser, for onboarding og opplæring av kandidater samt flere prosesser underveis. Bare forestill deg alle kostnadene og konsekvensene dersom du ender opp med feil kandidat etter ansettelsesprosessen.
Spesialistene og ekspertene for anskaffelse av talenter hos Proxify tilbyr deg sin ekspertise. Gjennom en omhyggelig og tidsbesparende prosess finner vi riktig talentmatch for deg, og vi har topputviklere som kan begynne å jobbe nesten umiddelbart.
Vår prosess for å matche det rette talentet innebærer:
- Egenvurderingsoppgaver som tildeles kandidatene på kortlisten.
- En screeningsamtale gjennomføres med kandidater som vellykket fullførte første del. Her fokuserer vi på å teste tekniske og ikke-tekniske ferdigheter og engelskspråklige kunnskaper. Vi fokuserer også på tidligere og nåværende erfaringer kandidaten har.
- Neste trinn er en presis, teknisk oppgave gjennom en vurderingsoppgave.
- Vi avslutter prosessen med et teknisk intervju som planlegges og gjennomføres av en Spring Boot utvikler med lang erfaring.
Grunnet vår gode innsats og oppmerksomhet sørger vi for at ansettelsesprosessen av en perfekt match blir forkortet, i motsetning til mange andre byråer og rekrutteringstjenester som kan hale ut prosessen. Spring Boot-rammeverket blir stadig mer populært – mest fremtredende med Proxify, hvor etterspørselen og behovet for Spring Boot har økt betydelig i løpet av det siste tiåret.
Essensielle faktorer og vurdering av Spring Boot utviklere
De beste menneskene til å svare på spørsmålet om hvordan man finner de essensielle faktorene som gjør en Spring Boot utvikler til en god ansettelse, er våre egne tekniske intervjuere og utviklere. Vi intervjuet derfor Koray Gecici, Besfort Shehu og Ramazan Sakin, og ba dem gi oss sine personlige tips om hva som er viktigst når de vurderer ansienniteten, erfaringen og den tekniske kunnskapen til Spring Boot utviklere.
I følge programvareingeniør og Spring Boot utvikler Ramazan Sakin, bør en passende kandidat ha kunnskap om:
“VCS-konseptet, samt Git-bruk, og har i tillegg også erfaring med CI/CD og verktøy som Bamboo, Jenkins, GitLab blant annet.”
Ramazan Sakin
Videre legger programvareingeniør og Spring Boot-utvikler Besfort Shehu også til:
"Den riktige passformen bør vite om Starter POMs, Autokonfigurasjon, Spring Boot CLI, samt Spring Boot Initializer."
Besfort Shehu
Dataingeniør og Spring Boot-utvikler Koray Gecici la også til:
“For å vurdere ekspertise er fokuset på å spørre hva utvikleren vet om avhengighetsinjeksjon, bean instantiation av en IOC-beholder og IOC generelt, betydningen av en kontroller, tjeneste, depot og enhetspakker, autokonfigurasjon, kodedekning og branch dekning, samt skille mellom integrasjonstester og enhetstester”.
Koray Gecici
Fordeler ved Spring Boot
Bruken av Spring Boot gir mange fordeler, og bekrefter den altomfattende praktiske funksjonen som gjør arbeidsprosessen enkel og funksjonell for ingeniører og utviklere, og fra mange aspekter.
En fordel med Spring Boot er bruken og avhengigheten av Java, kanskje det mest populære programmeringsspråket. Det gir dessuten et standard testoppsett beregnet for Java-baserte applikasjoner.
Autokonfigurasjon er en annen betydelig fordel, og eksperter er skjønt enige om dette. Det betyr at Spring-applikasjonen lett konfigureres på en enkel måte, og i henhold til JAR-avhengighetene utvikleren valgte.
Hvilke fordeler nevnte Spring Boot utviklerne?
Vi spurte våre utviklere hos Proxify om deres erfaring med Spring Boot og hva de syntes var de mest fornuftige og praktiske funksjonene og fordelene. Vi stoler på deres ekspertise og har samlet verdifull informasjon nedenfor.
Sakin understreket:
- Ingen behov for XML konfigurasjon
- Redusert mengde med boiler-plate kode
- Innbygging av Tomcat, Jetty og Undertow
- Mindre tidkrevende utviklingsprosess, gjennom en RAD plattform (Rapid Application Development)
Videre tilføyer Gecici:
- Enkel, praktisk og med en enkel start og oppsett
- Forenklet håndtering av avhengigheter
Shehu utdypet videre med:
- Ingen behov for WAR fildistribusjon
- Rikt og stort brukerfellesskap, og tilgang til gratis læringskilder og –materiell
- Kan opprette frittstående applikasjoner
I tillegg er disse Spring Boot fordelene verdt å nevne:
- Administrering av fjerntilgang/upåklagelig adminstøtte
- Plugins inkludert for arbeid med databaser
- HTTP-innbygging av servere
Intervjuspørsmål (+ deres svar)
- Forklar forskjellen mellom Spring Boot og Spring.
Forventet svar: Spring representerer et åpen kildekode-rammeverk som støtter Java-apper, mens Spring Boot er et mikroservice-rammeverk - en utvidelse til Spring som legges til over Spring-rammeverket. Vi kan konkludere med at Spring inneholder flere rammer (eller "lag"), og Spring Boot er en av disse. Sistnevnte har imidlertid vist seg å være lettere å jobbe med, og fjerner de ellers nødvendige boilerplate-konfigurasjonene (når du fullfører et Spring-app oppsett).
- Hva betyr Spring Boot JPA?
Forventet svar: JPA står for Java Persistence API, som er et grensesnitt brukt til relasjonsdatabehandling i Java-appene. For å jobbe med JPA, må vi inkludere ORM (Object Relation Mapping) – disse henger sammen fordi ORM gjør det mulig for oss å få databasetabeller som et resultat av konvertering av Java-objekter. Generelt er JPA utmerket for små prosesser i en query og forkorter boilerplate koden.
- Hva er Spring Boot 'profiler'?
Forventet svar: Når deler av en appkonfigurasjon er gruppert sammen, kaller vi disse profiles. Profiles representerer en gruppe konfigurasjonsinnstillinger, og denne grupperingen hjelper oss med å stille inn en presis og nøyaktig konfigurasjon i et respektivt og egnet miljø.
- Hva kan du si om "Initializr"?
Forventet svar: Hvis vi trenger å generere en struktur av et Spring Boot-prosjekt, bruker vi det nettbaserte verktøyet som heter Spring Initializr. Dette verktøyet hjelper utviklere å velge den beste prosjektkonfigurasjonen og hjelper til med å bruke en utvidbar API på best mulig måte. Vi kan se på initializeren som en slags katalysator, eller generator, for strukturen til et Spring-prosjekt.
- Hva er "thymeleaf"?
Forventet svar: Det Java-baserte biblioteket på serversiden som en utvikler bruker for å lage nettapper, heter Thymeleaf. Dette biblioteket hjelper oss med å lage og behandle tekst, CSS, XML, HTML og JavaScript også. Det som gjør dette biblioteket nyttig, og godt å jobbe med, er at det er ganske omfattende. Det forkorter den totale utviklingstiden og krever ikke backend for prototyping-maler.
- Hva kan du si om Spring YAML-konfigurasjon?
Forventet svar: Først må vi definere og forklare YAML og dens korrelasjon til Spring Boot. YAML (Yet Another Markup Language) representerer et tydelig lesbart, fleksibelt språk for datasterilisering, og kan til og med være en passende erstatning for enkelte språk, som for eksempel JSON. En stor fordel med YAML er at du enkelt kan kartlegge det inn i opprinnelige data. Andre fordeler med YAML er den enkle lesbarheten, så det er en perfekt ressurs for konfigurasjonsarbeid, samt muliggjør enkel automatisering av prosesser. I sammenheng med Spring Boot vil YAML være ideelt å bruke det når vi jobber med hierarkikonfigurasjoner og vi må spesifisere dem ryddig.
- Hva kan du si om Spring Boot 'main class'?
Forventet svar: Spring Boot main class inneholder en main method. Denne klassen er oftest sett i Java-apper. I sammenheng med Spring Boot, driver main class SpringApplicationContext fordi klassen inneholder metoden public static void main()
Hvis vi har flere deklarerte hovedklasser i en app, kan vi med Spring Boot enkelt finne og definere en ‘main class’ i konfigurasjonen.
- Definer IoC container og dens kontekst i Spring Boot.
Forventet svar: Avhengighetsinjeksjon blir utrolig effektiv og forenklet når den er automatisk, og denne typen automatiske prosesser gjøres med programmeringsprinsippet IoC container. Det er ikke lenger manuell objektadministrasjon hvis du bruker IoC med Spring Boot, og alle objekter med deres avhengigheter vil være perfekt konfigurert og satt sammen.
- Hva er Spring Boot Devtools?
Forventet svar: For det første er Devtools et sett med verktøy, eller en modul som hjelper utvikleren med å teste og feilsøke koder, og generelt forenkle arbeidet deres. Mer presist i denne sammenhengen, er Spring Boot Devtools en forbedring utgitt av Spring og inkludert som en del av Spring Boot 1.3.
Disse Spring Boot Devtools gir store forbedringer i arbeidet med Spring Boot, som:
- Automatic restart muliggjør en enkel Java-klasse-innlasting, etterfulgt av konfigurasjonen på serversiden.
- Remote Update og Restart – Med dette kan vi enkelt starte på nytt og oppdatere en app eksternt, ved å overvåke alle filendringene i en klassebane og umiddelbart sende dem til en ekstern server. Til slutt startes denne serveren på nytt.
- Property Defaults, for enkel deaktivering av caching og enkel sideoppdatering uten å måtte starte appen på nytt – alt med hjelp og implementering av Thymeleaf og dens 'spring.thymeleaf.cache'
- Remote Debug Tunneling – Tunneling av JDWP (Java Debug Wire Protocol) direkte til appen, gjennom HTTP er utrolig enkelt nå.
- LiveReload er den inkluderte serveren i Devtools, og den gjør det mulig for appen å å oppdatere nettleseren automatisk. Denne nettleserforfriskende, eller ‘auto-refresh’ vil skje med alle endringer vi gjør underveis.
Oppsummert kan du forvente at Spring Boot-appen starter på nytt raskt når du gjør kodeendringer.
- Hva er @RequestMapping? Og @GetMapping?
Forventet svar: Noteringstypen som gir oss informasjon for routingen kalles @RequestMapping og brukes mest for metodenivå eller klassenivå innenfor kontrollerklassen. Hvis du bruker @RequestMapping, forvent kartlegging ut av en global forespørselsbane på kontrollerklassen.
I motsetning til notasjonen på klassenivå nevnt ovenfor, er @GetMapping den sammensatte notasjonen som kobler sammen metoder. Denne notasjonen vil finne alle HTTP GET-forespørsler og tilordne dem enkelt til bestemte behandlermetoder etter behov.