top 40 java 8 interview questions answers
I denne vejledning har vi leveret de vigtigste Java 8-interviewspørgsmål og deres svar med kodeeksempler og forklaringer:
Alle de vigtige spørgsmål, der er anført i denne vejledning, er specifikke for Java 8. Java har udviklet sig meget (over tid) med introduktionen af nye versioner. For hver version har vi nye funktioner tilknyttet Java. Alle disse vigtige funktioner vil blive dækket i denne vejledning.
Dette er meget almindelige spørgsmål, som du vil blive stillet i alle Java-interviews, der kræver avancerede færdigheder. Disse koncepter er must-have, hvis du skal vises til standard Java-certificeringseksaminer som Oracle Certified Associate (OCA).
=> Se på Java Beginners Guide her.
Denne artikel vil være meget velegnet til både Java-udviklere såvel som Java-testere / automatiseringstestere eller enhver, der er på udkig efter højere løn i samme felt, fordi den kræver avancerede Java-færdigheder.
Ofte stillede spørgsmål til Java 8 Interview
Q # 1) Skriv en liste over de nye funktioner, der er introduceret i Java 8?
Svar: Nye funktioner, der introduceres i Java 8, er anført nedenfor:
- Lambda-udtryk
- Metode Referencer
- Valgfri klasse
- Funktionelt interface
- Standardmetoder
- Næsehorn, JavaScript-motor
- Stream API
- Dato API
Q # 2) Hvad er funktionelle grænseflader?
Svar: Functional Interface er en interface, der kun har en abstrakt metode. Implementeringen af disse grænseflader leveres ved hjælp af et Lambda-udtryk, hvilket betyder at for at bruge Lambda-udtrykket skal du oprette en ny funktionel grænseflade, eller du kan bruge den foruddefinerede funktionel grænseflade til Java 8 .
Annotationen, der bruges til at oprette en ny funktionel grænseflade, er “ @FunktionelInterface ”.
Q # 3) Hvad er en valgfri klasse?
Svar: Valgfri klasse er en speciel indpakningsklasse introduceret i Java 8, som bruges til at undgå NullPointerExceptions. Denne sidste klasse er til stede under pakken java.util. NullPointerExceptions opstår, når vi ikke udfører Null-kontrollerne.
Spørgsmål nr. 4) Hvad er standardmetoderne?
Svar: Standardmetoder er metoderne i grænsefladen, der har en krop. Disse metoder, som navnet antyder, bruger standardnøgleordene. Brugen af disse standardmetoder er 'bagudkompatibilitet', hvilket betyder, at hvis JDK ændrer et interface (uden standardmetode), vil de klasser, der implementerer dette interface, bryde.
På den anden side, hvis du tilføjer standardmetoden i et interface, vil du være i stand til at levere standardimplementeringen. Dette påvirker ikke implementeringsklasser.
Syntaks:
public interface questions{ default void print() { System.out.println('www.softwaretestinghelp.com'); } }
Q # 5) Hvad er de vigtigste egenskaber ved Lambda-funktionen?
Svar: Hovedegenskaberne ved Lambda-funktionen er som følger:
- En metode, der er defineret som Lambda-ekspression, kan overføres som en parameter til en anden metode.
- En metode kan eksistere enkeltstående uden at tilhøre en klasse.
- Det er ikke nødvendigt at erklære parametertypen, fordi compileren kan hente typen fra parameterens værdi.
- Vi kan bruge parenteser, når vi bruger flere parametre, men det er ikke nødvendigt at have parentes, når vi bruger en enkelt parameter.
- Hvis udtrykslegemet har en enkelt udsagn, er der ingen grund til at inkludere krøllede seler.
Q # 6) Hvad var der galt med den gamle dato og tid?
Svar: Nedenfor er ulemperne ved den gamle dato og tid:
- Java.util.Date kan ændres og er ikke trådsikker, mens den nye Java 8 Date and Time API er trådsikker.
- Java 8 Date and Time API opfylder ISO-standarderne, mens den gamle dato og tid var dårligt designet.
- Det har introduceret flere API-klasser til en dato som LocalDate, LocalTime, LocalDateTime osv.
- Når vi taler om ydeevnen mellem de to, fungerer Java 8 hurtigere end det gamle regime for dato og tid.
Q # 7) Hvad er forskellen mellem Collection API og Stream API?
Svar: Forskellen mellem Stream API og Collection API kan forstås fra nedenstående tabel:
Stream API | Samlings-API |
---|---|
Det blev introduceret i Java 8 Standard Edition version. | Det blev introduceret i Java version 1.2 |
Der er ingen brug af Iterator og Spliterators. | Ved hjælp af forEach kan vi bruge Iterator og Spliterators til at gentage elementerne og udføre en handling på hvert element eller elementet. |
Et uendeligt antal funktioner kan gemmes. | Et tælleligt antal elementer kan lagres. |
Forbrug og gentagelse af elementer fra Stream-objektet kan kun udføres en gang. | Forbrug og gentagelse af elementer fra indsamlingsobjektet kan udføres flere gange. |
Det bruges til at beregne data. | Det bruges til at gemme data. |
Q # 8) Hvordan kan du oprette et funktionelt interface?
Svar: Selvom Java kan identificere en funktionel grænseflade, kan du definere en med kommentaren
@FunktionelInterface
Når du har defineret den funktionelle grænseflade, kan du kun have en abstrakt metode. Da du kun har en abstrakt metode, kan du skrive flere statiske metoder og standardmetoder.
Nedenfor er programmeringseksemplet for FunctionalInterface skrevet til multiplikation af to tal.
@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)); } }
Produktion:
Q # 9) Hvad er et SAM-interface?
Svar: Java 8 har introduceret konceptet FunctionalInterface, der kun kan have en abstrakt metode. Da disse grænseflader kun angiver en abstrakt metode, kaldes de undertiden som SAM-grænseflader. SAM står for 'Single Abstract Method'.
Q # 10) Hvad er metodehenvisning?
bedste gratis video downloader Windows 10
Svar: I Java 8 blev en ny funktion introduceret kendt som Method Reference. Dette bruges til at henvise til metoden til funktionel grænseflade. Det kan bruges til at erstatte Lambda Expression, mens der henvises til en metode.
For eksempel: Hvis Lambda-udtrykket ser ud
num -> System.out.println(num)
Derefter ville den tilsvarende metodehenvisning være,
System.out::println
hvor “::” er en operator, der skelner klassenavn fra metodens navn.
Q # 11) Forklar følgende syntaks
String:: Valueof Expression
Svar: Det er en statisk metodehenvisning til Værdi af metode til Snor klasse. System.out :: println er en statisk metodehenvisning til println-metoden for et objekt fra systemklassen.
Det returnerer den tilsvarende strengrepræsentation af det argument, der sendes. Argumentet kan være tegn, heltal, boolsk osv.
Spørgsmål nr. 12) Hvad er et prædikat? Angiv forskellen mellem et prædikat og en funktion?
Svar: Predikat er en foruddefineret funktionel grænseflade. Det er under java.util.function.Predicate-pakke. Det accepterer kun et enkelt argument, der er i formen som vist nedenfor,
Prædikat
Prædikat | Fungere |
---|---|
Det har returtypen som boolsk. | Den har returtypen som Objekt. |
Det er skrevet i form af Prædikat som accepterer et enkelt argument. | Det er skrevet i form af Fungere som også accepterer et enkelt argument. |
Det er en funktionel grænseflade, der bruges til at evaluere Lambda-udtryk. Dette kan bruges som et mål for en metodehenvisning. | Det er også et funktionelt interface, der bruges til at evaluere Lambda Expressions. I funktion er T for inputtype, og R er for resultattypen. Dette kan også bruges som et mål for en Lambda-ekspression og metodehenvisning. |
Q # 13) Er der noget galt med følgende kode? Vil det kompilere eller give nogen specifik fejl?
@FunctionalInterface public interface Test { public C apply(A a, B b); default void printString() { System.out.println('softwaretestinghelp'); } }
Svar: Ja. Koden kompileres, fordi den følger den funktionelle grænsefladespecifikation for kun at definere en enkelt abstrakt metode. Den anden metode, printString (), er en standardmetode, der ikke tæller som en abstrakt metode.
Q # 14) Hvad er en Stream API? Hvorfor kræver vi Stream API?
Svar: Stream API er en ny funktion tilføjet i Java 8. Det er en speciel klasse, der bruges til at behandle objekter fra en kilde som f.eks. Collection.
Vi kræver Stream API, fordi
- Det understøtter samlede operationer, hvilket gør behandlingen enkel.
- Det understøtter programmering i funktionel stil.
- Det gør hurtigere behandling. Derfor er det egnet til bedre ydeevne.
- Det tillader parallelle operationer.
Q # 15) Hvad er forskellen mellem grænse og spring?
Svar: Metoden limit () bruges til at returnere Stream af den angivne størrelse. For eksempel, Hvis du har nævnt grænse (5), ville antallet af outputelementer være 5.
Lad os overveje følgende eksempel. Outputtet her returnerer seks elementer, da grænsen er sat til 'seks'.
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)); } }
Produktion:
Mens metoden skip () bruges til at springe over elementet.
Lad os overveje følgende eksempel. I output er elementerne 6, 7, 8, hvilket betyder, at det har sprunget over elementerne til det 6. indeks (startende fra 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)); } }
Produktion:
Q # 16) Hvordan får du den aktuelle dato og tid ved hjælp af Java 8 Date and Time API?
Svar: Nedenstående program er skrevet ved hjælp af den nye API introduceret i Java 8. Vi har gjort brug af LocalDate, LocalTime og LocalDateTime API for at få den aktuelle dato og tid.
I den første og anden udskriftserklæring har vi hentet den aktuelle dato og tid fra systemuret med tidszonen indstillet som standard. I den tredje udskriftserklæring har vi brugt LocalDateTime API, som udskriver både dato og klokkeslæt.
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 } }
Produktion:
Q # 17) Hvad er formålet med metoden limit () i Java 8?
Svar: Metoden Stream.limit () angiver grænsen for elementerne. Den størrelse, du angiver i grænsen (X), returnerer strømmen af størrelsen på 'X'. Det er en metode til java.util.stream.Stream
Syntaks:
limit(X)
Hvor 'X' er størrelsen på elementet.
Q # 18) Skriv et program til udskrivning af 5 tilfældige tal ved hjælp af forEach i Java 8?
Svar: Nedenstående program genererer 5 tilfældige tal ved hjælp af forEach i Java 8. Du kan indstille grænsevariablen til et hvilket som helst tal afhængigt af hvor mange tilfældige tal, du vil generere.
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 */ } }
Produktion:
Q # 19) Skriv et program for at udskrive 5 tilfældige tal i sorteret rækkefølge ved hjælp af forEach i Java 8?
Svar: Nedenstående program genererer 5 tilfældige tal ved hjælp af forEach i Java 8. Du kan indstille grænsevariablen til et hvilket som helst tal afhængigt af hvor mange tilfældige tal, du vil generere. Det eneste du skal tilføje her er den sorterede () metode.
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 */ } }
Produktion:
Q # 20) Hvad er forskellen mellem mellemliggende og terminaloperationer i Stream?
Svar: Alle Stream-operationer er enten terminal eller mellemliggende. Mellemliggende operationer er de operationer, der returnerer Stream, så nogle andre operationer kan udføres på den Stream. Mellemliggende operationer behandler ikke Stream på opkaldsstedet, derfor kaldes de dovne.
Disse typer operationer (mellemliggende operationer) behandler data, når der udføres en terminalhandling. Eksempler af mellemliggende operation er kort og filter.
Terminaloperationer initierer Stream-behandling. Under dette opkald gennemgår Stream alle mellemliggende operationer. Eksempler af Terminal Operation er sum, Collect og forEach.
I dette program forsøger vi først at udføre mellemliggende operation uden terminaloperation. Som du kan se, udføres den første kodeblok ikke, fordi der ikke understøttes nogen terminaloperation.
netværkssikkerhedsnøgle til samsung hotspot
Den anden blok blev udført med succes på grund af terminaloperationssummen ().
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(); } }
Produktion:
Q # 21) Skriv et Java 8-program for at få summen af alle numre på en liste?
Svar: I dette program har vi brugt ArrayList til at gemme elementerne. Derefter har vi ved hjælp af sum () -metoden beregnet summen af alle de elementer, der er til stede i ArrayList. Derefter konverteres den til Stream og tilføjes hvert element ved hjælp af mapToInt () og sum () metoder.
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 } }
Produktion:
Q # 22) Skriv et Java 8-program for at kvadratere listen over tal og filtrer derefter tallene ud større end 100 og find derefter gennemsnittet af de resterende tal?
Svar: I dette program har vi taget en Array of Integers og gemt dem på en liste. Derefter ved hjælp af mapToInt () har vi kvadreret elementerne og filtreret tallene større end 100. Endelig beregnes gennemsnittet af det resterende antal (større end 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()); } }
Produktion:
Q # 23) Hvad er forskellen mellem Streams findFirst () og findAny ()?
Svar: Som navnet antyder, bruges findFirst () -metoden til at finde det første element fra strømmen, mens findAny () -metoden bruges til at finde ethvert element fra strømmen.
FindFirst () er predestinarianism i naturen, mens findAny () er ikke-deterministisk. Ved programmering betyder deterministisk, at output er baseret på systemets input eller starttilstand.
Q # 24) Hvad er forskellen mellem Iterator og Spliterator?
Svar: Nedenfor er forskellene mellem Iterator og Spliterator.
Iterator | Splitter |
---|---|
Det blev introduceret i Java version 1.2 | Det blev introduceret i Java SE 8 |
Det bruges til Collection API. | Det bruges til Stream API. |
Nogle af iteratmetoderne er næste () og hasNext (), der bruges til at gentage elementer. | Spliterator-metoden er tryAdvance (). |
Vi er nødt til at kalde iterator () -metoden på Collection Object. | Vi skal kalde metoden spliterator () på Stream Object. |
Itererer kun i rækkefølge. | Itererer i parallel og sekventiel rækkefølge. |
Q # 25) Hvad er forbrugerfunktionelt interface?
Svar: Forbrugerfunktionel grænseflade er også et enkelt argumentgrænseflade (som Predikat og funktion). Det kommer under java.util.function.Consumer. Dette returnerer ingen værdi.
I nedenstående program har vi brugt acceptmetoden til at hente værdien af strengobjektet.
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 */ } }
Produktion:
Q # 26) Hvad er leverandørens funktionelle interface?
Svar: Leverandørens funktionelle interface accepterer ikke inputparametre. Det kommer under java.util.function.Supplier. Dette returnerer værdien ved hjælp af get-metoden.
I nedenstående program har vi brugt get-metoden til at hente værdien af strengobjektet.
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. */ } }
Produktion:
Q # 27) Hvad er Nashorn i Java 8?
Svar: Nashorn i Java 8 er en Java-baseret motor til udførelse og evaluering af JavaScript-kode.
Q # 28) Skriv et Java 8-program for at finde det laveste og højeste antal af en Stream?
Svar: I dette program har vi brugt min () og max () metoder til at få det højeste og laveste antal af en Stream. Først og fremmest har vi initialiseret en strøm, der har heltal, og ved hjælp af metoden Comparator.comparing () har vi sammenlignet elementerne i strømmen.
Når denne metode er inkorporeret med max () og min (), giver den dig de højeste og laveste tal. Det fungerer også, når man sammenligner strengene.
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); } }
Produktion:
Q # 29) Hvad er forskellen mellem kort og flatMap Stream-drift?
Svar: Map Stream-operation giver en outputværdi pr. Inputværdi, mens flatMap Stream-operation giver nul eller mere outputværdi pr. Inputværdi.
Korteksempel- Map Stream-operation bruges normalt til enkel betjening på Stream som den, der er nævnt nedenfor.
I dette program har vi ændret tegnene 'Navne' til store bogstaver ved hjælp af kortoperation efter lagring af dem i en Stream og ved hjælp af forEach Terminal-operation har vi udskrevet hvert 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 } }
Produktion:
flatMap-eksempel- FlatMap Stream-operation bruges til mere kompleks Stream-drift.
Her har vi udført flatMap-operation på “List of List of type String”. Vi har angivet inputnavne som liste, og derefter har vi gemt dem i en Stream, hvor vi har filtreret de navne ud, der starter med 'S'.
Endelig har vi ved hjælp af forEach Terminal-operationen udskrevet hvert 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 */ } }
Produktion:
Q # 30) Hvad er MetaSpace i Java 8?
Svar: I Java 8 blev en ny funktion introduceret til at gemme klasser. Området, hvor alle klasser, der er gemt i Java 8, hedder MetaSpace. MetaSpace har erstattet PermGen.
Indtil Java 7 blev PermGen brugt af Java Virtual Machine til at gemme klasserne. Da MetaSpace er dynamisk, da det kan vokse dynamisk, og det ikke har nogen størrelsesbegrænsning, erstattede Java 8 PermGen med MetaSpace.
Q # 31) Hvad er forskellen mellem Java 8 Intern og Ekstern Iteration?
Svar: Forskellen mellem intern og ekstern gentagelse er angivet nedenfor.
Intern gentagelse | Ekstern gentagelse |
---|---|
Det blev introduceret i Java 8 (JDK-8). | Det blev introduceret og praktiseret i den tidligere version af Java (JDK-7, JDK-6 og så videre). |
Det gentager internt på de samlede objekter, såsom Samling. | Det gentager eksternt på de samlede objekter. |
Det understøtter den funktionelle programmeringsstil. | Det understøtter OOPS programmeringsstil. |
Intern Iterator er passiv. | Ekstern Iterator er aktiv. |
Det er mindre fejlagtigt og kræver mindre kodning. | Det kræver lidt mere kodning, og det er mere udsat for fejl. |
Q # 32) Hvad er JJS?
Svar: JJS er et kommandolinjeværktøj, der bruges til at udføre JavaScript-kode på konsollen. I Java 8 er JJS den nye eksekverbare, der er en JavaScript-motor.
Spørgsmål nr. 33) Hvad er ChronoUnits i Java 8?
Svar: ChronoUnits er det enum, der introduceres for at erstatte de heltalsværdier, der bruges i den gamle API til at repræsentere måned, dag osv.
Q # 34) Forklar StringJoiner-klassen i Java 8? Hvordan kan vi opnå sammenføjning af flere strenge ved hjælp af StringJoiner Class?
Svar: I Java 8 blev en ny klasse introduceret i pakken java.util, der var kendt som StringJoiner. Gennem denne klasse kan vi slutte os til flere strenge adskilt af afgrænsere sammen med at give præfiks og suffiks til dem.
I nedenstående program lærer vi os om at deltage i flere strenge ved hjælp af StringJoiner Class. Her har vi ',' som afgrænser mellem to forskellige strenge. Derefter har vi sammenføjet fem forskellige strenge ved at tilføje dem ved hjælp af metoden add (). Endelig udskrev String Joiner.
I det næste spørgsmål nr. 35 lærer du om at tilføje præfiks og suffiks til strengen.
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); } }
Produktion:
Q # 35) Skriv et Java 8-program for at tilføje præfikset og suffikset til strengen?
Svar: I dette program har vi “,” som afgrænser mellem to forskellige strenge. Vi har også givet '(' og ')' parenteser som præfiks og suffiks. Derefter forbindes fem forskellige strenge ved at tilføje dem ved hjælp af metoden add (). Endelig udskrev 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); } }
Produktion:
Q # 36) Skriv et Java 8-program for at gentage en stream ved hjælp af metoden forEach?
Svar: I dette program gentager vi en stream, der starter fra 'nummer = 2', efterfulgt af tællingsvariablen forøget med '1' efter hver iteration.
Derefter filtrerer vi antallet, hvis rest ikke er nul, divideret med tallet 2. Vi har også sat grænsen som? 5, hvilket kun betyder 5 gange, at det gentages. Endelig udskriver vi hvert element ved hjælp af 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); } }
Produktion:
Q # 37) Skriv et Java 8-program for at sortere et array og derefter konvertere det sorterede array til Stream?
Svar: I dette program har vi brugt parallel sortering til at sortere en række heltal. Konverterede derefter det sorterede array til Stream og ved hjælp af forEach har vi udskrevet hvert element i en Stream.
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 */ } }
Produktion:
regex_match c ++
Q # 38) Skriv et Java 8-program for at finde antallet af strenge på en liste, hvis længde er større end 5?
Svar: I dette program tilføjes fire strenge på listen ved hjælp af add () -metoden, og derefter har vi ved hjælp af Stream- og Lambda-udtryk talt strengene, der har en længde større end 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'); } }
Produktion:
Q # 39) Skriv et Java 8-program for at sammenkæde to Streams?
Svar: I dette program har vi oprettet to Streams fra de to allerede oprettede lister og derefter sammenkædet dem ved hjælp af en concat () -metode, hvor to lister sendes som et argument. Endelig udskrev elementerne i den sammenkædede strøm.
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 } }
Produktion:
Q # 40) Skriv et Java 8-program for at fjerne duplikatelementerne fra listen?
Svar: I dette program har vi gemt elementerne i en matrix og konverteret dem til en liste. Derefter har vi brugt stream og samlet det til 'Set' ved hjælp af 'Collectors.toSet ()' -metoden.
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)); } }
Produktion:
Konklusion
I denne artikel har vi forstået de nye funktioner, der blev introduceret i Java 8. Vi har dækket alle større Java 8-interviewspørgsmål og deres svar i detaljer.
Når du har læst denne vejledning, skal du have fået viden om de nye API'er til manipulation af dato og tid, nye funktioner i Java 8, nye Streaming API'er sammen med de egnede programmeringseksempler i henhold til konceptet. Disse nye koncepter eller funktionerne er en del af interviewprocessen, når du er klar til de mere udfordrende Java-positioner.
Alt det bedste!!
=> Tjek ALLE Java-tutorials her.
Anbefalet læsning
- Interviewspørgsmål og svar
- ETL Testing Interview Spørgsmål og svar
- Nogle vanskelige manuelle testspørgsmål og svar
- Top 40 C Programmeringsinterview Spørgsmål og svar
- Top 40 populære J2EE interviewspørgsmål og svar, du bør læse
- Spock Interview-spørgsmål med svar (mest populære)
- 25 bedste spørgsmål om svar på Agile Testing Interview og svar
- Top 32 Bedste Datastage Interview Spørgsmål og svar