Legfrissebb tavaszi keretinterjúkérdések

Ez a cikk egy sorozat része: • Java Collections interjúkérdések

• Java típusú rendszerinterjúkérdések

• Java egyidejű interjúkérdések (+ válaszok)

• Java osztály felépítése és inicializálása interjúkérdések

• Java 8 interjúkérdések (+ válaszok)

• Memóriakezelés Java interjúkérdésekben (+ válaszok)

• Java Generics interjúkérdések (+ válaszok)

• Java Flow Control interjúkérdések (+ válaszok)

• Java kivételek interjúkérdések (+ válaszok)

• Java Annotations Interjúkérdések (+ Válaszok)

• A tavaszi keretrendszer legfontosabb interjúi (aktuális cikk)

Tartalomjegyzék

  • 1. Bevezetés
  • 2. Tavaszi mag
  • Q1. Mi az a tavaszi keret?
  • Q2. Milyen előnyei vannak a tavasz használatának?
  • Q3.Milyen tavaszi alprojekteket ismer? Írja le röviden őket.
  • Q4. Mi a függőségi injekció?
  • Q5. Hogyan adhatunk be babot tavasszal?
  • Q6. Melyik a bab beadásának legjobb módja és miért
  • Q7. Mi a különbség a Beanfactory és az Applicationcontext között?
  • Q8.Mi az a tavaszi bab?
  • Q9. Mi a bab alapértelmezett hatóköre a tavaszi keretben?
  • Q10. Hogyan határozható meg a bab hatóköre?
  • Q11. A Singleton bab szálbiztos?
  • Q12. Hogyan néz ki a tavaszi bab életciklusa?
  • Q13. Mi a tavaszi Java-alapú konfiguráció?
  • Q14. Lehet-e több tavaszi konfigurációs fájlunk egy projektben?
  • Q15. Mi a tavaszi biztonság?
  • Q16. Mi a tavaszi csizma?
  • Q17. Nevezzen meg néhányat a tavaszi keretben használt tervezési mintákból?
  • Q18. Hogyan működik a hatókör prototípusa?
  • 3. Tavaszi Web MVC
  • Q19. Hogyan lehet kiszolgálni a Servletcontext és a Servletconfig objektumokat egy tavaszi babban?
  • Q20. Mi a vezérlő a tavaszi Mvc-ben?
  • Q21. Hogyan működik a @Requestmapping kommentár?
  • 4. Tavaszi adatelérés
  • Q22. Mi az a tavaszi Jdbctemplate osztály és hogyan használható?
  • Q23. Hogyan engedélyezné a tranzakciókat tavasszal, és milyen előnyökkel járna?
  • Q24. Mi az a tavaszi Dao?
  • 5. Tavaszi szempont-orientált programozás (AOP)
  • Q25. Mi az aspektus-orientált programozás?
  • Q26. Mi a szempont, tanács, pointcut és csatlakozási pont az Aop-ban?
  • Q27. Mi a szövés?
  • 6. 5. tavasz
  • Q28. Mi a reaktív programozás?
  • Q29. Mi az a tavaszi Webflux?
  • Q30. Mik a mono és a fluxus típusai?
  • Q31. Mi a Webkliens és a Webtestclient használata?
  • Q32. Milyen hátrányai vannak a reaktív folyamok használatának?
  • Q33. Kompatibilis a Tavasz 5 a Java régebbi verzióival?
  • Q34. Hogyan integrálódik az 5. rugó a Jdk 9 modularitással?
  • Q35. Használhatjuk a Web Mvc-t és a Webflux-t is ugyanabban az alkalmazásban?
  • 7. Következtetés

1. Bemutatkozás

Ebben a cikkben megvizsgáljuk a tavaszhoz kapcsolódó leggyakoribb kérdéseket, amelyek felmerülhetnek egy állásinterjú során.

2. Tavaszi mag

Q1. Mi az a tavaszi keret?

A tavasz a legszélesebb körben használt keretrendszer a Java Enterprise Edition alkalmazások fejlesztéséhez. A Spring alapvető jellemzői bármilyen Java alkalmazás fejlesztésében felhasználhatók.

Bővítményeit felhasználhatjuk különféle webalkalmazások felépítésére a Jakarta EE platform tetején, vagy egyszerűen használhatjuk függőség-injektálási rendelkezéseit egyszerű önálló alkalmazásokban.

Q2. Milyen előnyei vannak a tavasz használatának?

Tavaszi célok a Jakarta EE fejlesztésének megkönnyítése érdekében. Íme a használatának előnyei:

  • Könnyűsúlyú: van egy kis ráfordítás a keret fejlesztésben való felhasználására
  • A kontroll inverziója (IoC): A rugós tartály gondoskodik a különféle tárgyak bekötési függőségeiről, ahelyett, hogy függő tárgyakat hozna létre vagy keresne
  • Szempontorientált programozás (AOP): A Spring támogatja az AOP-t az üzleti logika és a rendszerszolgáltatások elkülönítésében
  • IoC konténer: kezeli a Spring Bean életciklusát és a projektspecifikus konfigurációkat
  • MVC keretrendszer: amelyet webalkalmazások vagy RESTful webszolgáltatások létrehozására használnak, amelyek képesek XML / JSON válaszok visszaadására
  • Tranzakciók kezelése: akár Java kommentárok, akár Spring Bean XML konfigurációs fájl segítségével csökkenti a kazánlap kódjának mennyiségét a JDBC műveleteknél, a fájlok feltöltésénél stb.
  • Kivételek kezelése: A Spring kényelmes API-t biztosít a technológiára jellemző kivételek ellenőrzés nélküli kivételekké történő lefordításához

Q3. Milyen tavaszi alprojekteket ismer? Írja le őket röviden.

  • Mag - egy kulcsmodul, amely a keretrendszer alapvető részeit biztosítja, mint például az IoC vagy a DI
  • JDBC - ez a modul lehetővé teszi egy JDBC-absztrakciós réteget, amely feleslegessé teszi a JDBC-kódolás szükségességét bizonyos szállítói adatbázisoknál
  • ORM integráció - integrációs rétegeket biztosít a népszerű objektum-relációs leképezési API-khoz, mint például a JPA, a JDO és a Hibernate
  • Web - weborientált integrációs modul, amely többrészes fájlfeltöltést, Servlet-figyelőt és weborientált alkalmazás-kontextus funkciókat biztosít
  • MVC keretrendszer - a Model View Controller tervezési mintáját megvalósító webmodul
  • AOP modul - szempont-orientált programozási megvalósítás, amely lehetővé teszi a tiszta módszer-elfogók és pontvágók definiálását

Q4. Mi a függőségi injekció?

A Dependency Injection, a vezérlés inverziójának (IoC) egyik aspektusa, egy általános fogalom, miszerint az objektumokat nem manuálisan hozza létre, hanem leírja, hogyan kell létrehozni őket. Az IoC-tároló szükség esetén osztályozza a szükséges osztályokat.

További részletekért kérjük, olvassa el itt.

Q5. Hogyan adhatunk be babot tavasszal?

Néhány különböző lehetőség létezik:

  • Setter injekció
  • Konstruktor befecskendezése
  • Terepi injekció

A konfigurálás elvégezhető XML fájlok vagy kommentárok segítségével.

További részletekért olvassa el ezt a cikket.

Q6. Melyik a bab beadásának legjobb módja és miért?

Az ajánlott megközelítés a konstruktor argumentumok használata a kötelező függőségekhez, a beállítók pedig az opcionálisakhoz. A konstruktor befecskendezése lehetővé teszi az értékek injektálását a változhatatlan mezőkbe, és megkönnyíti a tesztelést.

Q7. Mi a különbség a Beanfactory és az Applicationcontext között?

BeanFactory egy olyan tárolót képviselő felület, amely babpéldányokat szolgáltat és kezel. Az alapértelmezett megvalósítás lustán szemlélteti a babot, amikor getBean () nak, nek hívják.

ApplicationContext egy felület, amely az alkalmazásban található összes információt, metaadatot és babot tároló tárolót képviseli. Ez kiterjeszti a BeanFactory felület, de az alapértelmezett megvalósítás lelkesen kezdeményezi a babot, amikor az alkalmazás elindul. Ez a viselkedés felülírható az egyes babok esetében.

Minden különbségre vonatkozóan kérjük, olvassa el a referenciát.

Q8. Mi az a tavaszi bab?

A Spring Beans Java objektumok, amelyeket a Spring IoC tároló inicializál.

Q9. Mi a bab alapértelmezett hatóköre a tavaszi keretben?

Alapértelmezés szerint egy tavaszi bab inicializálása a szingli.

Q10. Hogyan határozható meg a bab hatóköre?

A Spring Bean hatókörének meghatározásához használhatjuk @Scope kommentár vagy „hatókör” attribútum az XML konfigurációs fájlokban. Öt támogatott hatókör létezik:

  • szingli
  • prototípus
  • kérés
  • ülés
  • globális ülés

A különbségeket lásd itt.

Q11. A Singleton bab szálbiztos?

Nem, a szingulbab nem szálbiztos, mivel a szálbiztonság a kivitelezésről szól, míg a szingulett az alkotásra összpontosító tervezési minta. A szálbiztonság csak magától a bab kivitelétől függ.

Q12. Hogyan néz ki a tavaszi bab életciklusa?

Először egy tavaszi babot kell példányosítani, Java vagy XML babdefiníció alapján. Szükség lehet némi inicializálásra is, hogy használható állapotba kerüljön. Ezt követően, amikor a babra már nincs szükség, azt eltávolítják az IoC tartályából.

A teljes ciklus az összes inicializálási módszerrel megjelenik a képen (forrás):

Q13. Mi a tavaszi Java-alapú konfiguráció?

Ez a tavaszi alkalmazások típusbiztonságos konfigurálásának egyik módja. Ez az XML-alapú konfiguráció alternatívája.

Továbbá, ha a projektet XML-ről Java-konfigurációra kívánja áttelepíteni, olvassa el ezt a cikket.

Q14. Lehet-e több tavaszi konfigurációs fájlunk egy projektben?

Igen, nagy projektekben több rugós konfiguráció ajánlott a karbantarthatóság és a modularitás növelése érdekében.

Több Java-alapú konfigurációs fájlt tölthet be:

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

Vagy töltsön be egy XML fájlt, amely az összes többi konfigurációt tartalmazza:

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

Ezen az XML fájlon belül pedig:

Q15. Mi a tavaszi biztonság?

A Spring Security a Spring keretrendszer külön modulja, amely a Java alkalmazások hitelesítési és hitelesítési módszereinek biztosítására összpontosít. Gondoskodik a legtöbb általános biztonsági résről is, például a CSRF-támadásokról.

A Spring Security webalkalmazásokban történő használatához egyszerű feljegyzéssel kezdheti: @EnableWebSecurity.

A Baeldung oldalon megtalálhatja a biztonsággal kapcsolatos cikkek teljes sorozatát.

Q16. Mi a tavaszi csizma?

A Spring Boot egy olyan projekt, amely előre konfigurált keretrendszert biztosít a kazánlemez konfigurációjának csökkentése érdekében, hogy a Spring alkalmazás a legkisebb mennyiségű kóddal futtatható legyen.

Q17. Nevezzen meg néhányat a tavaszi keretben használt tervezési mintákból?

  • Singleton minta: Szinglett hatókörű bab
  • Gyári minta: Babgyár osztályok
  • Prototípus minta: Prototípus hatókörű bab
  • Adapter minta: Tavaszi web és tavaszi MVC
  • Proxy minta: Tavaszi szempontú programozás támogatása
  • Sablon módszer mintája:JdbcTemplate, HibernateTemplate, stb.
  • Első vezérlő: Tavaszi MVC DispatcherServlet
  • Adathozzáférési objektum: Tavaszi DAO támogatás
  • Modellnézet vezérlő: Tavaszi MVC

Q18. Hogyan működik a hatókör prototípusa?

Hatály prototípus azt jelenti, hogy minden alkalommal, amikor a Bean példányát kéri, a Spring új példányt hoz létre és visszaadja. Ez eltér az alapértelmezettől szingli hatókör, ahol egyetlen objektum-példányt egyszer példányosítanak tavaszi IoC-tárolónként.

3. Tavaszi web MVC

Q19. Hogyan lehet eljutni ServletContext és ServletConfig Tárgyak egy tavaszi babban?

Megteheti:

  1. Tavaszi tudatú felületek megvalósítása. A teljes lista itt érhető el.
  2. Használata @Autowired felirat ezekre a babokra:
@Autowired ServletContext servletContext; @Autowired ServletConfig servletConfig;

Q20. Mi a vezérlő a tavaszi Mvc-ben?

Egyszerűen fogalmazva: a DispatcherServlet -val annotált osztályokra irányulnak @Vezérlő. Minden vezérlőosztály egy vagy több kérést leképez olyan módszerekre, amelyek feldolgozzák és végrehajtják a kéréseket a megadott bemenetekkel.

Ha vissza kell lépnie, javasoljuk, hogy tekintse át az elülső vezérlő koncepcióját a tipikus tavaszi MVC architektúrában.

Q21. Hogyan működik a @Requestmapping kommentár?

A @RequestMapping annotációt használnak a webes kérések Spring Controller módszerekhez való leképezéséhez. Az egyszerű használati esetek mellett használhatjuk HTTP fejlécek leképezésére, az URI egyes részeinek megkötésére @PathVariable, valamint az URI paraméterekkel és a @RequestParam annotáció.

További részletek a @RequestMapping itt érhetők el.

További tavaszi MVC kérdésekkel kapcsolatban kérjük, olvassa el a tavaszi MVC interjúkérdések cikkét.

4. Tavaszi adatelérés

Q22. Mi az a tavaszi Jdbctemplate osztály és hogyan használható?

A tavaszi JDBC sablon az elsődleges API, amelyen keresztül hozzáférhetünk az adatbázis-műveletek logikájához, amely érdekel minket:

  • kapcsolatok létrehozása és lezárása
  • utasítások és tárolt eljáráshívások végrehajtása
  • iterálás a ResultSet és visszatérő eredmények

Használatához meg kell határoznunk a Adatforrás:

@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 ("vendég_felhasználó"); dataSource.setPassword ("vendég_jelszó"); return dataSource; }}

További magyarázatért olvassa el ezt a gyors cikket.

Q23. Hogyan engedélyezné a tranzakciókat tavasszal, és milyen előnyökkel járna?

A konfigurálásnak két különféle módja van Tranzakciók - kommentárokkal vagy Aspect Oriented Programming (AOP) használatával - mindegyiknek megvan az előnye.

A tavaszi tranzakciók használatának előnyei a hivatalos dokumentumok szerint a következők:

  • Biztosítson következetes programozási modellt a különböző tranzakciós API-k között, például JTA, JDBC, Hibernate, JPA és JDO
  • Támogassa a deklaratív tranzakciókezelést
  • Adjon egyszerűbb API-t az automatizált tranzakciókezeléshez, mint néhány összetett tranzakciós API, például a JTA
  • Nagyon jól integrálható a Spring különféle adatelérési absztrakcióival

Q24. Mi az a tavaszi Dao?

A tavaszi adatelérési objektum a Spring támogatása, amelyet az adatelérési technológiákkal, például a JDBC, a Hibernate és a JPA következetes és egyszerű módon tud működni.

Természetesen elmélyültebben foglalkozhat a kitartással, a teljes sorozat pedig a tavaszi kitartást tárgyalja.

5. Tavaszi szempont-orientált programozás (AOP)

Q25. Mi az aspektus-orientált programozás?

Szempontok lehetővé teszi a több területet érintő problémák modulációját, mint például a tranzakciókezelés, amely több típust és objektumot ölel fel, extra viselkedés hozzáadásával a már létező kódhoz az érintett osztályok módosítása nélkül.

Itt van a példa a szempont-alapú végrehajtási idő naplózására.

Q26. Mi a szempont, tanács, pointcut és csatlakozási pont az Aop-ban?

  • Vonatkozás: olyan osztály, amely átfogó problémákat valósít meg, például tranzakciókezelést
  • Tanács: azok a módszerek, amelyek végrehajtásra kerülnek, amikor egy adott JoinPoint illesztéssel Pointcut elérte az alkalmazás
  • Pointcut: szabályos kifejezések halmaza, amelyekhez illeszkedik JoinPoint annak megállapítására, hogy Tanács végre kell hajtani vagy sem
  • JoinPoint: egy pont a program végrehajtása során, például egy módszer végrehajtása vagy egy kivétel kezelése

Q27. Mi a szövés?

A hivatalos dokumentumok szerint szövés olyan folyamat, amely összekapcsolja a szempontokat más alkalmazástípusokkal vagy objektumokkal, hogy tanácsos objektumot hozzon létre. Ez történhet fordítási, betöltési vagy futási időben. A tavaszi AOP, a többi tiszta Java AOP keretrendszerhez hasonlóan, teljesít szövés futás közben.

6. 5. tavasz

Q28. Mi a reaktív programozás?

A reaktív programozás a nem blokkoló, eseményvezérelt alkalmazásokról szól, amelyek kis szálszámmal méretezhetők, és az ellennyomás kulcsfontosságú összetevő annak biztosítására, hogy a gyártók ne borítsák el a fogyasztókat.

A reaktív programozás elsődleges előnyei:

  • a számítási erőforrások fokozottabb kihasználása többmagos és többprocesszoros hardvereken
  • és megnövelt teljesítmény a szériaszám csökkentésével

A reaktív programozás általában eseményvezérelt, ellentétben a reaktív rendszerekkel, amelyek üzenetvezéreltek. Így a reaktív programozás nem jelenti azt, hogy reaktív rendszert építenénk, ami építészeti stílus.

A reaktív programozás azonban felhasználható a reaktív rendszerek megvalósításának eszközeként, ha követjük a reaktív manifesztumot, amelynek megértéséhez elengedhetetlenül fontos.

Ennek alapján a reaktív rendszereknek négy fontos jellemzőjük van:

  • Fogékony: a rendszernek időben reagálnia kell
  • Rugalmas: ha a rendszer bármilyen hibával szembesül, akkor reagálnia kell
  • Rugalmas: a reaktív rendszerek reagálhatnak a változásokra, és változékony munkaterhelés mellett képesek reagálni
  • Üzenet-vezérelt: A reaktív rendszereknek az aszinkron üzenetátadásra támaszkodva meg kell határozniuk az alkatrészek közötti határt

Q29. Mi az a tavaszi Webflux?

A Spring WebFlux a Spring reaktív verem webes keretrendszere, és alternatívája a Spring MVC-nek.

Ennek a reaktív modellnek az elérése és a nagy skálázhatóság érdekében az egész verem nem blokkoló. További részletekért tekintse meg a Spring 5 WebFlux bemutatónkat.

Q30. Mik a mono és a fluxus típusai?

A Spring Framework 5 WebFlux keretrendszere aszinkron alapként a Reactort használja.

Ez a projekt két alapvető típust kínál: Monó egyetlen aszinkron értéket képvisel, és Fényáram hogy az aszinkron értékek áramát ábrázolja. Mindketten végrehajtják a Kiadó a reaktív folyamok specifikációjában meghatározott interfész.

Monó megvalósítja Kiadó és 0 vagy 1 elemet ad vissza:

nyilvános absztrakt osztály Mono megvalósítja Kiadó {...}

Is, Flux megvalósítja Kiadó és visszatér N elemek:

nyilvános absztrakt osztály A Flux megvalósítja a Publisher {...}

Definíció szerint a két típus patakokat képvisel, ezért mindketten lusták, ami azt jelenti, hogy semmi sem kerül végrehajtásra, amíg nem fogyasztjuk el a folyamot a Iratkozz fel() módszer. Mindkét típus megváltoztathatatlan, ezért bármilyen módszer meghívása új példányt ad vissza Fényáram vagy Monó.

Q31. Mi a Webkliens és a Webtestclient használata?

Web Ügyfél az új Web Reactive keretrendszer egyik olyan eleme, amely reaktív kliensként működhet a nem blokkoló HTTP kérések végrehajtása során. Reaktív kliens lévén ellennyomással képes kezelni a reaktív áramokat, és teljes mértékben kihasználhatja a Java 8 lambdas előnyeit. Szinkronizálási és aszinkron szcenáriókat is képes kezelni.

Másrészt a WebTestClient egy hasonló osztály, amelyet tesztekben is használhatunk. Alapvetően vékony héj a Webkliens. HTTP-kapcsolaton keresztül bármely szerverhez csatlakozhat. A webkivonat-kérések és válaszobjektumok segítségével közvetlenül is kapcsolódhat a WebFlux alkalmazásokhoz, HTTP-kiszolgáló nélkül.

Q32. Milyen hátrányai vannak a reaktív folyamok használatának?

A reaktív áramok alkalmazásának fő hátrányai:

  • A reaktív alkalmazás hibaelhárítása kissé nehéz; feltétlenül nézze meg a reaktív folyamok hibakeresésével kapcsolatos oktatóanyagunkat, ahol néhány hasznos hibakeresési tipp található
  • A reaktív adattárak támogatása korlátozott, mivel a hagyományos relációs adattárházaknak még mindig be kell tartaniuk a reaktív paradigmát
  • Van egy extra tanulási görbe a megvalósítás során

Q33. Kompatibilis az 5. tavasz a Java régebbi verzióival?

A Java 8 szolgáltatásainak kihasználása érdekében megújult a Spring kódbázis. Ez azt jelenti, hogy a Java régebbi verziói nem használhatók. Ezért a keretrendszerhez minimum Java 8 szükséges.

Q34. Hogyan integrálódik az 5. tavasz a Jdk 9 modularitásával?

5. tavasszal mindent moduláltak, így nem leszünk kénytelenek olyan üvegeket importálni, amelyek esetleg nem rendelkeznek a keresett funkciókkal.

Kérjük, olvassa el a Java 9 modularitásról szóló útmutatónkat a technológia működésének mélyebb megértése érdekében.

Nézzünk meg egy példát, hogy megértsük a Java 9 új modul funkcióit, és hogyan lehet megszervezni a Spring 5 projektet ezen koncepció alapján.

Először hozzunk létre egy új osztályt, amely egyetlen metódust tartalmaz az a visszatérésére Húr "Helló Világ". Ezt elhelyezzük egy új Java projektben - HelloWorldModule:

csomag com.szia; public class HelloWorld {public String sayHello () {return "HelloWorld"; }}

Akkor hozzunk létre egy új modult:

modul com.hello {export com.hello; }

Hozzunk létre egy új Java projektet, HelloWorldClient, hogy a fenti modult egy modul definiálásával fogyasszuk:

modul com.hello.client {megköveteli com.hello; }

A fenti modul most tesztelhető lesz:

public class HelloWorldClient {public static void main (String [] args) {HelloWorld helloWorld = new HelloWorld (); log.info (helloWorld.sayHello ()); }}

Q35. Használhatjuk a Web Mvc-t és a Webflux-t is ugyanabban az alkalmazásban?

Mostantól a Spring Boot csak a Spring MVC-t vagy a Spring WebFlux-ot engedélyezi, mivel a Spring Boot megpróbálja automatikusan konfigurálni a kontextust az osztályútvonalán fennálló függőségektől függően.

A Spring MVC nem tud futni a Netty-n. Ezenkívül az MVC blokkoló paradigma, a WebFlux pedig nem blokkoló stílus, ezért nem szabad mindkettőt keverni, mivel ezek különböző célokat szolgálnak.

7. Következtetés

Ebben a terjedelmes cikkben a tavaszról szóló technikai interjú legfontosabb kérdéseit tártuk fel.

Reméljük, hogy ez a cikk segít a közelgő tavaszi interjúban. Sok szerencsét!

« Korábbi Java kommentárok interjúkérdések (+ válaszok)

$config[zx-auto] not found$config[zx-overlay] not found