top 40 java 8 interview questions answers
U ovom smo priručniku dali najvažnija pitanja o intervjuu za Java 8 i njihove odgovore s primjerima koda i objašnjenjem:
Sva važna pitanja navedena u ovom vodiču specifična su za Javu 8. Java je uvelike evoluirala (s vremenom) uvođenjem novih verzija. Sa svakom verzijom imamo nove značajke povezane s Javom. Sve ove važne značajke bit će obrađene u ovom vodiču.
To su vrlo česta pitanja koja će vam se postavljati u bilo kojem intervjuu za Javu koji zahtijeva napredne vještine. Ovi koncepti moraju se imati ako se želite prijaviti na bilo koji standardni ispit za Java certifikat, poput Oracle Certified Associate (OCA).
=> Ovdje pogledajte Vodič za početnike za Java.
Ovaj će članak biti vrlo prikladan za Java programere, kao i za Java testere / testere automatizacije ili za sve one koji traže veću plaću na istom polju jer zahtijeva napredne Java vještine.
Najčešće postavljana pitanja o intervjuu za Java 8
P # 1) Navedite nove značajke uvedene u Javi 8?
Odgovor: Nove značajke predstavljene u Javi 8 navedene su u nastavku:
- Lambda izrazi
- Reference o metodama
- Neobvezna klasa
- Funkcionalno sučelje
- Zadane metode
- Nosorog, JavaScript motor
- Stream API
- API datuma
P # 2) Što su funkcionalna sučelja?
Odgovor: Funkcionalno sučelje je sučelje koje ima samo jednu apstraktnu metodu. Implementacija ovih sučelja osigurana je pomoću Lambda Expression, što znači da za korištenje Lambda Expression morate stvoriti novo funkcionalno sučelje ili možete koristiti unaprijed definirano funkcionalno sučelje Java 8 .
Napomena koja se koristi za stvaranje novog funkcionalnog sučelja je „ @FunctionalInterface '.
P # 3) Što je neobavezna nastava?
Odgovor: Izborna klasa je posebna klasa omota uvedena u Javi 8 koja se koristi za izbjegavanje NullPointerExceptions. Ova završna klasa prisutna je u paketu java.util. NullPointerExceptions se događa kada ne uspijemo izvršiti null provjere.
P # 4) Koje su zadane metode?
Odgovor: Zadane metode su metode sučelja koje ima tijelo. Ove se metode, kao što i samo ime govori, koriste zadanim ključnim riječima. Korištenje ovih zadanih metoda je 'Povratna kompatibilnost', što znači da ako JDK modificira bilo koje sučelje (bez zadane metode) tada će se razbiti klase koje implementiraju ovo sučelje.
S druge strane, ako dodate zadanu metodu u sučelje, tada ćete moći pružiti zadanu implementaciju. To neće utjecati na nastavnu nastavu.
Sintaksa:
public interface questions{ default void print() { System.out.println('www.softwaretestinghelp.com'); } }
5. pitanje) Koje su glavne karakteristike Lambda funkcije?
Odgovor: Glavne karakteristike Lambda funkcije su kako slijedi:
- Metoda koja je definirana kao Lambda izraz može se proslijediti kao parametar drugoj metodi.
- Metoda može postojati samostalno, a da ne pripada klasi.
- Nema potrebe za deklaracijom tipa parametra, jer kompajler može dohvatiti tip iz vrijednosti parametra.
- Zagrade možemo koristiti kada koristimo više parametara, ali nema potrebe za zagradama kada koristimo jedan parametar.
- Ako tijelo izraza ima jednu izjavu, tada nema potrebe za uključivanjem kovrčavih zagrada.
Q # 6) Što nije bilo u redu sa starim datumom i vremenom?
Odgovor: U nastavku su navedeni nedostaci starog datuma i vremena:
- Java.util.Date je promjenjiv i nije siguran u niti, dok su novi Java 8 Datum i vrijeme API-ji sigurni u niti.
- Java 8 Date and Time API udovoljava ISO standardima, dok su stari datum i vrijeme bili loše dizajnirani.
- Uveo je nekoliko API klasa za datum poput LocalDate, LocalTime, LocalDateTime itd.
- Govoreći o performansama između njih dvoje, Java 8 radi brže od starog režima datuma i vremena.
P # 7) Koja je razlika između API-ja za prikupljanje i API-ja za streaming?
Odgovor: Razlika između API-ja Stream i API-ja Collection može se razumjeti iz donje tablice:
Stream API | API za prikupljanje |
---|---|
Predstavljen je u inačici Java 8 Standard Edition. | Predstavljen je u Java verziji 1.2 |
Itererator i spliteratori se ne koriste. | Uz pomoć forEach, pomoću iteratora i spliteratora možemo iterirati elemente i izvršiti radnju na svakoj stavci ili elementu. |
Može se pohraniti neograničen broj značajki. | Može se pohraniti prebrojivi broj elemenata. |
Potrošnja i ponavljanje elemenata iz objekta Stream mogu se obaviti samo jednom. | Potrošnja i ponavljanje elemenata iz objekta Collection mogu se izvršiti više puta. |
Koristi se za izračunavanje podataka. | Koristi se za pohranu podataka. |
P # 8) Kako možete stvoriti funkcionalno sučelje?
Odgovor: Iako Java može prepoznati funkcionalno sučelje, možete ga definirati s napomenom
@FunctionalInterface
Nakon što definirate funkcionalno sučelje, možete imati samo jednu apstraktnu metodu. Budući da imate samo jednu apstraktnu metodu, možete napisati više statičkih metoda i zadanih metoda.
Ispod je primjer programiranja Funkcionalnog sučelja napisanog za množenje dva broja.
@FunctionalInterface // annotation for functional interface interface FuncInterface { public int multiply(int a, int b); } public class Java8 { public static void main(String args()) { FuncInterface Total = (a, b) -> a * b; // simple operation of multiplication of 'a' and 'b' System.out.println('Result: '+Total.multiply(30, 60)); } }
Izlaz:
P # 9) Što je SAM sučelje?
Odgovor: Java 8 predstavila je koncept Funkcionalnog sučelja koji može imati samo jednu apstraktnu metodu. Budući da ta sučelja specificiraju samo jednu apstraktnu metodu, ponekad se nazivaju SAM sučeljima. SAM je kratica za 'Single Abstract Method'.
Q # 10) Što je referenca metode?
format test slučaja u testiranju softvera
Odgovor: U Javi 8 predstavljena je nova značajka poznata pod nazivom Reference Reference. To se koristi za upućivanje na metodu funkcionalnog sučelja. Može se koristiti za zamjenu Lambda Expression, pozivajući se na metodu.
Na primjer: Ako Lambda Expression izgleda
num -> System.out.println(num)
Tada bi odgovarajuća referenca metode bila,
System.out::println
gdje je “::” operator koji razlikuje naziv klase od naziva metode.
Q # 11) Objasnite sljedeću sintaksu
String:: Valueof Expression
Odgovor: To je statična referenca metode na Vrijednost metoda Niz razred. System.out :: println je statična referenca metode na println metodu out objekta klase System.
Vraća odgovarajući string prikaz argumenta koji je proslijeđen. Argument može biti Character, Integer, Boolean, i tako dalje.
P # 12) Što je predikat? Navedite razliku između predikata i funkcije?
Odgovor: Predikat je unaprijed definirano funkcionalno sučelje. Nalazi se u paketu java.util.function.Predicate. Prihvaća samo jedan argument koji je u obliku kao što je prikazano dolje,
Predikat
Predikat | Funkcija |
---|---|
Ima povratni tip kao logički. | Ima povratni tip kao objekt. |
Napisano je u obliku Predikat koja prihvaća jedan argument. | Napisano je u obliku Funkcija koja također prihvaća jedan argument. |
To je funkcionalno sučelje koje se koristi za procjenu Lambda izraza. To se može koristiti kao cilj za Referencu metoda. | To je također funkcionalno sučelje koje se koristi za procjenu Lambda izraza. U funkciji, T je za tip unosa, a R je za tip rezultata. To se također može koristiti kao cilj za Lambda izraz i Referencu metoda. |
P # 13) Je li nešto loše sa sljedećim kodom? Hoće li se sastaviti ili dati neku konkretnu pogrešku?
@FunctionalInterface public interface Test { public C apply(A a, B b); default void printString() { System.out.println('softwaretestinghelp'); } }
Odgovor: Da. Kôd će se kompajlirati jer slijedi specifikaciju funkcionalnog sučelja koja definira samo jednu apstraktnu metodu. Druga metoda, printString (), zadana je metoda koja se ne računa kao apstraktna metoda.
P # 14) Što je Stream API? Zašto nam je potreban Stream API?
Odgovor: Stream API nova je značajka dodana u Javi 8. To je posebna klasa koja se koristi za obradu objekata iz izvora kao što je Collection.
Potreban nam je Stream API jer,
- Podržava agregatne operacije što obradu čini jednostavnom.
- Podržava programiranje u funkcionalnom stilu.
- Radi bržu obradu. Stoga je prikladan za bolje performanse.
- Omogućuje paralelne operacije.
Pitanje 15) Koja je razlika između ograničenja i preskakanja?
Odgovor: Metoda limit () koristi se za vraćanje Streama određene veličine. Na primjer, Ako ste spomenuli ograničenje (5), tada bi broj izlaznih elemenata bio 5.
Razmotrimo sljedeći primjer. Izlaz ovdje vraća šest elemenata jer je ograničenje postavljeno na 'šest'.
import java.util.stream.Stream; public class Java8 { public static void main(String() args) { Stream.of(0,1,2,3,4,5,6,7,8) .limit(6) /*limit is set to 6, hence it will print the numbers starting from 0 to 5 */ .forEach(num->System.out.print('
'+num)); } }
Izlaz:
Dok se metoda preskakanja () koristi za preskakanje elementa.
Razmotrimo sljedeći primjer. U izlazu su elementi 6, 7, 8, što znači da je preskočio elemente do 6. indeksa (počevši od 1).
import java.util.stream.Stream; public class Java8 { public static void main(String() args) { Stream.of(0,1,2,3,4,5,6,7,8) .skip(6) /* It will skip till 6th index. Hence 7th, 8th and 9th index elements will be printed */ .forEach(num->System.out.print('
'+num)); } }
Izlaz:
Q # 16) Kako ćete dobiti trenutni datum i vrijeme pomoću Java 8 API-ja za datum i vrijeme?
Odgovor: Program u nastavku napisan je uz pomoć novog API-ja predstavljenog u Javi 8. Koristili smo LocalDate, LocalTime i LocalDateTime API kako bismo dobili trenutni datum i vrijeme.
U prvom i drugom ispisu dobili smo trenutni datum i vrijeme sa sistemskog sata sa zadanom vremenskom zonom. U trećoj izjavi za ispis koristili smo LocalDateTime API koji će ispisivati i datum i vrijeme.
class Java8 { public static void main(String() args) { System.out.println('Current Local Date: ' + java.time.LocalDate.now()); //Used LocalDate API to get the date System.out.println('Current Local Time: ' + java.time.LocalTime.now()); //Used LocalTime API to get the time System.out.println('Current Local Date and Time: ' + java.time.LocalDateTime.now()); //Used LocalDateTime API to get both date and time } }
Izlaz:
P # 17) Koja je svrha metode limit () u Javi 8?
Odgovor: Metoda Stream.limit () određuje ograničenje elemenata. Veličina koju navedete u ograničenju (X), vratit će Stream veličine 'X'. To je metoda java.util.stream.Stream
Sintaksa:
limit(X)
Gdje je ‘X’ veličina elementa.
P # 18) Napisati program za ispis 5 slučajnih brojeva pomoću forEach u Javi 8?
Odgovor: Program u nastavku generira 5 slučajnih brojeva uz pomoć forEach u Javi 8. Ograničenu varijablu možete postaviti na bilo koji broj, ovisno o tome koliko slučajnih brojeva želite generirati.
import java.util.Random; class Java8 { public static void main(String() args) { Random random = new Random(); random.ints().limit(5).forEach(System.out::println); /* limit is set to 5 which means only 5 numbers will be printed with the help of terminal operation forEach */ } }
Izlaz:
P # 19) Napišite program za ispis 5 slučajnih brojeva poredanim redoslijedom pomoću forEach u Javi 8?
Odgovor: Program u nastavku generira 5 slučajnih brojeva uz pomoć forEach u Javi 8. Ograničenu varijablu možete postaviti na bilo koji broj, ovisno o tome koliko slučajnih brojeva želite generirati. Jedino što ovdje trebate dodati je metoda sorted ().
import java.util.Random; class Java8 { public static void main(String() args) { Random random = new Random(); random.ints().limit(5).sorted().forEach(System.out::println); /* sorted() method is used to sort the output after terminal operation forEach */ } }
Izlaz:
P # 20) Koja je razlika između posrednih i terminalnih operacija u streamu?
Odgovor: Sve operacije streama su ili terminalne ili posredne. Međuoperacije su operacije koje vraćaju Stream tako da se neke druge operacije mogu izvoditi na tom Streamu. Posredničke operacije ne obrađuju tok na mjestu poziva, stoga se nazivaju lijenima.
Ove vrste operacija (srednje operacije) obrađuju podatke kada se provodi operacija terminala. Primjeri međufaznih operacija su karta i filtar.
aplikacije za pretvaranje YouTube videa u mp3
Terminalske operacije pokreću obradu streama. Tijekom ovog poziva Stream prolazi sve posredničke operacije. Primjeri rada terminala su zbroj, prikupljanje i svaki.
U ovom programu prvo pokušavamo izvršiti intermedijarnu operaciju bez rada terminala. Kao što vidite, prvi blok koda neće se izvršiti jer ne podržava operaciju terminala.
Drugi je blok uspješno izveden zbog zbroja operacije terminala ().
import java.util.Arrays; class Java8 { public static void main(String() args) { System.out.println('Intermediate Operation won't execute'); Arrays.stream(new int() { 0, 1 }).map(i -> { System.out.println(i); return i; // No terminal operation so it won't execute }); System.out.println('Terminal operation starts here'); Arrays.stream(new int() { 0, 1 }).map(i -> { System.out.println(i); return i; // This is followed by terminal operation sum() }).sum(); } }
Izlaz:
P # 21) Napišite Java 8 program da biste dobili zbroj svih brojeva prisutnih na popisu?
Odgovor: U ovom programu koristili smo ArrayList za spremanje elemenata. Zatim smo uz pomoć metode sum () izračunali zbroj svih elemenata prisutnih u ArrayListu. Zatim se pretvara u Stream i dodaje svaki element uz pomoć metoda mapToInt () i sum ().
import java.util.*; class Java8 { public static void main(String() args) { ArrayList list = new ArrayList(); list.add(10); list.add(20); list.add(30); list.add(40); list.add(50); // Added the numbers into Arraylist System.out.println(sum(list)); } public static int sum(ArrayList list) { return list.stream().mapToInt(i -> i).sum(); // Found the total using sum() method after // converting it into Stream } }
Izlaz:
P # 22) Napišite program Java 8 kako biste popisali brojeve u kvadrat, a zatim filtrirali brojeve veće od 100, a zatim pronašli prosjek preostalih brojeva?
Odgovor: U ovom smo programu uzeli niz cijelih brojeva i pohranili ih na popis. Zatim smo uz pomoć mapToInt () izravnali elemente na kvadrat i filtrirali brojeve veće od 100. Konačno, izračunava se prosjek preostalog broja (veći od 100).
import java.util.Arrays; import java.util.List; import java.util.OptionalDouble; public class Java8 { public static void main(String() args) { Integer() arr = new Integer() { 100, 100, 9, 8, 200 }; List list = Arrays.asList(arr); // Stored the array as list OptionalDouble avg = list.stream().mapToInt(n -> n * n).filter(n -> n > 100).average(); /* Converted it into Stream and filtered out the numbers which are greater than 100. Finally calculated the average */ if (avg.isPresent()) System.out.println(avg.getAsDouble()); } }
Izlaz:
Q # 23) Koja je razlika između Streama’s findFirst () i findAny ()?
Odgovor: Kao što i samo ime govori, metoda findFirst () koristi se za pronalaženje prvog elementa iz toka, dok se metoda findAny () koristi za pronalaženje bilo kojeg elementa iz toka.
FindFirst () je po prirodi predestinarizam, dok je findAny () nedeterminističan. U programiranju, Deterministički znači da se izlaz temelji na ulazu ili početnom stanju sustava.
P # 24) Koja je razlika između Iteratora i Spliteratora?
Odgovor: Ispod su razlike između Iteratora i Spliteratora.
Iterator | Spliterator |
---|---|
Predstavljen je u Java verziji 1.2 | Uveden je u Javi SE 8 |
Koristi se za API za prikupljanje. | Koristi se za Stream API. |
Neke od metoda ponavljanja su next () i hasNext () koje se koriste za ponavljanje elemenata. | Spliterator metoda je tryAdvance (). |
Moramo pozvati metodu iterator () na Objektu kolekcije. | Moramo pozvati metodu spliterator () na objektu Stream. |
Interakcija je samo u slijedu. | Djeluje paralelno i sekvencijalno. |
P # 25) Što je potrošačko funkcionalno sučelje?
Odgovor: Potrošačko funkcionalno sučelje također je sučelje s jednim argumentom (poput predikata i funkcije). Dolazi pod java.util.function.Consumer. Ovo ne vraća nikakvu vrijednost.
U donjem programu koristili smo metodu accept za dohvaćanje vrijednosti objekta String.
import java.util.function.Consumer; public class Java8 { public static void main(String() args) Consumer str = str1 -> System.out.println(str1); str.accept('Saket'); /* We have used accept() method to get the value of the String Object */ } }
Izlaz:
26. pitanje) Što je funkcionalno sučelje dobavljača?
Odgovor: Funkcionalno sučelje dobavljača ne prihvaća ulazne parametre. Dolazi pod java.util.function.Supplier. To vraća vrijednost pomoću metode get.
U donjem programu koristili smo metodu get za dohvaćanje vrijednosti objekta String.
import java.util.function.Supplier; public class Java8 { public static void main(String() args) { Supplier str = () -> 'Saket'; System.out.println(str.get()); /* We have used get() method to retrieve the value of String object str. */ } }
Izlaz:
P # 27) Što je Nashorn u Javi 8?
Odgovor: Nashorn u Javi 8 je mehanizam za izvršavanje i procjenu JavaScript koda zasnovan na Javi.
Q # 28) Napišite Java 8 program kako biste pronašli najmanji i najveći broj streama?
Odgovor: U ovom smo programu koristili metode min () i max () za dobivanje najvećeg i najmanjeg broja streama. Prije svega, inicijalizirali smo Stream koji ima Integers i pomoću metode Comparator.comparing () uspoređivali smo elemente Streama.
Kada se ova metoda uključi s max () i min (), dobit će vam najviše i najniže brojeve. Također će raditi i kada se uspoređuju žice.
import java.util.Comparator; import java.util.stream.*; public class Java8{ public static void main(String args()) { Integer highest = Stream.of(1, 2, 3, 77, 6, 5) .max(Comparator.comparing(Integer::valueOf)) .get(); /* We have used max() method with Comparator.comparing() method to compare and find the highest number */ Integer lowest = Stream.of(1, 2, 3, 77, 6, 5) .min(Comparator.comparing(Integer::valueOf)) .get(); /* We have used max() method with Comparator.comparing() method to compare and find the highest number */ System.out.println('The highest number is: ' + highest); System.out.println('The lowest number is: ' + lowest); } }
Izlaz:
P # 29) Koja je razlika između rada streama karte i flatMap?
Odgovor: Operacija Map Stream daje jednu izlaznu vrijednost po ulaznoj vrijednosti, dok operacija flatMap Stream daje nula ili više izlaznih vrijednosti po ulaznoj vrijednosti.
Primjer karte- Rad Map Streama obično se koristi za jednostavno upravljanje Streamom, poput one koja je spomenuta u nastavku.
U ovom smo programu znakove 'Imena' promijenili u velika slova pomoću operacije mape nakon što smo ih spremili u Stream, a pomoću operacije forEach Terminal ispisali smo svaki element.
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class Map { public static void main(String() str) { List Names = Arrays.asList('Saket', 'Trevor', 'Franklin', 'Michael'); List UpperCase = Names.stream().map(String::toUpperCase).collect(Collectors.toList()); // Changed the characters into upper case after converting it into Stream UpperCase.forEach(System.out::println); // Printed using forEach Terminal Operation } }
Izlaz:
Primjer flatMap- FlatMap Stream operacija koristi se za složenije Stream operacije.
Ovdje smo izvršili flatMap operaciju na “Popisu popisa tipa String”. Dali smo imena unosa kao popis, a zatim smo ih spremili u tok na kojem smo filtrirali imena koja počinju sa „S“.
Konačno, uz pomoć operacije forEach Terminal ispisali smo svaki element.
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class flatMap { public static void main(String() str) { List Names = Arrays.asList(Arrays.asList('Saket', 'Trevor'), Arrays.asList('John', 'Michael'), Arrays.asList('Shawn', 'Franklin'), Arrays.asList('Johnty', 'Sean')); /* Created a “List of List of type String” i.e. List Stored names into the list */ List Start = Names.stream().flatMap(FirstName -> FirstName.stream()).filter(s -> s.startsWith('S')) .collect(Collectors.toList()); /* Converted it into Stream and filtered out the names which start with 'S' */ Start.forEach(System.out::println); /* Printed the Start using forEach operation */ } }
Izlaz:
besplatni program za preuzimanje YouTube videa
Q # 30) Što je MetaSpace u Javi 8?
Odgovor: U Javi 8 uvedena je nova značajka za pohranu klasa. Područje u kojem se sve klase pohranjene u Javi 8 nazivaju MetaSpace. MetaSpace je zamijenio PermGen.
Do Java 7, PermGen je koristio Java Virtual Machine za pohranu klasa. Budući da je MetaSpace dinamičan jer može dinamički rasti i nema ograničenja veličine, Java 8 je PermGen zamijenio MetaSpaceom.
P # 31) Koja je razlika između unutarnje i vanjske iteracije Java 8?
Odgovor: Razlika između unutarnje i vanjske iteracije navedena je u nastavku.
Unutarnja iteracija | Vanjska iteracija |
---|---|
Uveden je u Javi 8 (JDK-8). | Uveden je i prakticiran u prethodnoj verziji Jave (JDK-7, JDK-6 i tako dalje). |
Interno se ponavlja na agregiranim objektima kao što je Zbirka. | Izvana se ponavlja na agregiranim objektima. |
Podržava stil funkcionalnog programiranja. | Podržava stil programiranja OOPS. |
Interni Iterator je pasivan. | Vanjski je pokretač aktivan. |
Manje je pogrešno i zahtijeva manje kodiranja. | Zahtijeva malo više kodiranja i sklonije je pogreškama. |
P # 32) Što je JJS?
Odgovor: JJS je alat naredbenog retka koji se koristi za izvršavanje JavaScript koda na konzoli. U Javi 8, JJS je nova izvršna datoteka koja je JavaScript mehanizam.
P # 33) Što je ChronoUnits u Javi 8?
Odgovor: ChronoUnits je nabrajanje koje je uvedeno da zamijeni vrijednosti Integer koje se koriste u starom API-ju za predstavljanje mjeseca, dana itd.
P # 34) Objasniti StringJoiner klasu u Javi 8? Kako možemo postići spajanje više nizova pomoću StringJoiner Class?
Odgovor: U Javi 8 uvedena je nova klasa u paketu java.util koji je bio poznat kao StringJoiner. Kroz ovu klasu možemo pridružiti više nizova odvojenih graničnicima, uz dodavanje prefiksa i sufiksa.
U donjem programu naučit ćemo o pridruživanju više nizova pomoću StringJoiner Class. Ovdje imamo ',' kao graničnik između dvije različite žice. Tada smo spojili pet različitih nizova dodavanjem pomoću metode add (). Na kraju, ispisuje String Joiner.
U sljedećem pitanju br. 35 naučit ćete o dodavanju prefiksa i sufiksa u niz.
import java.util.StringJoiner; public class Java8 { public static void main(String() args) { StringJoiner stj = new StringJoiner(','); // Separated the elements with a comma in between. stj.add('Saket'); stj.add('John'); stj.add('Franklin'); stj.add('Ricky'); stj.add('Trevor'); // Added elements into StringJoiner “stj” System.out.println(stj); } }
Izlaz:
P # 35) Napišite Java 8 program za dodavanje prefiksa i sufiksa u String?
Odgovor: U ovom programu imamo ',' kao graničnik između dva različita niza. Također, dali smo zagrade '(' i ')' kao prefiks i sufiks. Tada se pridružuje pet različitih nizova dodavanjem uz pomoć metode add (). Na kraju, ispisuje String Joiner.
import java.util.StringJoiner; public class Java8 { public static void main(String() args) { StringJoiner stj = new StringJoiner(',', '(', ')'); // Separated the elements with a comma in between. //Added a prefix '(' and a suffix ')' stj.add('Saket'); stj.add('John'); stj.add('Franklin'); stj.add('Ricky'); stj.add('Trevor'); // Added elements into StringJoiner “stj” System.out.println(stj); } }
Izlaz:
Q # 36) Napisati program Java 8 za ponavljanje toka metodom forEach?
Odgovor: U ovom programu ponavljamo tok koji započinje s “number = 2”, nakon čega slijedi varijabla count uvećana za “1” nakon svake iteracije.
Zatim filtriramo broj čiji ostatak nije nula kada se podijeli s brojem 2. Također, postavili smo ograničenje kao? 5 što znači da će samo 5 puta ponoviti. Konačno, ispisujemo svaki element pomoću forEach.
import java.util.stream.*; public class Java8 { public static void main(String() args){ Stream.iterate(2, count->count+1) // Counter Started from 2, incremented by 1 .filter(number->number%2==0) // Filtered out the numbers whose remainder is zero // when divided by 2 .limit(5) // Limit is set to 5, so only 5 numbers will be printed .forEach(System.out::println); } }
Izlaz:
P # 37) Napišite Java 8 program za sortiranje niza, a zatim pretvoreni sortirani niz u Stream?
Odgovor: U ovom programu koristili smo paralelno sortiranje za sortiranje niza Integers. Zatim smo sortirani niz pretvorili u Stream i uz pomoć forEach ispisali smo svaki element Streama.
import java.util.Arrays; public class Java8 { public static void main(String() args) { int arr() = { 99, 55, 203, 99, 4, 91 }; Arrays.parallelSort(arr); // Sorted the Array using parallelSort() Arrays.stream(arr).forEach(n -> System.out.print(n + ' ')); /* Converted it into Stream and then printed using forEach */ } }
Izlaz:
Q # 38) Napišite Java 8 program kako biste pronašli broj žica na popisu čija je duljina veća od 5?
Odgovor: U ovom se programu na popis dodaju četiri žice metodom add (), a zatim smo uz pomoć izraza Stream i Lambda izbrojali nizove čija je duljina veća od 5.
import java.util.ArrayList; import java.util.List; public class Java8 { public static void main(String() args) { List list = new ArrayList(); list.add('Saket'); list.add('Saurav'); list.add('Softwaretestinghelp'); list.add('Steve'); // Added elements into the List long count = list.stream().filter(str -> str.length() > 5).count(); /* Converted the list into Stream and filtering out the Strings whose length more than 5 and counted the length */ System.out.println('We have ' + count + ' strings with length greater than 5'); } }
Izlaz:
P # 39) Napisati program Java 8 za spajanje dvaju tokova?
Odgovor: U ovom smo programu stvorili dva toka od dva već stvorena popisa, a zatim smo ih spojili metodom concat () u kojem se dva popisa prosljeđuju kao argument. Na kraju, ispisani su elementi spojenog toka.
import java.util.Arrays; import java.util.List; import java.util.stream.Stream; public class Java8 { public static void main(String() args) { List list1 = Arrays.asList('Java', '8'); List list2 = Arrays.asList('explained', 'through', 'programs'); Stream concatStream = Stream.concat(list1.stream(), list2.stream()); // Concatenated the list1 and list2 by converting them into Stream concatStream.forEach(str -> System.out.print(str + ' ')); // Printed the Concatenated Stream } }
Izlaz:
Q # 40) Napišite Java 8 program za uklanjanje dupliciranih elemenata s popisa?
Odgovor: U ovom programu pohranili smo elemente u niz i pretvorili ih u popis. Nakon toga koristili smo stream i prikupili ga za 'Set' uz pomoć metode 'Collectors.toSet ()'.
import java.util.Arrays; import java.util.List; import java.util.Set; import java.util.stream.Collectors; public class Java8 { public static void main(String() args) { Integer() arr1 = new Integer() { 1, 9, 8, 7, 7, 8, 9 }; List listdup = Arrays.asList(arr1); // Converted the Array of type Integer into List Set setNoDups = listdup.stream().collect(Collectors.toSet()); // Converted the List into Stream and collected it to “Set” // Set won't allow any duplicates setNoDups.forEach((i) -> System.out.print(' ' + i)); } }
Izlaz:
Zaključak
U ovom smo članku razumjeli nove značajke predstavljene u Javi 8. Detaljno smo pokrili sva glavna pitanja u vezi s intervjuima za Java 8 i njihove odgovore.
Nakon čitanja ovog vodiča, morali ste steći znanje o novim API-ima za manipulaciju datumom i vremenom, novim značajkama Java 8, novim API-ima za strujanje, kao i primjernim primjerima programiranja prema konceptu. Ovi novi koncepti ili značajke dio su postupka razgovora kada ste za izazivačke Java pozicije.
Sve najbolje!!
=> Ovdje provjerite SVE Java tutorijale.
Preporučena literatura
- Intervjuirajte pitanja i odgovore
- Pitanja i odgovori za ispitivanje ETL-a
- Neka nezgodna ručna ispitivanja Pitanja i odgovori
- Top 40 C Programska pitanja i odgovori za intervjue
- 40 najpopularnijih pitanja i odgovora za J2EE intervjue koje biste trebali pročitati
- Spock intervju pitanja s odgovorima (najpopularnije)
- 25 najboljih agilnih testova Intervju pitanja i odgovori
- Top 32 najbolja pitanja i odgovori za intervju za datastage