top 40 java 8 interview questions answers
I den här handledningen har vi gett de viktigaste Java 8-intervjufrågorna och deras svar med kodexempel och förklaringar:
Alla viktiga frågor som listas i denna handledning är specifika för Java 8. Java har utvecklats mycket (över tiden) med introduktionen av nya versioner. För varje version har vi nya funktioner associerade med Java. Alla dessa viktiga funktioner kommer att behandlas i denna handledning.
Det här är mycket vanliga frågor som du kommer att få i alla Java-intervjuer som kräver avancerade färdigheter. Dessa begrepp är måste-ha om du ska visas för standard Java-certifieringsprov som Oracle Certified Associate (OCA).
=> Ta en titt på Java-nybörjarguiden här.
Den här artikeln passar mycket bra för både Java-utvecklare och Java-testare / automatiseringstestare eller alla som letar efter högre löner inom samma område eftersom det kräver avancerade Java-färdigheter.
Vanliga frågor om Java 8 intervju
F # 1) Lista ner de nya funktionerna som introducerades i Java 8?
Svar: Nya funktioner som introduceras i Java 8 listas nedan:
- Lambda-uttryck
- Metodreferenser
- Valfri klass
- Funktionellt gränssnitt
- Standardmetoder
- Noshörning, JavaScript-motor
- Stream API
- Date API
F # 2) Vad är funktionella gränssnitt?
Svar: Funktionellt gränssnitt är ett gränssnitt som bara har en abstrakt metod. Implementeringen av dessa gränssnitt tillhandahålls med ett Lambda-uttryck vilket innebär att för att använda Lambda-uttrycket måste du skapa ett nytt funktionellt gränssnitt eller så kan du använda det fördefinierade funktionellt gränssnitt för Java 8 .
Anmärkningen som används för att skapa ett nytt funktionellt gränssnitt är “ @FunctionalInterface ”.
F # 3) Vad är en valfri klass?
Svar: Valfri klass är en speciell omslagsklass introducerad i Java 8 som används för att undvika NullPointerExceptions. Den här sista klassen finns under paketet java.util. NullPointerExceptions inträffar när vi inte utför Null-kontrollerna.
F # 4) Vilka är standardmetoderna?
Svar: Standardmetoder är metoderna för gränssnittet som har en kropp. Dessa metoder använder, som namnet antyder, standardnyckelorden. Användningen av dessa standardmetoder är ”bakåtkompatibilitet”, vilket innebär att om JDK ändrar något gränssnitt (utan standardmetod) kommer klasserna som implementerar detta gränssnitt att brytas.
Å andra sidan, om du lägger till standardmetoden i ett gränssnitt kommer du att kunna tillhandahålla standardimplementeringen. Detta påverkar inte implementeringsklasserna.
Syntax:
public interface questions{ default void print() { System.out.println('www.softwaretestinghelp.com'); } }
F # 5) Vilka är de viktigaste egenskaperna hos Lambda-funktionen?
Svar: De viktigaste egenskaperna hos Lambda-funktionen är följande:
- En metod som definieras som Lambda-uttryck kan skickas som en parameter till en annan metod.
- En metod kan existera fristående utan att tillhöra en klass.
- Det finns inget behov av att deklarera parametertypen eftersom kompilatorn kan hämta typen från parametervärdet.
- Vi kan använda parenteser när vi använder flera parametrar men det finns inget behov av att ha parentes när vi använder en enda parameter.
- Om uttrycket har ett enda uttalande behöver du inte inkludera lockiga hängslen.
F # 6) Vad var fel med det gamla datumet och tiden?
Svar: Nedan listas nackdelarna med det gamla datumet och tiden:
- Java.util.Date kan ändras och är inte trådsäker medan det nya Java 8 Date and Time API är trådsäkert.
- Java 8 Date and Time API uppfyller ISO-standarderna medan det gamla datumet och tiden var dåligt utformade.
- Det har introducerat flera API-klasser för ett datum som LocalDate, LocalTime, LocalDateTime, etc.
- När vi pratar om prestanda mellan de två, fungerar Java 8 snabbare än den gamla regimen för datum och tid.
F # 7) Vad är skillnaden mellan Collection API och Stream API?
Svar: Skillnaden mellan Stream API och Collection API kan förstås från nedanstående tabell:
Stream API | Samlings-API |
---|---|
Den introducerades i Java 8 Standard Edition-versionen. | Den introducerades i Java version 1.2 |
Det går inte att använda Iterator och Spliterators. | Med hjälp av forEach kan vi använda Iterator och Spliterators för att itera elementen och utföra en åtgärd på varje objekt eller elementet. |
Ett oändligt antal funktioner kan lagras. | Ett räknbart antal element kan lagras. |
Konsumtion och itterering av element från Stream-objektet kan bara göras en gång. | Konsumtion och iterering av element från Collection-objektet kan göras flera gånger. |
Den används för att beräkna data. | Den används för att lagra data. |
F # 8) Hur kan du skapa ett funktionellt gränssnitt?
Svar: Även om Java kan identifiera ett funktionellt gränssnitt kan du definiera ett med anteckningen
@FunctionalInterface
När du väl har definierat det funktionella gränssnittet kan du bara ha en abstrakt metod. Eftersom du bara har en abstrakt metod kan du skriva flera statiska metoder och standardmetoder.
Nedan är programmeringsexemplet för FunctionalInterface skrivet för multiplicering av två nummer.
@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:
F # 9) Vad är ett SAM-gränssnitt?
Svar: Java 8 har introducerat konceptet FunctionalInterface som bara kan ha en abstrakt metod. Eftersom dessa gränssnitt bara anger en abstrakt metod kallas de ibland som SAM-gränssnitt. SAM står för ”Single Abstract Method”.
F # 10) Vad är metodreferens?
topp 10 platser att titta på anime
Svar: I Java 8 introducerades en ny funktion som kallas Method Reference. Detta används för att hänvisa till metoden för funktionellt gränssnitt. Den kan användas för att ersätta Lambda Expression medan man hänvisar till en metod.
Till exempel: Om Lambda-uttrycket ser ut
num -> System.out.println(num)
Då skulle motsvarande metodreferens vara,
System.out::println
där “::” är en operatör som skiljer klassnamn från metodnamnet.
F # 11) Förklara följande syntax
String:: Valueof Expression
Svar: Det är en statisk metodreferens till Värdet av metod för Sträng klass. System.out :: println är en statisk metodreferens till println-metoden för objektet i systemklassen.
Den returnerar motsvarande strängrepresentation av argumentet som skickas. Argumentet kan vara Character, Integer, Boolean och så vidare.
F # 12) Vad är ett predikat? Ange skillnaden mellan ett predikat och en funktion?
Svar: Predikat är ett fördefinierat funktionellt gränssnitt. Det är under java.util.function.Predicate-paketet. Det accepterar bara ett enda argument som är i formen som visas nedan,
Predikat
Predikat | Fungera |
---|---|
Den har returtypen som Boolean. | Den har returtypen som Object. |
Det är skrivet i form av Predikat som accepterar ett enda argument. | Det är skrivet i form av Fungera som också accepterar ett enda argument. |
Det är ett funktionellt gränssnitt som används för att utvärdera Lambda-uttryck. Detta kan användas som ett mål för en metodreferens. | Det är också ett funktionellt gränssnitt som används för att utvärdera Lambda-uttryck. I funktion är T för ingångstyp och R för resultattyp. Detta kan också användas som ett mål för en Lambda-expression och metodreferens. |
F # 13) Är det något fel med följande kod? Kommer det att kompilera eller ge något specifikt fel?
@FunctionalInterface public interface Test { public C apply(A a, B b); default void printString() { System.out.println('softwaretestinghelp'); } }
Svar: Ja. Koden kommer att kompileras eftersom den följer den funktionella gränssnittspecifikationen för att endast definiera en enda abstrakt metod. Den andra metoden, printString (), är en standardmetod som inte räknas som en abstrakt metod.
F # 14) Vad är ett Stream API? Varför kräver vi Stream API?
Svar: Stream API är en ny funktion som läggs till i Java 8. Det är en specialklass som används för att bearbeta objekt från en källa som Collection.
Vi kräver Stream API eftersom,
- Det stöder samlade operationer vilket gör behandlingen enkel.
- Den stöder programmering av funktionell stil.
- Det gör snabbare bearbetning. Därför är det lämpligt för bättre prestanda.
- Det möjliggör parallella operationer.
F # 15) Vad är skillnaden mellan gräns och hoppa över?
Svar: Metoden limit () används för att returnera strömmen av den angivna storleken. Till exempel, Om du har nämnt gräns (5) skulle antalet utgångselement vara 5.
Låt oss överväga följande exempel. Utgången här returnerar sex element när gränsen är satt till ”sex”.
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:
Medan skip () -metoden används för att hoppa över elementet.
Låt oss överväga följande exempel. I utgången är elementen 6, 7, 8 vilket betyder att den har hoppat över elementen till det sjätte indexet (från 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:
F # 16) Hur kommer du att få aktuellt datum och tid med Java 8 Date and Time API?
Svar: Nedanstående program är skrivet med hjälp av det nya API som introducerades i Java 8. Vi har använt LocalDate, LocalTime och LocalDateTime API för att få aktuellt datum och tid.
I den första och andra utskriften har vi hämtat aktuellt datum och tid från systemklockan med tidszonen inställd som standard. I det tredje utskriftsuttalandet har vi använt LocalDateTime API som skriver ut både datum och tid.
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:
F # 17) Vad är syftet med limit () -metoden i Java 8?
Svar: Metoden Stream.limit () anger elementens gräns. Storleken som du anger i gränsen (X), den returnerar strömmen av storleken på 'X'. Det är en metod för java.util.stream.Stream
Syntax:
limit(X)
Där ”X” är elementets storlek.
F # 18) Skriv ett program för att skriva ut 5 slumpmässiga nummer med hjälp av forEach i Java 8?
Svar: Programmet nedan genererar 5 slumpmässiga nummer med hjälp av forEach i Java 8. Du kan ställa in gränsvariabeln till valfritt nummer beroende på hur många slumptal du vill generera.
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:
F # 19) Skriv ett program för att skriva ut 5 slumpmässiga nummer i sorterad ordning med forEach i Java 8?
Svar: Programmet nedan genererar 5 slumpmässiga nummer med hjälp av forEach i Java 8. Du kan ställa in gränsvariabeln till valfritt nummer beroende på hur många slumptal du vill generera. Det enda du behöver lägga till här är metoden 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 */ } }
Produktion:
F # 20) Vad är skillnaden mellan mellanliggande och terminaloperationer i Stream?
Svar: Alla Stream-operationer är antingen Terminal eller Intermediate. Intermediate Operations är de operationer som returnerar Stream så att andra operationer kan utföras på Stream. Mellanåtgärder bearbetar inte Stream på samtalsplatsen, därför kallas de lat.
Dessa typer av operationer (Intermediate Operations) bearbetar data när det utförs en terminaloperation. Exempel för mellanliggande operationer är karta och filter.
Terminaloperationer initierar strömbehandling. Under det här samtalet genomgår Stream alla mellanliggande operationer. Exempel av terminaldrift är summan, samla in och för varje.
I det här programmet försöker vi först utföra mellanliggande operation utan terminaloperation. Som du kan se kommer det första kodblocket inte att köras eftersom det inte finns någon terminaloperation som stöder.
Det andra blocket lyckades exekveras på grund av terminaloperationssumman ().
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:
F # 21) Skriv ett Java 8-program för att få summan av alla siffror som finns i en lista?
Svar: I det här programmet har vi använt ArrayList för att lagra elementen. Sedan har vi med hjälp av summen () -metoden beräknat summan av alla element som finns i ArrayList. Sedan konverteras den till Stream och läggs till varje element med hjälp av metoder mapToInt () och 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 } }
Produktion:
F # 22) Skriv ett Java 8-program för att kvadratera listan med siffror och filtrera sedan ut siffrorna större än 100 och hitta sedan genomsnittet av de återstående siffrorna?
Svar: I det här programmet har vi tagit en serie med heltal och lagrat dem i en lista. Sedan har vi med hjälp av mapToInt () kvadrat elementen och filtrerat bort siffrorna större än 100. Slutligen beräknas medelvärdet av det återstående antalet (större än 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:
F # 23) Vad är skillnaden mellan Streams findFirst () och findAny ()?
Svar: Som namnet antyder används metoden findFirst () för att hitta det första elementet från strömmen medan findAny () -metoden används för att hitta något element från strömmen.
FindFirst () är predestinarianism i naturen medan findAny () är icke-deterministisk. Vid programmering betyder deterministiskt att utgången baseras på systemets ingång eller initialtillstånd.
F # 24) Vad är skillnaden mellan Iterator och Spliterator?
Svar: Nedan visas skillnaderna mellan Iterator och Spliterator.
Iterator | Splitter |
---|---|
Den introducerades i Java version 1.2 | Det introducerades i Java SE 8 |
Den används för Collection API. | Den används för Stream API. |
Några av iteratmetoderna är nästa () och hasNext () som används för att iterera element. | Spliterator-metoden är tryAdvance (). |
Vi måste anropa iterator () -metoden för samlingsobjekt. | Vi måste anropa spliterator () -metoden på Stream Object. |
Itererar bara i sekventiell ordning. | Itererar i parallell och sekventiell ordning. |
F # 25) Vad är konsumentens funktionella gränssnitt?
Svar: Consumer Functional Interface är också ett enda argumentgränssnitt (som Predicate och Function). Det kommer under java.util.function.Consumer. Detta returnerar inget värde.
I programmet nedan har vi använt acceptmetoden för att hämta värdet på strängobjektet.
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:
F # 26) Vad är leverantörens funktionella gränssnitt?
Svar: Leverantörens funktionella gränssnitt accepterar inte inmatningsparametrar. Den kommer under java.util.function.Supplier. Detta returnerar värdet med hjälp av get-metoden.
I programmet nedan har vi använt get-metoden för att hämta värdet på String-objektet.
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:
F # 27) Vad är Nashorn i Java 8?
Svar: Nashorn i Java 8 är en Java-baserad motor för att köra och utvärdera JavaScript-kod.
hur man får en falsk e-postadress
F # 28) Skriv ett Java 8-program för att hitta det lägsta och högsta antalet i en Stream?
Svar: I det här programmet har vi använt min () och max () metoder för att få det högsta och lägsta antalet av en Stream. Först och främst har vi initierat en ström som har heltal och med hjälp av metoden Comparator.comparing () har vi jämfört elementen i strömmen.
När den här metoden är inkorporerad med max () och min () ger den dig de högsta och lägsta siffrorna. Det fungerar också när man jämför strängarna.
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:
F # 29) Vad är skillnaden mellan Map och flatMap Stream-operation?
Svar: Map Stream-operation ger ett utgångsvärde per ingångsvärde medan flatMap Stream-operation ger noll eller mer utdata per ingångsvärde.
Kartexempel- Map Stream-operation används vanligtvis för enkel användning på Stream som den som nämns nedan.
I det här programmet har vi ändrat tecknen i “Namn” till versaler med hjälp av kartoperation efter att ha lagrat dem i en ström och med hjälp av för varje terminaloperation har vi skrivit ut varje 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 Exempel- flatMap Stream-operation används för mer komplex Stream-operation.
Här har vi utfört flatMap-operation på “Lista över List of type String”. Vi har gett inmatningsnamn som lista och sedan har vi lagrat dem i en Stream där vi har filtrerat bort de namn som börjar med 'S'.
Slutligen, med hjälp av för varje terminaloperation, har vi skrivit ut varje 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:
F # 30) Vad är MetaSpace i Java 8?
Svar: I Java 8 introducerades en ny funktion för lagringsklasser. Området där alla klasser som lagras i Java 8 heter MetaSpace. MetaSpace har ersatt PermGen.
Till Java 7 användes PermGen av Java Virtual Machine för att lagra klasserna. Eftersom MetaSpace är dynamiskt eftersom det kan växa dynamiskt och det inte har någon storleksbegränsning ersatte Java 8 PermGen med MetaSpace.
F # 31) Vad är skillnaden mellan Java 8 Intern och Extern Iteration?
Svar: Skillnaden mellan Intern och Extern Iteration listas nedan.
Intern iteration | Extern iteration |
---|---|
Den introducerades i Java 8 (JDK-8). | Det introducerades och övades i den tidigare versionen av Java (JDK-7, JDK-6 och så vidare). |
Det itererar internt på de aggregerade objekten som Collection. | Det itererar externt på de aggregerade objekten. |
Den stöder funktionell programmeringsstil. | Den stöder OOPS programmeringsstil. |
Intern Iterator är passiv. | Extern Iterator är aktiv. |
Det är mindre felaktigt och kräver mindre kodning. | Det kräver lite mer kodning och det är mer felbenäget. |
F # 32) Vad är JJS?
Svar: JJS är ett kommandoradsverktyg som används för att köra JavaScript-kod på konsolen. I Java 8 är JJS den nya körbara filen som är en JavaScript-motor.
F # 33) Vad är ChronoUnits i Java 8?
Svar: ChronoUnits är det num som introduceras för att ersätta heltalsvärdena som används i det gamla API för att representera månad, dag etc.
F # 34) Förklara StringJoiner-klass i Java 8? Hur kan vi uppnå sammanfogning av flera strängar med hjälp av StringJoiner Class?
Svar: I Java 8 introducerades en ny klass i paketet java.util som kallades StringJoiner. Genom denna klass kan vi gå med i flera strängar åtskilda av avgränsare tillsammans med prefix och suffix till dem.
I programmet nedan lär vi oss att gå med i flera strängar med hjälp av StringJoiner Class. Här har vi ',' som avgränsare mellan två olika strängar. Sedan har vi gått med i fem olika strängar genom att lägga till dem med hjälp av add () -metoden. Slutligen, tryckte String Joiner.
I nästa fråga # 35 lär du dig att lägga till prefix och suffix till strängen.
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:
c ++ slumpmässigt tal mellan 0 och 10
F # 35) Skriv ett Java 8-program för att lägga till prefix och suffix till strängen?
Svar: I det här programmet har vi ',' som avgränsare mellan två olika strängar. Vi har också gett parenteser '(' och ') som prefix och suffix. Sedan förenas fem olika strängar genom att lägga till dem med hjälp av metoden add (). Slutligen, tryckte 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:
F # 36) Skriv ett Java 8-program för att upprepa en ström med metoden forEach?
Svar: I det här programmet itererar vi en ström som börjar från 'nummer = 2', följt av räkningsvariabeln ökad med '1' efter varje iteration.
Sedan filtrerar vi numret vars återstående inte är noll när det delas med siffran 2. Vi har också satt gränsen som? 5 vilket betyder att det bara 5 gånger kommer att itera. Slutligen skriver vi ut varje element med hjälp av 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:
F # 37) Skriv ett Java 8-program för att sortera en matris och sedan konvertera den sorterade matrisen till Stream?
Svar: I det här programmet har vi använt parallell sortering för att sortera en rad heltal. Konverterade sedan den sorterade matrisen till Stream och med hjälp av forEach har vi skrivit ut varje 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:
F # 38) Skriv ett Java 8-program för att hitta antalet strängar i en lista vars längd är större än 5?
Svar: I det här programmet läggs fyra strängar till i listan med hjälp av add () -metoden, och sedan har vi med hjälp av Stream- och Lambda-uttryck räknat strängarna som har en längd som är större än 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:
F # 39) Skriv ett Java 8-program för att sammanfoga två strömmar?
Svar: I det här programmet har vi skapat två strömmar från de två redan skapade listorna och sedan sammanfogat dem med en concat () -metod där två listor skickas som ett argument. Slutligen, skriv ut elementen i den sammanfogade strömmen.
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:
F # 40) Skriv ett Java 8-program för att ta bort dubbletterna från listan?
Svar: I det här programmet har vi lagrat elementen i en array och konverterat dem till en lista. Därefter har vi använt stream och samlat det till 'Set' med hjälp av '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:
Slutsats
I den här artikeln har vi förstått de nya funktionerna som introducerades i Java 8. Vi har täckt alla större Java 8-intervjufrågor och deras svar i detalj.
När du har läst denna handledning måste du ha fått kunskap om de nya API: erna för manipulation av datum-tid, nya funktioner i Java 8, nya Streaming-API: er tillsammans med lämpliga programmeringsexempel enligt konceptet. Dessa nya koncept eller funktionerna är en del av intervjuprocessen när du är ute efter de mer utmanande Java-positionerna.
Med vänliga hälsningar!!
=> Kontrollera ALLA Java-handledning här.
Rekommenderad läsning
- Intervjufrågor och svar
- ETL Testing Intervju Frågor och svar
- Några knepiga manuella testfrågor och svar
- Topp 40 C-programmeringsintervjuer och svar
- Topp 40 populära J2EE intervjufrågor och svar du bör läsa
- Spock intervjufrågor med svar (mest populära)
- 25 bästa intervjuer och svar på Agile Testing
- Topp 32 bästa datastationsintervjuer och svar