35 + Java 8 interjúkérdés és válasz (2025)
Legyen szó technikusról vagy bármilyen más szakemberről, az interjúk mindig feldobják az adrenalint az idegességből. Ahhoz azonban, hogy kitűnjön a tömegből, fontos, hogy csiszolja tudását, és fogadjon a képességeire. Sőt, kezével a gyakran kérdezett Java 8 interjúkérdés és válasz lehet a hozzáértésed.
Ezért mélyen ásson bele ezekbe a java 8 interjúkérdésekbe, amelyek gyakorlott és kezdők számára készültek, hogy felkészüljenek a közelgő interjúkra.
Java 8 interjúkérdés pályakezdőknek és tapasztalattal rendelkezőknek
1) Java 8 melyik programozási paradigmába esik?
Java 8 a következő programozási paradigmába esik:
- Objektum- vagy osztályorientált programozási nyelv.
- Funkcionális programozási nyelv.
- Meghatározott procedurális programozási nyelv.
- Logikai programozási nyelv.
2) Miért érdemes az Opcionális osztályt használni?
Az opcionális osztály egy újonnan bevezetett konténerosztály, amely hasznos a meglévő vagy nem létező opcionális értékek bemutatására. Legfőbb előnye, hogy elkerüli a null & void ellenőrzéseket, és megkönnyíti a módszereket, amelyek hasznosak egy adott változó értékének ellenőrzésére.
3) Nevezzen meg néhány nemrégiben bevezetett funkciót Java 8.
Az alábbiakban bemutatjuk a legújabb funkciókat, amelyek bemutatásra kerültek Java 8:
- Lambda kifejezések: Ez egy Java függvény, amelyet megoszthat vagy objektumként hivatkozhat.
- Módszer interferencia: A függvényt használja kritériumként egy módszer megvalósításához.
- Funkcionális interferencia: Minden funkcionális interferencia egyetlen absztrakt módszerhez kapcsolódik, amelyet funkcionális módszernek nevezünk.
- Alapértelmezett módszer: Hasznos olyan módszerek megvalósításában az interfészeken, amelyek elősegítik az „interfész evolúciós” potenciált.
- Date Time API: Ez a java time API-k továbbfejlesztett, mégis ihletett verziója, amely képes kezelni az utolsó verzió hátrányait.
- Stream API absztrakt rétegnek nevezik, amely segíti a feldolgozási adatok folyamatát.
- Opcionális: A wrapper osztály hasznos a null értékek ellenőrzéséhez és a további adatok feldolgozásához.
- JavaSzkript és Nashorn Engine: Ez a továbbfejlesztett változata a JavaScript Engine, amely hasznos funkcióinak engedélyezéséhez Java, a Rhino helyére.
4) Határozza meg a java 8 használatának előnyeit
Íme néhány előnye a használatnak Java 8:
- Segít az alkalmazások sokkal gyorsabb és egyszerűbb létrehozásában.
- Nagyon stabil környezetet biztosít a fejlesztők számára.
- Tömör, újrafelhasználható és könnyen érthető kódok.
- Továbbfejlesztett és hatékony támogatás.
- Könnyen portolható különféle operációs rendszerek között.
- Minimális kazánkódok.
5) Mi az a gyűjtemény, és miben különbözik a streamtől?
A gyűjtemény egy memóriában lévő adatbázis, amely az összes értéket rögzíti az aktuális adatstruktúra szerint. Tehát, mielőtt hozzáadná a gyűjteményhez, fontos mindegyiket kiszámítani. Míg a folyam egy vizuálisan rögzített adatstruktúra, ahol az elemeket igényeink szerint tudjuk kiszámítani.
6) Mi a Lambada kifejezés?
A Lambada kifejezés egyfajta függvény, amelynek nincs neve, és néha névtelen függvénynek is nevezik, mivel nem rendelkezik saját típusú információval. Igényei szerint használhatja, és nagyon hasznos a gyűjteményből származó adatok ismétlésében, szűrésében és kinyerésében.
Példa:
import java. util.Arrays; import java.util.List; import java.util.stream.Collectors; public class LambdaExpressionExample { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave"); List<String> filteredNames = names.stream() .filter(name -> name.startsWith("C")) .map(name -> name.toUpperCase()) .collect(Collectors.toList()); System.out.println(filteredNames); } }
output:
Charlie
7) Határozza meg az áramlási csővezetékeket
Az adatfolyam-csővezeték a különböző műveletek csoportosításának módszere. Ezt úgy érheti el, hogy a stream műveleteit két részre osztja. Köztes és terminális műveletek.
Amikor egy közbenső műveletet hajtanak végre, az visszadob egy példányt az adatfolyam-folyamathoz. Ezért bármely felhasználó irracionális számú köztes műveletet állíthat be az adatok egyszerűsítésére és végső soron egy feldolgozási folyamat létrehozására.
Ezenkívül a csővezetékek lezárásához szükség van egy terminálműveletre a folyamat végén.
8) Mit tartalmaz a predikátum és a fogyasztó? Java 8?
A predikátum egy funkcionális interfész, amely általában argumentumokat fogad, és logikai értéket kér le. Használhatja szűrők alkalmazására objektumok gyűjteményéhez.
Másrészt a fogyasztóra úgy hivatkoznak, mint egy beépített funkcionális interfészre Java.util.function csomag. Használhatja bármilyen objektum fogyasztására, és a bemeneti értéket veszi fel, és nem ad ki semmit.
9) Miért használják a peek () módszert? Java 8?
A peek() metódus segít a hibakeresés támogatásában, amikor az ember észre akarja venni az elemeket, amint azok a folyamat egy adott pontjáról folynak. Ez azt a megfigyelést mutatja be, hogy az egyes elemek hogyan haladnak át.
Syntax: public Object peek()
10) Mitől lesz az ideális jelölt a Java fejlesztői szerepkör?
Íme néhány fontos tulajdonság, amelyek ideális jelöltté tehetik a Java fejlesztői szerepkör:
- Legyen képes világos, könnyen érthető és hatékony kódokat írni.
- A "mintázatok és fogalmak mély megértése"OOP vagy objektum-orientált programozás. "
- Különböző építészeti és tervezési minták jó ismerete.
- Ismerkedés a Java párhuzamossági minták.
- Különféle webalkalmazás-keretrendszerekkel való munkavégzésben szerzett tapasztalat és tudás, mint pl Spark és Játssz.
- Alapvető ismeretek Java Virtuális gép vagy JVM, hátrányai, megoldása stb.
- Jó tapasztalat a beágyazott és külső adatbázisok használatában.
11) Magyarázza el a „Funkcionális interfészt”.
A csak egy absztraktot tartalmazó interfészt funkcionális interfésznek nevezzük. Single Abstract Method vagy SAM néven is ismert. A @FunctionalInterface megjegyzés azonban nem kötelező, és akkor is használható, ha nincs ott. A másik felületre is kiterjed, ha nincs benne absztrakt.
12) Miért van szükség statikus módszerekre? Java 8?
A statikus metódushivatkozást segédprogramnak vagy segítő metódusnak nevezik, amely interfésszel van összekötve. Ez is egy olyan osztály, amely nem kapcsolódik egyetlen objektumhoz sem.
Íme a statikus módszer használatának okai Java:
- Hasznos az API karbantartásához és bővítéséhez.
- A felelősségek világos és tömör megosztásával jár, és nem kell egy közüzemi osztálynak lennie a közüzemi gyűjteményekhez.
- Hasznos az összes interfész közös felületen tartásához, nem pedig konkrét interfészekhez.
13) Mik a Nashorn előnyei?
A Nashorn a legfejlettebb és legújabb JavaForgatókönyv ben bevezetett feldolgozómotor Java 8. Korábban a Mozilla Rhino-n alapult. Megnövelt megfelelést biztosít az ECMA-nak JavaForgatókönyv. Gyorsabb, mint a korábbi verziók.
14) Miben különbözik a Collection API és a Stream API?
Íme néhány fontos különbség a Collection API és a Stream API között
Gyűjtemény API | Stream API |
---|---|
A Collection API-t először használták Java 1.2 | A Stream API-t először vezették be Java SE8. |
Korlátlan számú adat tárolására használhatja. | Használhatja korlátlan számú adat kiszámítására. |
A Gyűjtemény API lehetővé teszi az Iterator és Spilterator használatát az adatok iterálásához. | A Stream API lehetővé teszi az Iterator és Spilterator használatát az adatok iterálásához. |
A Collection API könnyen elérhető. | In-stream API, nincs közvetlen mód bizonyos elemek elérésére. |
Ezenkívül megkönnyíti a feldolgozást az Ön igényei szerint. | A Stream API-t csak egyszer lehet feldolgozni. |
15) Ismertesse a PermGenSpace-t és a MetaSpace-t.
A PermGen vagy Permanent Generation Space egy egyedi típusú halomterület, amelyet a tárolt metaadatok nyomon követésére használnak, és most eltávolítják Java 8.
Ezzel az új verzióval a metaadatok tárolása egy hasonló, „MetaSpace” néven ismert memóriában történik. Nem átruházható Java Memória halom, és a PermGen továbbfejlesztett változata az automatikus hangolás, a szemétgyűjtés stb.
16) Hogyan jön létre a funkcionális interfész? Java 8?
Használhat lambda kifejezést a funkcionális interfész absztrakt metódusának megvalósításához Java 8. Az alábbiakban egy kódolási példa látható:
Példa
import java.util.function.Consumer; public class FunctionalInterfaceExample { public static void main(String[] args) { Consumer<String> printer = System.out::println; printer.accept("Hello, world!"); } }
output:
Hello, world!
17) Mi a különbség és a hasonlóság a függvény és a predikátum között Java 8?
Itt vannak a különbségek a függvény és a predikátum között Java 8:
- A függvény hasznos az átalakításban, míg a predikátum bármely feltétel tesztelésére használható.
- A függvény fogadhat argumentumot és kiadhat egy eredményt, míg a predikátum is fogadhat argumentumot, de csak a logikai értéket adja ki.
- A funkciót jelöli , és a predikátumot csak a jelöli , ahol T a függvény típusa, R pedig az eredmény.
Az alábbiakban bemutatjuk a függvény és a predikátum hasonlóságait:
- Mind a függvény, mind a predikátum funkcionális interfészek.
- Mind a függvény, mind a predikátum egyetlen argumentumfüggvény.
18) Magyarázza el a különbséget a skip(long) és limit(long) között egy példa segítségével.
A kihagyás (hosszú) egy közbenső művelet, amely egy adott adatfolyam kezdeti n elemének eltávolítása után visszakeresi a megmaradt elemeket.
Példa:
import java.util.Arrays; import java.util.List; public class SkipExample { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave", "Eve"); // Create a stream from the names list names.stream() // Skip the first two elements of the stream .skip(2) // Print the remaining elements to the console .forEach(System.out::println); } }
output:
Charlie Dave Eve
A limit (hosszú) lekéri az adott méretű elemek folyamát
Példa:
import java.util.Arrays; import java.util.List; public class LimitExample { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave", "Eve"); // Create a stream from the names list names.stream() // Limit the stream to the first three elements .limit(3) // Print the elements to the console .forEach(System.out::println); } }
output:
AliceBob Charlie
19) Melyik helyzetben a legalkalmasabb a stream API használatához? Java 8?
A stream API-t használhatja Java 8. Az alábbi műveletekre van szükség:
- Párhuzamos feldolgozást is végezhet.
- Lusta műveletek végrehajtásához
- Adatbázis-műveletek végrehajtásához
- Használja belső iterációkhoz.
- Funkcionális stílusú programozás írásához
- Használhatja csővezeték műveletek használatára.
20) Mi a Típuskövetkeztetés funkciója?
A Típuskövetkeztetés segíti a fordítót az argumentumtípusok azonosításában vagy felismerésében azáltal, hogy csak áttekintést nyújt a megfelelő deklarációról és metódushívásról.
21) Melyik a legegyszerűbb módja az ismétlődő elemek azonosításának és eltávolításának a listából Java 8?
Az ismétlődő elemek azonosításának és eltávolításának legegyszerűbb módja a stream művelet és egy gyűjtés, majd a Collections.toSet() metódus használata.
22) Mik a funkcionális interfész irányelvei?
Az alábbiakban egy olyan funkcionális interfész útmutatása található, amely a legtöbbet kérdezett Java 8 programozási kérdés:
- Csak egy absztrakt módszert kell tartalmaznia.
- Akárhány alapértelmezett metódusa lehet, mivel nem absztrakt, és a megvalósítást is ez adja meg korábban.
- Absztrakt módszer, a nyilvános módszerek fő eleme Java.lang, funkcionális felületen ismert. Az objektum továbbra is hasznos interfésznek számít.
Jegyzet: Ennek az a magyarázata, hogy ennek az interfésznek minden implementációs osztálya rendelkezhet egy implementációval ehhez az absztrakt metódushoz, amelyet vagy maga a megvalósítási osztály határoz meg, vagy egy szuperosztályból vesz át.
23) Tegyen különbséget az elosztó és az iterátor között.
Íme néhány különbség az elosztó és az iterátor között:
Elosztó | iterátor |
---|---|
ben vezették be Java 1.2. | ben vezették be Java 1.8. |
Csak az összes elemet külön-külön iterálja. | Az összes elemet keresztben külön-külön és ömlesztve is áthelyezi. |
Az API-k teljes gyűjteményének iterátoraként működik. | Iterátorként működik mind az adatfolyam, mind a gyűjtemény API számára. |
Nem támogatja a párhuzamos programozást. | Támogatja a párhuzamos programozást. |
24) Hogyan hívható meg egy interfész alapértelmezett metódusa egy osztályban?
Az alapértelmezett kulcsszó, amely a metódusaláírás elején található, egy interfész metódus deklarációjának alapértelmezett metódusként való kijelölésére szolgál. Kihagyhatja a nyilvános módosítót, mert egy felületen minden metódus deklaráció, beleértve az alapértelmezett metódusokat is, automatikusan nyilvános.
25) Határozza meg az alapértelmezett módszert. Mikor tudod használni?
Az alapértelmezett metódus jelen van a felületen, és tartalmaz egy megvalósítást. Ez a módszer hasznos új funkciók hozzáadásához egy adott interfészhez, miközben megtartja a visszamenőleges kompatibilitást az interfészen már megvalósított osztályokkal együtt.
26) Hogyan jönnek létre az adatfolyamok? Java, és ez a legtöbbet feltett Java 8 stream interjúkérdések közé tartozik?
Belép Java egy adott forrásból, például egy gyűjteményből származó objektumok sorozatát írja le, amely támogatja az összesített műveleteket. Használhatja az egyik adatstruktúra összegyűjtésére, szűrésére, nyomtatására és megváltoztatására.
Íme a példák arra, hogyan lehet adatfolyamokat létrehozni Java:
import java.util.stream.Stream; public class StreamExample { public static void main(String[] args) { Stream<String> stream = Stream.of("Alice", "Bob", "Charlie", "Dave", "Eve"); stream.forEach(System.out::println); } }
output:
Alice Bob Charlie Dave Eve
27) Mik azok a Map és FlatMap stream műveletek?
A Map és a FlatMap olyan adatfolyam- és köztes adatfolyam-műveletek, amelyek funkciót fogadnak el. Segít abban is, hogy az adott függvényt a többi elemre alkalmazzuk.
28) Miért kell megváltoztatnunk a Java programozási nyelv gyakran?
Módosítanunk kell a Java programozási nyelv gyakran az alábbi okok miatt:
- Használhatja a funkcióit Funkcionális programozás.
- A többmagos CPU-k legújabb technológiájának hatékony kihasználása.
29) Említsen meg néhány használt funkcionális interfészt Java 8.
Az alábbiakban néhány funkcionális interfész látható Java 8:
- KétkomponensűOperator
- Fogyasztó
- Funkció
- Szállító
- UnaryOperator
- BiFunction
- Állítmány
30) Melyek az idő és a dátum fő API-osztályai?
Az alábbiakban felsoroljuk a használatban lévő fő API-osztályokat időre és dátumra vonatkozóan Java 8:
- Helyi idő
- LocalDateTime
- LocalDate
31) Adja meg a Lambda kifejezés alapvető szerkezetét/szintaxisát!
A Lambda kifejezés alapvető szerkezete/szintaxisa a következő:
(arugument - list) - > {body}
Itt,
- Érv – lista: Töltve vagy üresen is tarthatja.
- Nyíl token: Hasznos testkifejezések és argumentumok összekapcsolásához – lista.
- Test: A lambda kifejezés utasításaiból és kifejezéseiből áll.
32) Melyek a Stream főbb jellemzői?
Az alábbiakban bemutatjuk a Stream főbb jellemzőit:
- pipelining
- Forrás
- adalékanyag OperaTIONS
- Elemek sorrendje
- Automatikus iterációk
33) Melyek a leggyakoribb köztes műveletek?
A köztes kifejezések leggyakoribb típusai a következők:
- Különleges ()
- Kihagyás (hosszú n)
- Szűrő (predikátum)
- Határérték (hosszú n)
- Térkép (funkció)
34) Melyek a terminálműveletek leggyakoribb típusai?
Az alábbiakban felsoroljuk a terminálműveletek leggyakoribb típusait:
- Gróf
- Csökkentse
- Min
- AllMatch
- max
- AnyMatch
- Array-nek
35) Miben szerepel a módszer hivatkozás? Java 8?
Módszer hivatkozás itt Java A 8 a funkcionális interfészre utal. A lambda kifejezés sokkal könnyebb és hatékonyabb formájaként ismert. Ha lambda-kifejezéseket használ egy metódusra hivatkozva, lecserélheti a metódushivatkozásra.
36) Miben különböznek a belső és a külső iterációk?
Az alábbiakban bemutatjuk a belső és a külső iteráció közötti különbségeket:
Belső iteráció | Külső iteráció |
---|---|
Passzív vagy implicit iterátorként is ismert. | Aktív vagy explicit iterátornak is nevezik. |
Különféle tárgyakon belül hordozzák. | Külsőleg különféle tárgyakon hordják. |
A funkcionális programozásban használják. | Objektumorientált programozásban használják. |
Nagyon kevesebb hibát okoz. A kódolás azonban elengedhetetlen hozzá. | Több hibát okoz. A kódolás azonban nem szükséges. |
37) Használtak-e típuskövetkeztetést a korábbi verzióiban Java?
Java típusú interferenciát vezetett be Java 5, de nagyon korlátozott hozzáféréssel. De az évek során a típus-interferencia lehetőségei megnőttek, és ez a legjobb Java 8.
38) Írja le a Java 8 program, amely képes megtalálni a Stream minimális és maximális számát.
import java.util.Arrays; import java.util.stream.IntStream; public class MinMaxExample { public static void main(String[] args) { int[] numbers = {9, 3, 8, 1, 5, 7, 2, 6, 4}; int min = IntStream.of(numbers).min().getAsInt(); int max = IntStream.of(numbers).max().getAsInt(); System.out.println("Minimum number: " + min); System.out.println("Maximum number: " + max); } }
output:
Minimum number: 1 Maximum number: 9
39) Hogyan lehet több karakterláncot összekapcsolni a StringJoiner osztályon keresztül?
A StringJoiner segít egy vagy több karakterlánc összekapcsolásában, és ez megtehető egy adott összekötőn vagy határolón keresztül. Például számos karakterlánc összekapcsolható úgy, hogy vesszővel (,) választja el őket.
CSV-karakterlánc létrehozásához Linuxon egy adott könyvtárhoz egy teljes elérési út generálható, amit úgy lehet megtenni, hogy a karakterláncot a „/” perjel segítségével összekapcsoljuk.
40) Mi a legjobb alternatíva a lambda kifejezésekhez? Java 8?
Általában lambda-kifejezéseket használunk anonim metódusok létrehozására, amelyek segítenek elérni a kívánt kimenetet. Vannak azonban olyan esetek, amikor a lambda-kifejezések nem működnek, és csak egy meglévő módszert használnak.
Ennek elkerülése érdekében használhatja a módszerreferenciát, amely segíthet a kívánt kimenet megszerzésében. A módszer hivatkozását a (kettőspont) szimbólum jelzi.