Legfrissebb tavaszi keretinterjú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:
- Tavaszi tudatú felületek megvalósítása. A teljes lista itt érhető el.
- 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)