Najpopularnija pitanja za proljetni okvirni intervju

Ovaj je članak dio serije: • Pitanja za intervju za Java Collections

• Pitanja o intervjuu za sustav tipa Java

• Pitanja za intervju s Java-om (+ odgovori)

• Struktura Java razreda i pitanja za intervju za inicijalizaciju

• Java 8 pitanja za intervju (+ odgovori)

• Upravljanje memorijom u Java intervjuu Pitanja (+ odgovori)

• Pitanja o intervjuu za Java Generics (+ odgovori)

• Pitanja za intervju s Java Flow Control (+ odgovori)

• Pitanja o intervjuu za iznimke Java (+ odgovori)

• Pitanja za intervju s Java Annotations (+ odgovori)

• Najpopularnija pitanja za proljetni okvirni intervju (trenutni članak)

Sadržaj

  • 1. Uvod
  • 2. Proljetna jezgra
  • Q1. Što je proljetni okvir?
  • Q2. Koje su prednosti korištenja proljeća?
  • Q3.Koje proljetne potprojekte znate? Opišite ih ukratko.
  • Q4. Što je injekcija ovisnosti?
  • P5. Kako možemo ubrizgati grah u proljeće?
  • P6. Koji je najbolji način ubrizgavanja graha i zašto
  • P7. Koja je razlika između konteksta beanfactory-a i application-a?
  • P8.Što je proljetni grah?
  • P9. Koji je zadani opseg graha u proljetnom okviru?
  • Q10. Kako definirati opseg graha?
  • Q11. Je li grah Singleton siguran navoj?
  • Q12. Kako izgleda životni ciklus proljetnog graha?
  • Q13. Što je proljetna konfiguracija zasnovana na Javi?
  • P14. Možemo li imati više datoteka za konfiguraciju proljeća u jednom projektu?
  • P15. Što je proljetna sigurnost?
  • Q16. Što je proljetni čizma?
  • Q17. Navedite neke od obrazaca dizajna koji se koriste u proljetnom okviru?
  • Q18. Kako djeluje prototip opsega?
  • 3. Proljetni web MVC
  • Q19. Kako doći do objekata Servletcontext i Servletconfig u proljetnom grahu?
  • Q20. Što je kontroler u Spring Mvc?
  • Q21. Kako funkcionira bilješka @Requestmapping?
  • 4. Proljetni pristup podacima
  • Q22. Što je proljetna klasa Jdbctemplate i kako je koristiti?
  • Q23. Kako biste omogućili transakcije na proljeće i koje su njihove prednosti?
  • Q24. Što je Spring Dao?
  • 5. Proljetno aspektno orijentirano programiranje (AOP)
  • Q25. Što je programiranje usmjereno na aspekte?
  • Q26. Što su aspekt, savjeti, točka rezanja i točka spajanja u Aopu?
  • Q27. Što se tka?
  • 6. Proljeće 5
  • Q28. Što je reaktivno programiranje?
  • Q29. Što je Spring Webflux?
  • Q30. Koje su vrste mono i fluksa?
  • Q31. Čemu služi Webclient i Webtestclient?
  • Q32. Koji su nedostaci upotrebe reaktivnih struja?
  • Q33. Je li Proljeće 5 kompatibilno sa starijim verzijama Jave?
  • Q34. Kako se Ow Spring 5 integrira s Jdk 9 modularnošću?
  • Q35. Možemo li koristiti Web Mvc i Webflux u istoj aplikaciji?
  • 7. Zaključak

1. Uvod

U ovom ćemo članku pogledati neka od najčešćih pitanja vezanih uz proljeće koja se mogu pojaviti tijekom razgovora za posao.

2. Proljetna jezgra

Q1. Što je proljetni okvir?

Proljeće je najčešće korišten okvir za razvoj aplikacija Java Enterprise Edition. Osnovne značajke Springa mogu se koristiti u razvoju bilo koje Java aplikacije.

Njegova proširenja možemo koristiti za izgradnju različitih web aplikacija na vrhu platforme Jakarta EE ili možemo jednostavno koristiti njegove odredbe o ubrizgavanju ovisnosti u jednostavnim samostalnim aplikacijama.

Q2. Koje su prednosti korištenja proljeća?

Proljetni ciljevi olakšavaju razvoj EE u Jakarti. Prednosti su njegove upotrebe:

  • Lagana: postoji mala potrošnja korištenja okvira u razvoju
  • Inverzija upravljanja (IoC): Proljetni spremnik brine se o ovisnosti ožičenja različitih objekata, umjesto da stvara ili traži ovisne objekte
  • Aspektno orijentirano programiranje (AOP): Spring podržava AOP za odvajanje poslovne logike od sistemskih usluga
  • IoC spremnik: upravlja životnim ciklusom Spring Bean-a i konfiguracijama specifičnim za projekt
  • MVC okvir: koja se koristi za stvaranje web aplikacija ili RESTful web usluga, sposobnih za vraćanje XML / JSON odgovora
  • Upravljanje transakcijama: smanjuje količinu kotlovskog koda u JDBC operacijama, prijenosu datoteka itd., bilo korištenjem Java anotacija ili Spring Bean XML konfiguracijske datoteke
  • Rukovanje iznimkama: Spring pruža prikladan API za prevođenje iznimki specifičnih za tehnologiju u neprovjerene iznimke

Q3. Koje proljetne potprojekte znate? Opišite ih ukratko.

  • Jezgra - ključni modul koji pruža temeljne dijelove okvira, poput IoC-a ili DI-a
  • JDBC - ovaj modul omogućuje JDBC-apstrakcijski sloj koji uklanja potrebu za obavljanjem JDBC kodiranja za određene baze podataka dobavljača
  • ORM integracija - pruža integracijske slojeve za popularne API-je objektno-relacijskog mapiranja, poput JPA, JDO i Hibernate
  • mreža - mrežno orijentirani integracijski modul, koji omogućava prijenos više dijelova datoteka, slušatelje Servleta i funkcionalnosti konteksta orijentirane na web
  • MVC okvir - web modul koji implementira uzorak dizajna upravljačkog programa Model View
  • AOP modul - implementacija programiranja usmjerenog na aspekt koji omogućuje definiciju čistih presretača metoda i točaka

Q4. Što je injekcija ovisnosti?

Injekcija ovisnosti, aspekt Inverzije kontrole (IoC), općeniti je koncept koji kaže da svoje objekte ne izrađujete ručno, već opisujete kako ih treba stvoriti. IoC spremnik će po potrebi stvoriti potrebne klase.

Za više detalja pogledajte ovdje.

P5. Kako možemo ubrizgati grah u proljeće?

Postoji nekoliko različitih opcija:

  • Setter Injection
  • Injektiranje konstruktora
  • Ubrizgavanje polja

Konfiguracija se može izvršiti pomoću XML datoteka ili napomena.

Za više pojedinosti pogledajte ovaj članak.

P6. Koji je najbolji način ubrizgavanja graha i zašto?

Preporučeni pristup je korištenje argumenata konstruktora za obvezne ovisnosti i postavljača za neobavezne. Injektiranje konstruktora omogućuje ubrizgavanje vrijednosti u nepromjenjiva polja i olakšava testiranje.

P7. Koja je razlika između konteksta Beanfactory i Application?

BeanFactory je sučelje koje predstavlja spremnik koji pruža i upravlja primjercima graha. Zadana implementacija lažno stvara grah kada getBean () Zove se.

ApplicationContext je sučelje koje predstavlja spremnik koji sadrži sve informacije, metapodatke i grah u aplikaciji. Također se proširuje BeanFactory sučelje, ali zadana implementacija nestrpljivo izrađuje grah kad se aplikacija pokrene. Ovo se ponašanje može nadjačati za pojedine mahune.

Za sve razlike pogledajte referencu.

P8. Što je proljetni grah?

Spring Beans su Java objekti koje inicijalizira Spring IoC spremnik.

P9. Koji je zadani opseg graha u proljetnom okviru?

Prema zadanim postavkama, Spring Bean je inicijaliziran kao jednokrevetna.

Q10. Kako definirati opseg graha?

Da bismo postavili opseg Spring Bean-a, možemo koristiti @Skop napomena ili atribut "opseg" u XML konfiguracijskim datotekama. Podržanih je pet opsega:

  • jednokrevetna
  • prototip
  • zahtjev
  • sjednica
  • globalna sesija

Za razlike pogledajte ovdje.

Q11. Je li grah Singleton siguran navoj?

Ne, singleton grah nije siguran u niti, jer je sigurnost niti u izvedbi, dok je singleton uzorak dizajna koji se fokusira na stvaranje. Sigurnost niti ovisi samo o samoj implementaciji graha.

Q12. Kako izgleda životni ciklus proljetnog graha?

Prvo treba izraditi instancu proljetnog graha na temelju definicije Java ili XML graha. Također će biti potrebno izvršiti neku inicijalizaciju kako bi se dovelo u upotrebljivo stanje. Nakon toga, kada grah više nije potreban, uklonit će se iz IoC spremnika.

Na slici (izvor) prikazan je cijeli ciklus sa svim načinima inicijalizacije:

Q13. Što je proljetna konfiguracija utemeljena na Javi?

To je jedan od načina konfiguriranja aplikacija temeljenih na Springu na siguran način. To je alternativa konfiguraciji koja se temelji na XML-u.

Također, ako svoj projekt želite migrirati s XML-a na Java config, pogledajte ovaj članak.

P14. Možemo li imati više datoteka za konfiguraciju proljeća u jednom projektu?

Da, u velikim projektima preporučuje se višestruka konfiguracija opruge kako bi se povećala održivost i modularnost.

Možete učitati više konfiguracijskih datoteka temeljenih na Javi:

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

Ili učitajte jednu XML datoteku koja će sadržavati sve ostale konfiguracije:

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

A unutar ove XML datoteke imat ćete:

P15. Što je proljetna sigurnost?

Spring Security je zasebni modul Spring okvira koji se fokusira na pružanje metoda provjere autentičnosti i autorizacije u Java aplikacijama. Također se brine o većini uobičajenih sigurnosnih ranjivosti poput CSRF napada.

Da biste koristili Spring Security u web aplikacijama, možete započeti s jednostavnom bilješkom: @EnableWebSecurity.

Na Baeldungu možete pronaći čitav niz članaka vezanih uz sigurnost.

Q16. Što je proljetni čizma?

Spring Boot je projekt koji pruža unaprijed konfigurirani skup okvira za smanjenje konfiguracije kotla, tako da možete imati pokrenutu aplikaciju Spring s najmanjom količinom koda.

Q17. Navedite neke od obrazaca dizajna koji se koriste u proljetnom okviru?

  • Jednokraki uzorak: Grah s jednim krunom
  • Tvornički uzorak: Predavanja tvornice graha
  • Uzorak prototipa: Grah s prototipom
  • Uzorak adaptera: Spring Web i Spring MVC
  • Uzorak proxyja: Podrška za programiranje usmjereno na proljeće
  • Uzorak metode predloška:JdbcTemplate, HibernateTemplate, itd.
  • Prednji kontroler: Proljetni MVC DispatcherServlet
  • Objekt pristupa podacima: Proljetna podrška DAO
  • Model View Controller: Proljetni MVC

Q18. Kako djeluje prototip opsega?

Opseg prototip znači da će svaki put kad pozovete instancu Bean-a, Spring stvoriti novu instancu i vratiti je. To se razlikuje od zadane vrijednosti jednokrevetna opseg, gdje se instancira pojedinačna instanca objekta jednom po Spring IoC spremniku.

3. Proljetni web MVC

Q19. Kako doći ServletContext i ServletConfig Predmeti u proljetnom grahu?

Možete to učiniti na sljedeći način:

  1. Implementacija sučelja svjesnih proljeća. Cjelovit popis dostupan je ovdje.
  2. Koristeći @Autowired napomena na onom grahu:
@Autowired ServletContext servletContext; @Autowired ServletConfig servletConfig;

Q20. Što je kontroler u Spring Mvc?

Jednostavno rečeno, svi zahtjevi koje obrađuje DispatcherServlet usmjereni su na satove označene s @Controller. Svaka klasa kontrolera preslikava jedan ili više zahtjeva u metode koje obrađuju i izvršavaju zahtjeve s navedenim ulazima.

Ako trebate napraviti korak unatrag, preporučujemo da pogledate koncept prednjeg kontrolera u tipičnoj Spring MVC arhitekturi.

Q21. Kako funkcionira bilješka @Requestmapping?

The @RequestMapping napomena se koristi za mapiranje web zahtjeva na metode Spring Controller. Pored jednostavnih slučajeva upotrebe, možemo ga koristiti za mapiranje HTTP zaglavlja, vezujući dijelove URI-ja @PathVariable, i rad s URI parametrima i @RequestParam bilješka.

Više detalja o @RequestMapping dostupni su ovdje.

Za dodatna pitanja o proljetnom MVC-u, pogledajte članak Pitanja o proljetnom MVC-u.

4. Proljetni pristup podacima

Q22. Što je proljetna klasa Jdbctemplate i kako je koristiti?

Predložak Spring JDBC primarni je API putem kojeg možemo pristupiti logici operacija baze podataka koja nas zanima:

  • stvaranje i zatvaranje veza
  • izvršavanje izjava i pohranjenih poziva procedura
  • ponavljanje preko Postavi rezultat i vraćanje rezultata

Da bismo ga koristili, trebat ćemo definirati jednostavnu konfiguraciju Izvor podataka:

@Configuration @ComponentScan ("org.baeldung.jdbc") javna klasa SpringJdbcConfig {@Bean public DataSource mysqlDataSource () {DriverManagerDataSource dataSource = novi DriverManagerDataSource (); dataSource.setDriverClassName ("com.mysql.jdbc.Driver"); dataSource.setUrl ("jdbc: mysql: // localhost: 3306 / springjdbc"); dataSource.setUsername ("gost_korisnik"); dataSource.setPassword ("lozinka_gosta"); vratiti dataSource; }}

Za daljnje objašnjenje možete proći kroz ovaj brzi članak.

Q23. Kako biste omogućili transakcije na proljeće i koje su njihove prednosti?

Postoje dva različita načina konfiguriranja Transakcije - s bilješkama ili pomoću aspektno orijentiranog programiranja (AOP) - svaki sa svojim prednostima.

Prednosti korištenja proljetnih transakcija, prema službenim dokumentima, su:

  • Pružite konzistentan model programiranja za različite API-je transakcija kao što su JTA, JDBC, Hibernate, JPA i JDO
  • Podržati deklarativno upravljanje transakcijama
  • Navedite jednostavniji API za programsko upravljanje transakcijama od nekih složenih API-ja za transakcije, poput JTA
  • Vrlo dobro se integrirajte s Springovim raznim apstrakcijama za pristup podacima

Q24. Što je Spring Dao?

Spring Data Access Object je Spring podrška koja se pruža za dosljedan i jednostavan rad s tehnologijama za pristup podacima poput JDBC, Hibernate i JPA.

Možete, naravno, dublje proučiti ustrajnost, a cijela serija raspravlja o upornosti u proljeće.

5. Proljetno programiranje usmjereno na aspekte (AOP)

Q25. Što je programiranje usmjereno na aspekte?

Aspekti omogućiti modularizaciju međusektorskih problema kao što je upravljanje transakcijama koji obuhvaćaju više vrsta i objekata dodavanjem dodatnog ponašanja već postojećem kodu bez mijenjanja pogođenih klasa.

Evo primjera evidentiranja vremena izvršenja temeljenog na aspektima.

Q26. Što su aspekt, savjeti, točka rezanja i točka spajanja u Aopu?

  • Aspekt: klasa koja provodi međusektorske brige, poput upravljanja transakcijama
  • Savjet: metode koje se izvršavaju kada je određeno JoinPoint s podudaranjem Pointcut je postignuto u prijavi
  • Pointcut: skup regularnih izraza s kojima se podudaraju JoinPoint kako bi se utvrdilo da li Savjet treba izvršiti ili ne
  • JoinPoint: točka tijekom izvođenja programa, poput izvođenja metode ili obrade iznimke

Q27. Što se tka?

Prema službenim dokumentima, tkanje je postupak koji povezuje aspekte s drugim vrstama aplikacija ili objektima kako bi stvorio preporučeni objekt. To se može učiniti tijekom vremena kompajliranja, učitavanja ili tijekom izvođenja. Proljetni AOP, kao i ostali čisti Java AOP okviri, izvodi tkanje za vrijeme izvođenja.

6. Proljeće 5

Q28. Što je reaktivno programiranje?

Reaktivno programiranje odnosi se na neblokirajuće programe vođene događajima koji se skaliraju s malim brojem niti, pri čemu je povratni pritisak ključni sastojak čiji je cilj osigurati da proizvođači ne prevladaju potrošače.

Primarne blagodati reaktivnog programiranja su:

  • povećano korištenje računalnih resursa na višejezgrenom i višeprocesorskom hardveru
  • i povećane performanse smanjenjem serializacije

Reaktivno programiranje uglavnom se temelji na događajima, za razliku od reaktivnih sustava koji se pokreću porukama. Dakle, korištenje reaktivnog programiranja ne znači da gradimo reaktivni sustav, što je arhitektonski stil.

Međutim, reaktivno programiranje može se koristiti kao sredstvo za implementaciju reaktivnih sustava ako slijedimo reaktivni manifest, što je vrlo važno za razumijevanje.

Na temelju toga, reaktivni sustavi imaju četiri važne karakteristike:

  • Uzvratni: sustav treba reagirati na vrijeme
  • Otporna: u slučaju da se sustav suoči s bilo kojim neuspjehom, trebao bi reagirati
  • Elastičan: reaktivni sustavi mogu reagirati na promjene i reagirati pod različitim opterećenjima
  • Vođen porukom: reaktivni sustavi moraju uspostaviti granicu između komponenata oslanjajući se na asinkrono prosljeđivanje poruka

Q29. Što je Spring Webflux?

Spring WebFlux je Springov reaktivni stack mrežni okvir i alternativa je Spring MVC.

Da bi se postigao ovaj reaktivni model i bio visoko skalabilan, cijeli stog ne blokira. Dodatne detalje potražite u našem vodiču za Spring 5 WebFlux.

Q30. Koje su mono i fluks vrste?

Okvir WebFlux u Spring Framework 5 koristi Reactor kao svoj async temelj.

Ovaj projekt pruža dvije osnovne vrste: Mono da predstavljaju jednu vrijednost asinkronizacije i Fluks predstavljati tok vrijednosti asinkronizacije. Oboje provode Izdavač sučelje definirano u specifikaciji reaktivnih tokova.

Mono provodi Izdavač i vraća 0 ili 1 element:

javna apstraktna klasa Mono implementira Publisher {...}

Također, Protok provodi Izdavač i vraća se N elementi:

javna apstraktna klasa Flux implementira Publisher {...}

Po definiciji, dvije vrste predstavljaju struje, stoga su obje lijene, što znači da se ništa ne izvršava dok ne potrošimo tok koristeći pretplatite se () metoda. Obje su vrste nepromjenjive, pa će pozivanje bilo koje metode vratiti novu instancu Fluks ili Mono.

Q31. Čemu služi Webclient i Webtestclient?

WebClient komponenta je u novom okviru Web Reactive koji može djelovati kao reaktivni klijent za izvršavanje neblokirajućih HTTP zahtjeva. Budući da je reaktivni klijent, može rukovati reaktivnim strujama s povratnim tlakom i u potpunosti može iskoristiti Java 8 lambdas. Također može obraditi i sinkronizacijski i asinkroni scenarij.

S druge strane, WebTestClient je slična klasa koju možemo koristiti u testovima. U osnovi je to tanka ljuska oko WebClient. Može se povezati s bilo kojim poslužiteljem putem HTTP veze. Također se može izravno vezati za WebFlux aplikacije pomoću lažnih objekata zahtjeva i odgovora, bez potrebe za HTTP poslužiteljem.

Q32. Koji su nedostaci upotrebe reaktivnih struja?

Glavni nedostaci korištenja reaktivnih tokova su:

  • Rješavanje problema s reaktivnom aplikacijom pomalo je teško; svakako potražite nekoliko korisnih savjeta za uklanjanje pogrešaka u našem vodiču o otklanjanju pogrešaka u reaktivnim streamovima
  • Podrška za reaktivne pohrane podataka je ograničena, jer tradicionalne relacijske pohrane podataka tek trebaju prihvatiti reaktivnu paradigmu
  • Pri provedbi postoji dodatna krivulja učenja

Q33. Je li Proljeće 5 kompatibilno sa starijim verzijama Jave?

Kako bi se iskoristile prednosti značajki Java 8, proljetna baza koda je preuređena. To znači da se starije verzije Jave ne mogu koristiti. Dakle, okvir zahtijeva najmanje Java 8.

Q34. Kako se Proljeće 5 integrira s modulom Jdk 9?

U proljeće 5. sve je modularizirano, stoga nećemo biti prisiljeni uvoziti staklenke koje možda nemaju funkcije koje tražimo.

Molimo pogledajte naš vodič za modularnost Java 9 kako biste detaljnije razumjeli kako ova tehnologija funkcionira.

Pogledajmo primjer za razumijevanje nove funkcionalnosti modula u Javi 9 i kako organizirati projekt Spring 5 zasnovan na ovom konceptu.

Za početak, izradimo novu klasu koja sadrži jednu metodu za vraćanje a Niz "Pozdrav svijete". To ćemo smjestiti u novi Java projekt - HelloWorldModule:

paket com.hello; javna klasa HelloWorld {javni niz sayHello () {return "HelloWorld"; }}

Zatim stvorimo novi modul:

modul com.hello {izvoz com.hello; }

Ajmo sada stvoriti novi Java projekt, HelloWorldClient, da konzumiraju gornji modul definiranjem modula:

modul com.hello.client {zahtijeva com.hello; }

Gornji modul bit će dostupan za testiranje sada:

javna klasa HelloWorldClient {javna statička void glavna (String [] args) {HelloWorld helloWorld = novi HelloWorld (); log.info (helloWorld.sayHello ()); }}

Q35. Možemo li koristiti Web Mvc i Webflux u istoj aplikaciji?

Od sada, Spring Boot dopušta samo Spring MVC ili Spring WebFlux, jer Spring Boot pokušava automatski konfigurirati kontekst, ovisno o ovisnostima koje postoje na putu do klase.

Također, Spring MVC ne može raditi na Nettyju. Štoviše, MVC je paradigma blokiranja, a WebFlux neblokirajući stil, stoga ne bismo trebali miješati oboje, jer oni imaju različite svrhe.

7. Zaključak

U ovom opsežnom članku istražili smo neka od najvažnijih pitanja za tehnički intervju o Proljeću.

Nadamo se da će vam ovaj članak pomoći u predstojećem proljetnom intervjuu. Sretno!

« Prethodna pitanja o intervjuu za Java Annotations (+ odgovori)