35 + Java 8 intervjuu küsimust ja vastust (2024)

Olgu see tehnikamees või mõni muu professionaal, intervjuud löövad närvilisusest alati adrenaliini välja. Kuid selleks, et teistest eristuda, on oluline oma oskusi lihvida ja oma võimetele panustada. Pealegi, võttes käed sageli küsitud Java 8 intervjuu küsimust ja vastust võivad olla teie jaoks kasulikud.

Seetõttu uurige sügavalt neisse Java 8 intervjuuküsimustesse, mis on mõeldud kogenud ja algajatele, et eelseisvaid intervjuusid leida.

Java 8 intervjuuküsimust värsketele ja kogemustele

1) Java 8 langeb millise programmeerimisparadigma alla?

Java 8 kuulub järgmisesse programmeerimisparadigma:

  • Objekt- või klassipõhine programmeerimiskeel.
  • Funktsionaalne programmeerimiskeel.
  • Määratud protseduuriline programmeerimiskeel.
  • Loogiline programmeerimiskeel.

2) Miks peaks kasutama valikulist klassi?

Valikuline klass on äsja kasutusele võetud konteinerklass, mis on kasulik olemasolevate või mitteolemasolevate valikuliste väärtuste demonstreerimiseks. Selle peamine eelis on tühiste ja tühiste kontrollide vältimine ning hõlbustab meetodeid, mis on kasulikud konkreetse muutuja väärtuse olemasolu kontrollimiseks.


Java 8 intervjuuküsimust

3) Nimetage mõned hiljutised funktsioonid Java 8.

Allpool on toodud uusimad funktsioonid, mida tutvustatakse Java 8:

  • Lambda väljendid: On Java funktsioon, mida saate jagada või millele viidata kui objektile.
  • Meetodi häired: See kasutab meetodi rakendamise kriteeriumina funktsiooni.
  • Funktsionaalsed häired: Iga funktsionaalne interferents on seotud ühe abstraktse meetodiga, mida nimetatakse funktsionaalseks meetodiks.
  • Vaikimisi meetod: See on kasulik meetodite rakendamisel liidestes, mis aitavad võimaldada "liidese evolutsiooni" potentsiaali.
  • Date Time API: See on Java-aja API-de täiustatud, kuid inspireeritud versioon, et tulla toime viimase versiooni puudustega.
  • Stream API nimetatakse abstraktseks kihiks, mis aitab töödelda andmeid.
  • Valikuline: Ümbrisklass on kasulik nullväärtuste kontrollimisel ja edasiste andmete töötlemisel.
  • JavaSkript ja Nashorni mootor: See on täiustatud versioon JavaScript Engine, mis on kasulik selle funktsioonide lubamiseks Java, asendades Rhino.

4) Täpsustage java 8 kasutamise eelised

Siin on mõned kasutamise eelised Java 8:

  • See aitab rakendusi palju kiiremini ja lihtsamalt luua.
  • See loob arendajatele väga stabiilse keskkonna.
  • Lühikesed, korduvkasutatavad ja hõlpsasti arusaadavad koodid.
  • Täiustatud ja tõhus tugi.
  • Lihtne portida erinevatesse operatsioonisüsteemidesse.
  • Minimaalsed katlakoodid.

5) Mis on kollektsioon ja mille poolest see voost erineb?

Kogu on mälusisene andmebaas, mis salvestab kõik väärtused vastavalt kehtivale andmestruktuurile. Seega on enne kogusse lisamist oluline need kõik välja arvutada. Seevastu voog on visuaalselt fikseeritud andmestruktuur, kus saame elemente vastavalt oma vajadustele arvutada.


6) Mis on Lambada väljend?

Lambada avaldis on teatud tüüpi funktsioon, millel pole nime ja mida mõnikord nimetatakse anonüümseks funktsiooniks, kuna sellel pole oma tüüpi teavet. Saate seda kasutada vastavalt oma vajadustele ja see on väga kasulik kogust mis tahes andmete kordamiseks, filtreerimiseks ja ekstraheerimiseks.

Näide:

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);
    }
}

Väljund:

Charlie

7) Määratlege voolutorustik

Voo konveier on meetod erinevate toimingute rühmitamiseks. Seda saate saavutada, jagades selle vootoimingud kahte ossa. Vahe- ja terminalitoimingud.

Vaheoperatsiooni sooritamisel põrkab see eksemplari tagasi voo konveierile. Seetõttu saab iga kasutaja seadistada irratsionaalselt palju vahepealseid toiminguid, et muuta andmeid sujuvamaks ja lõpuks moodustada töötlemiskonveier.

Veelgi enam, torujuhtmete lõpetamiseks on protsessi lõpus vaja terminali tööd.


8) Milles on predikaat ja tarbija Java 8?

Predikaat on funktsionaalne liides, mis tavaliselt võtab vastu argumente ja hangib Boole'i ​​väärtuse. Saate seda kasutada objektide kogumile filtri rakendamiseks.

Teisest küljest nimetatakse tarbijat sisseehitatud funktsionaalseks liideseks, mis on leitud Javafunktsioonipakett .util. Saate seda kasutada mis tahes objekti tarbimiseks ja see võtab sisendväärtuse ega anna midagi välja.


9) Miks kasutatakse peek () meetodit? Java 8?

Meetod peek() aitab toetada silumist, mille puhul tahetakse märgata elemente, kuna need kipuvad voolama torujuhtme konkreetsest punktist. See kujutab meie vaatlust, kuidas iga element läbib.

süntaksit: public Object peek()


10) Mis teeb sinust ideaalse kandidaadi Java arendaja roll?

Siin on mõned olulised omadused, mis võivad teha sinust ideaalse kandidaadi Java arendaja roll:

  • Teil peaks olema võimalus kirjutada selgeid, hõlpsasti mõistetavaid ja tõhusaid koode.
  • Sügav arusaam "mustrite ja kontseptsioonide kohtaOOP ehk objektorienteeritud programmeerimine. "
  • Erinevate arhitektuuri- ja disainimustrite hea tundmine.
  • Tutvumine Java samaaegsuse mustrid.
  • Kogemused ja teadmised tööst erinevate veebirakenduste raamistikega nagu Spark ja Mängi.
  • Fundamentaalsed teadmised Java Virtuaalmasin või JVM, selle puudused, lahendus jne.
  • Hea kogemus sisseehitatud ja väliste andmebaaside kasutamisel.

11) Selgitage 'funktsionaalset liidest'.

Ainult ühe abstraktiga liidest nimetatakse funktsionaalseks liideseks. Seda tuntakse ka kui Single Abstract Method või SAM. Märkus @FunctionalInterface on aga valikuline ja seda saab kasutada ka siis, kui seda seal pole. See laieneb teisele liidesele, kui sellel pole abstraktset.


12) Miks on staatilisi meetodeid vaja Java 8?

Staatilise meetodi viidet nimetatakse utiliidiks või abimeetodiks, mis on seotud liidesega. See on ka klass, mis ei ole seotud ühegi objektiga.

Siin on staatilise meetodi kasutamise põhjused Java:

  • Kasulik API hooldamiseks ja laiendamiseks.
  • Sisaldab selget ja ülevaatlikku vastutuse jaotust ning kommunaalteenuste kogumiseks ei pea teil olema ühte kommunaalteenuste klassi.
  • Kasulik kõigi liideste hoidmiseks ühises liideses, mitte konkreetsetes liidestes.

13) Millised on Nashorni eelised?

Nashorn on kõige arenenum ja uus JavaScript aastal kasutusele võetud töötlemismootor Java 8. Varem põhines see Mozilla Rhinol. See tagab parema vastavuse ECMA-le JavaSkript. See on kiirem kui selle eelmised versioonid.


14) Mille poolest Collection API ja Stream API erinevad?

Siin on mõned olulised erinevused Collection API ja Stream API vahel

Kogumise API Stream API
Collection API-t kasutati esmakordselt aastal Java 1.2 Stream API tutvustati esmakordselt aastal Java KUI 8.
Saate seda kasutada piiramatute andmete salvestamiseks. Saate seda kasutada piiramatute andmete arvutamiseks.
Kogumise API võimaldab teil andmete itereerimiseks kasutada Iteraatorit ja Spilteraatorit. Stream API võimaldab teil andmete itereerimiseks kasutada Iteraatorit ja Spilteraatorit.
Collection API-le on lihtne juurde pääseda. Voosisene API pole otsest viisi konkreetsete elementideni jõudmiseks.
See hõlbustab ka selle töötlemist vastavalt teie vajadustele. Stream API-d saab töödelda ainult üks kord.

15) Kirjeldage PermGenSpace'i ja MetaSpace'i.

PermGen ehk Permanent Generation Space on unikaalne hunniku tüüp, mida kasutatakse salvestatud metaandmete jälgimiseks, mis nüüd eemaldatakse Java 8.

Selle uue versiooniga salvestatakse metaandmed sarnasesse mällu, mida tuntakse kui "MetaSpace". See ei ole ülekantav Java Mälu kuhjaga ja see on automaatse häälestamise aspektide osas PermGeni täiustatud versioon, prügiveduJne


16) Kuidas luuakse funktsionaalne liides Java 8?

Funktsionaalse liidese abstraktse meetodi rakendamiseks saate kasutada lambda-avaldist Java 8. Allpool on sama kodeerimise näide:

Näide

import java.util.function.Consumer;
public class FunctionalInterfaceExample {
    public static void main(String[] args) {
        Consumer<String> printer = System.out::println;
        printer.accept("Hello, world!");
    }
}

Väljund:

Hello, world!

17) Millised on funktsiooni ja predikaadi erinevused ja sarnasused? Java 8?

Siin on erinevused funktsiooni ja predikaadi vahel Java 8:

  • Funktsioon on kasulik teisenduses, samas kui predikaati saab kasutada mis tahes tingimuse testimiseks.
  • Funktsioon võib vastu võtta argumendi ja anda tulemuse, samas kui predikaat võib vastu võtta ka argumendi, kuid annab välja ainult Boole'i ​​väärtuse.
  • Funktsioon on tähistatud tähisega , ja Predikaat on tähistatud ainult tähisega , kus T on funktsiooni tüüp ja R on tulemus.

Allpool on funktsiooni ja predikaadi sarnasused:

  • Nii funktsioon kui ka predikaat on funktsionaalsed liidesed.
  • Nii funktsioon kui ka predikaat on ühe argumendi funktsioonid.

18) Selgitage näite abil erinevust vahelejätmise (pikk) ja piirangu (pikk) vahel.

Vahelejätmine (pikk) on vaheoperatsioon, mis otsib järelejäänud elemendid pärast konkreetse voo esialgse n elemendi kõrvaldamist.

Näide:

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);
    }
}

Väljund:

Charlie
Dave
Eve

Piirang (pikk) toob välja kindla suurusega elementide voo

Näide:

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);
    }
}

Väljund:

AliceBob
Charlie

19) Millises olukorras on voo API kasutamiseks kõige sobivam Java 8?

Saate kasutada voo API-t Java 8. Vaja on järgmisi toiminguid.

  • Saate teostada paralleelset töötlemist.
  • Laiskate toimingute tegemiseks
  • Andmebaasi toimingute tegemiseks
  • Kasutage sisemiste iteratsioonide jaoks.
  • Funktsionaalstiilis programmeerimise kirjutamiseks
  • Saate kasutada torujuhtme toimingute kasutamiseks.

20) Mis on tüübijärelduse funktsioon?

Tüüpjäreldamine aitab kompilaatoril argumentide tüüpe tuvastada või ära tunda, omades lihtsalt ülevaadet vastavast deklaratsioonist ja meetodi kutsumisest.


21) Milline on lihtsaim viis dubleerivate elementide tuvastamiseks ja eemaldamiseks loendist Java 8?

Lihtsaim viis dubleerivate elementide tuvastamiseks ja eemaldamiseks on kasutada vootoimingut ja kogumist, millele järgneb meetodi Collections.toSet() kasutamine.


22) Millised on funktsionaalse liidese juhised?

Allpool on juhised funktsionaalse liidese kohta, mis on üks enim küsitud Java 8 programmeerimisküsimust:

  • Sellel peaks olema ainult üks abstraktne meetod.
  • Teil võib olla kuni mitu vaikemeetodit, kuna see pole abstraktne, ja juurutamine on antud varem.
  • Abstraktne meetod, avalike meetodite põhielement Java.lang on tuntud funktsionaalses liideses. Objekti peetakse endiselt kasulikuks liideseks.

Märge: Selle seletus seisneb selles, et selle liidese igal juurutusklassil võib olla selle abstraktse meetodi teostus, mis on määratletud rakendusklassi enda poolt või võetud superklassist.


23) Tehke vahet splitaatoril ja iteraatoril.

Siin on mõned erinevused jaoturi ja iteraatori vahel:

Jaotaja Iteraator
See võeti kasutusele aastal Java 1.2. See võeti kasutusele aastal Java 1.8.
See ainult kordab kõiki elemente eraldi. See läbib kõik elemendid nii eraldi kui ka lahtiselt.
See toimib täieliku API-kogumi iteraatorina. See toimib nii voo kui ka kogumise API iteraatorina.
See ei toeta paralleelprogrammeerimist. See toetab paralleelset programmeerimist.

24) Kuidas saab klassis liidese vaikemeetodit kutsuda?

Vaikimisi märksõna, mis asub meetodi allkirja alguses, kasutatakse liideses meetodi deklaratsiooni määramiseks vaikemeetodiks. Võite avaliku modifikaatori vahele jätta, kuna liidese iga meetodi deklaratsioon, sealhulgas vaikemeetodid, on automaatselt avalik.


25) Määrake vaikemeetod. Millal saate seda kasutada?

Vaikimisi meetod on liideses olemas ja see sisaldab rakendust. See meetod on abiks antud liidese uute funktsioonide lisamisel, säilitades samal ajal tagasiühilduvuse koos selle klassidega, mis on liideses juba rakendatud.


26) Kuidas vooge luuakse Java, ja kas see on Java 8 voointervjuu kõige enam küsitud küsimuste hulgas?

Voogedastus Java kirjeldada konkreetsest allikast (nt kollektsioonist) pärit objektide jada, mis toetavad koondoperatsioone. Saate seda kasutada ühe andmestruktuuri kogumiseks, filtreerimiseks, printimiseks ja muutmiseks.

Siin on näited voogude loomise kohta 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);
    }
}

Väljund:

Alice
Bob
Charlie
Dave
Eve

27) Mis on kaardi ja FlatMapi vootoimingud?

Kaarti ja FlatMapi peetakse voo- ja vahevootoiminguteks, mis funktsiooni aktsepteerivad. Samuti aitab see antud funktsiooni ülejäänud elementidele rakendada.


28) Miks me peame muutma Java programmeerimiskeelt sageli?

Peame muutma Java programmeerimiskeel sageli järgmistel põhjustel:


29) Mainige mõnda funktsionaalset liidest, mida kasutatakse Java 8.

Allpool on toodud mõned funktsionaalsed liidesed, mida kasutatakse Java 8:

  • BinaarneOperator
  • Tarbija
  • funktsioon
  • Tarnija
  • EbaühtlaneOperator
  • BiFunction
  • Predikaat

30) Millised on peamised API klassid kellaaja ja kuupäeva jaoks?

Allpool on loetletud peamised aja ja kuupäeva API klassid, mida kasutatakse Java 8:

  • Kohalik aeg
  • LocalDateTime
  • Kohalik kuupäev

31) Esitage Lambda avaldise põhistruktuur/süntaks.

Lambda avaldise põhistruktuur/süntaks on:

(arugument - list) - > {body}

Siin

  • Argument – ​​nimekiri: Saate seda hoida täis või tühjana.
  • Noolemärk: See on kasulik kehaväljendite ja argumentide sidumisel – loend.
  • Kere: See koosneb lambda-avaldise väidetest ja avaldistest.

32) Millised on Streami peamised omadused?

Allpool on toodud Streami peamised omadused:

  • Torustiku paigaldamine
  • allikas
  • Agregeeritud Operamine
  • Elementide järjestus
  • Automaatsed iteratsioonid

33) Millised on levinumad vaheoperatsioonid?

Mõned kõige levinumad vahepealsete väljendite tüübid on:

  • Eristuv ()
  • Jäta vahele (pikk n)
  • Filter (predikaat)
  • Piirang (pikk n)
  • Kaart (funktsioon)

34) Millised on kõige levinumad terminalitoimingute tüübid?

Allpool on toodud kõige levinumad terminalitoimingute tüübid:

  • Loendama
  • Vähendama
  • min
  • AllMatch
  • max
  • AnyMatch
  • Arrayle

35) Milles on meetodi viide Java 8?

Meetodi viide sisse Java 8 on viis funktsionaalsele liidesele viitamiseks. Seda tuntakse kui palju lihtsamat ja tõhusamat lambda-väljenduse vormi. Kui kasutate meetodi viitamiseks lambda-avaldisi, saate selle asendada meetodi viitega.


36) Mille poolest erinevad sisemised ja välised iteratsioonid?

Allpool on erinevused sisemise ja välise iteratsiooni vahel:

Sisemine iteratsioon Väline iteratsioon
Seda tuntakse ka passiivse või kaudse iteraatorina. Seda tuntakse ka kui aktiivset või selgesõnalist iteraatorit.
Seda kantakse sisemiselt erinevatel objektidel. Seda kantakse väliselt erinevatel objektidel.
Seda kasutatakse funktsionaalses programmeerimises. Seda kasutatakse objektorienteeritud programmeerimises.
See põhjustab väga vähem vigu. Kodeerimine on aga selle jaoks kohustuslik. See põhjustab rohkem vigu. Kodeerimine pole aga vajalik.

37) Kas tüübi järeldamist on kasutatud varasemates versioonides Java?

Java sisse tüüp interferents sisse Java 5, kuid väga piiratud juurdepääsuga. Kuid aastate jooksul on tüübihäirete võimalused suurenenud ja see on kõige parem Java 8.


38) Kirjutage üles a Java 8 programmi, mis suudab leida voo minimaalse ja maksimaalse arvu.

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);
    }
}

Väljund:

Minimum number: 1
Maximum number: 9

39) Kuidas ühendada StringJoiner klassi kaudu mitu stringi?

StringJoiner aitab ühe või mitmega liituda nöör, ja seda saab teha konkreetse tisleri või eraldaja kaudu. Näiteks saab mitut stringi ühendada, eraldades need komaga (,).

CSV-stringi loomiseks saab luua Linuxis konkreetse kataloogi jaoks täieliku tee, mida saab teha, kui ühendate stringi kaldkriipsu "/" abil.


40) Mis on parim alternatiiv lambda-avaldistele Java 8?

Üldiselt kasutame lambda-avaldisi, et luua anonüümseid meetodeid, mis aitavad soovitud väljundit saada. Siiski on juhtumeid, kus lambda-avaldised ei tööta ja kasutavad ainult olemasolevat meetodit.

Selle vältimiseks võite kasutada meetodit, mis aitab soovitud väljundit saada. Meetodi viide on kujutatud sümboliga: (topeltkoolon).