top 40 java 8 interview questions answers
V tomto výukovém programu jsme poskytli nejdůležitější otázky týkající se rozhovorů s Java 8 a jejich odpovědi s příklady kódu a vysvětlením:
Všechny důležité otázky, které jsou uvedeny v tomto výukovém programu, jsou specifické pro prostředí Java 8. Se zavedením nových verzí se Java (v průběhu času) hodně vyvinula. S každou verzí máme nové funkce spojené s Javou. Všechny tyto důležité funkce budou popsány v tomto výukovém programu.
Jedná se o velmi časté otázky, které vám budou položeny při jakýchkoli rozhovorech v prostředí Java, které vyžadují pokročilé dovednosti. Tyto koncepty musíte mít, pokud se chystáte objevit u jakýchkoli standardních certifikačních zkoušek Java, jako je Oracle Certified Associate (OCA).
=> Prohlédněte si příručku Java Beginners Guide zde.
Tento článek bude velmi vhodný jak pro vývojáře Java, tak pro testery Java / Automation Testers nebo pro kohokoli, kdo hledá vyšší plat ve stejné oblasti, protože vyžaduje pokročilé znalosti jazyka Java.
Nejčastější dotazy týkající se rozhovorů s Java 8
Otázka č. 1) Seznam nových funkcí zavedených v prostředí Java 8?
Odpovědět: Níže jsou uvedeny nové funkce, které jsou zavedeny v prostředí Java 8:
- Lambda výrazy
- Odkazy na metody
- Volitelná třída
- Funkční rozhraní
- Výchozí metody
- Rhinoceros, JavaScript engine
- Stream API
- Datum API
Otázka č. 2) Co jsou funkční rozhraní?
Odpovědět: Funkční rozhraní je rozhraní, které má pouze jednu abstraktní metodu. Implementace těchto rozhraní se poskytuje pomocí výrazu Lambda, což znamená, že pro použití výrazu Lambda je třeba vytvořit nové funkční rozhraní nebo můžete použít předdefinované funkční rozhraní Java 8 .
Anotace použitá k vytvoření nového funkčního rozhraní je „ @Funkčnírozhraní “.
Otázka č. 3) Co je volitelná třída?
Odpovědět: Volitelná třída je speciální obalová třída zavedená v prostředí Java 8, která se používá k zabránění NullPointerExceptions. Tato závěrečná třída je součástí balíčku java.util. NullPointerExceptions nastane, když se nám nepodaří provést kontroly Null.
Otázka č. 4) Jaké jsou výchozí metody?
Odpovědět: Výchozí metody jsou metody rozhraní, které má tělo. Tyto metody, jak název napovídá, používají výchozí klíčová slova. Použití těchto výchozích metod je „Zpětná kompatibilita“, což znamená, že pokud JDK upraví libovolné rozhraní (bez výchozí metody), třídy, které implementují toto rozhraní, se rozbijí.
Na druhou stranu, pokud přidáte výchozí metodu do rozhraní, budete moci poskytnout výchozí implementaci. To neovlivní implementační třídy.
Syntax:
public interface questions{ default void print() { System.out.println('www.softwaretestinghelp.com'); } }
Otázka č. 5) Jaké jsou hlavní charakteristiky funkce Lambda?
Odpovědět: Hlavní charakteristiky funkce Lambda jsou následující:
- Metodu, která je definována jako výraz Lambda, lze předat jako parametr jiné metodě.
- Metoda může existovat samostatně, aniž by patřila do třídy.
- Není třeba deklarovat typ parametru, protože kompilátor může načíst typ z hodnoty parametru.
- Můžeme použít závorky při použití více parametrů, ale není nutné mít závorky, když používáme jeden parametr.
- Pokud má tělo výrazu jediný příkaz, není nutné zahrnout složené závorky.
Otázka č. 6) Co se dělo se starým datem a časem?
Odpovědět: Níže jsou uvedeny nevýhody starého data a času:
- Java.util.Date je proměnlivý a není bezpečný pro vlákna, zatímco nové rozhraní API pro data a čas Java 8 je bezpečné pro vlákna.
- Rozhraní Java 8 Date and Time API splňuje normy ISO, zatímco staré datum a čas byly špatně navrženy.
- Zavedlo několik tříd API pro datum, jako je LocalDate, LocalTime, LocalDateTime atd.
- Když mluvíme o výkonu mezi nimi, Java 8 pracuje rychleji než starý režim data a času.
Otázka č. 7) Jaký je rozdíl mezi Collection API a Stream API?
Odpovědět: Rozdíl mezi Stream API a Collection API lze pochopit z následující tabulky:
Stream API | Collection API |
---|---|
Byl představen ve verzi Java 8 Standard Edition. | To bylo představeno v Javě verze 1.2 |
Iterátor a Spliterátory nejsou k dispozici. | S pomocí forEach můžeme použít Iterátor a Spliterátory k iteraci prvků a provedení akce na každé položce nebo prvku. |
Lze uložit nekonečné množství funkcí. | Lze uložit početné množství prvků. |
Spotřebu a iteraci prvků z objektu Stream lze provést pouze jednou. | Spotřebu a iteraci prvků z objektu Collection lze provést několikrát. |
Používá se k výpočtu dat. | Používá se k ukládání dat. |
Otázka č. 8) Jak můžete vytvořit funkční rozhraní?
Odpovědět: Ačkoli Java dokáže identifikovat funkční rozhraní, můžete je definovat pomocí anotace
@Funkčnírozhraní
Jakmile definujete funkční rozhraní, můžete mít pouze jednu abstraktní metodu. Protože máte pouze jednu abstraktní metodu, můžete napsat více statických metod a výchozí metody.
Níže je příklad programování FunctionalInterface napsaný pro násobení dvou čísel.
@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)); } }
Výstup:
Otázka č. 9) Co je rozhraní SAM?
Odpovědět: Java 8 představila koncept FunctionalInterface, který může mít pouze jednu abstraktní metodu. Protože tato rozhraní určují pouze jednu abstraktní metodu, někdy se nazývají jako rozhraní SAM. SAM znamená „Single Abstract Method“.
Otázka č. 10) Co je referenční metoda?
jak otevřít soubory apk v telefonu Android
Odpovědět: V prostředí Java 8 byla představena nová funkce známá jako Method Reference. To se používá k označení metody funkčního rozhraní. Může být použit k nahrazení výrazu Lambda při odkazování na metodu.
Například: Pokud vypadá lambda výraz
num -> System.out.println(num)
Příslušný odkaz na metodu by pak byl,
System.out::println
kde „::“ je operátor, který odlišuje název třídy od názvu metody.
Otázka č. 11) Vysvětlete následující syntaxi
String:: Valueof Expression
Odpovědět: Jedná se o statický odkaz na metodu Hodnota metoda Tětiva třída. System.out :: println je statický odkaz na metodu println metody out objektu třídy System.
Vrátí odpovídající řetězcovou reprezentaci předaného argumentu. Argument může být Character, Integer, Boolean atd.
Otázka č. 12) Co je predikát? Uveďte rozdíl mezi predikátem a funkcí?
Odpovědět: Predicate je předdefinované funkční rozhraní. Je pod balíčkem java.util.function.Predicate. Přijímá pouze jeden argument ve formě, jak je uvedeno níže,
Predikát
Predikát | Funkce |
---|---|
Má návratový typ jako Boolean. | Má návratový typ jako Object. |
Je psán ve formě Predikát který přijímá jediný argument. | Je psán ve formě Funkce který také přijímá jediný argument. |
Jedná se o funkční rozhraní, které se používá k vyhodnocení výrazů Lambda. To lze použít jako cíl pro odkaz na metodu. | Je to také funkční rozhraní, které se používá k vyhodnocení výrazů Lambda. Ve funkci T je pro typ vstupu a R je pro typ výsledku. To lze také použít jako cíl pro Lambda výraz a referenční metodu. |
Otázka č. 13) Je s následujícím kódem něco špatně? Zkompiluje nebo dá nějakou konkrétní chybu?
@FunctionalInterface public interface Test { public C apply(A a, B b); default void printString() { System.out.println('softwaretestinghelp'); } }
Odpovědět: Ano. Kód se zkompiluje, protože následuje specifikaci funkčního rozhraní definování pouze jedné abstraktní metody. Druhá metoda, printString (), je výchozí metoda, která se nepočítá jako abstraktní metoda.
Otázka č. 14) Co je Stream API? Proč požadujeme Stream API?
Odpovědět: Stream API je nová funkce přidaná do prostředí Java 8. Jedná se o speciální třídu, která se používá pro zpracování objektů ze zdroje, jako je Collection.
Vyžadujeme Stream API, protože
- Podporuje agregační operace, což usnadňuje zpracování.
- Podporuje programování ve funkčním stylu.
- Dělá rychlejší zpracování. Proto je vhodný pro lepší výkon.
- Umožňuje paralelní operace.
Otázka č. 15) Jaký je rozdíl mezi limitem a přeskočením?
Odpovědět: Metoda limit () se používá k vrácení Stream zadané velikosti. Například, Pokud jste uvedli limit (5), pak by počet výstupních prvků byl 5.
Uvažujme následující příklad. Výstup zde vrací šest prvků, protože limit je nastaven 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)); } }
Výstup:
Zatímco k přeskočení prvku se používá metoda skip ().
Uvažujme následující příklad. Na výstupu jsou prvky 6, 7, 8, což znamená, že prvky přeskočilo až do 6. indexu (počínaje 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)); } }
Výstup:
Otázka č. 16) Jak získáte aktuální datum a čas pomocí rozhraní Java 8 Date and Time API?
Odpovědět: Níže uvedený program je napsán pomocí nového rozhraní API zavedeného v prostředí Java 8. Pro získání aktuálního data a času jsme použili rozhraní LocalDate, LocalTime a LocalDateTime API.
V prvním a druhém tiskovém příkazu jsme načetli aktuální datum a čas ze systémových hodin s časovou zónou nastavenou jako výchozí. Ve třetím tiskovém prohlášení jsme použili LocalDateTime API, které vytiskne datum i čas.
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 } }
Výstup:
Otázka č. 17) Jaký je účel metody limit () v Javě 8?
Odpovědět: Metoda Stream.limit () určuje limit prvků. Velikost, kterou zadáte v limitu (X), vrátí Stream o velikosti „X“. Jedná se o metodu java.util.stream.Stream
Syntax:
limit(X)
Kde „X“ je velikost prvku.
Otázka č. 18) Napište program pro tisk 5 náhodných čísel pomocí forEach v Javě 8?
Odpovědět: Níže uvedený program generuje 5 náhodných čísel pomocí forEach v Javě 8. Limitní proměnnou můžete nastavit na libovolné číslo podle toho, kolik náhodných čísel chcete vygenerovat.
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 */ } }
Výstup:
Otázka č. 19) Napište program pro tisk 5 náhodných čísel v seřazeném pořadí pomocí forEach v Javě 8?
Odpovědět: Níže uvedený program generuje 5 náhodných čísel pomocí forEach v Javě 8. Limitní proměnnou můžete nastavit na libovolné číslo podle toho, kolik náhodných čísel chcete vygenerovat. Jedinou věcí, kterou sem musíte přidat, je metoda seřazeno ().
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 */ } }
Výstup:
Otázka č. 20) Jaký je rozdíl mezi zprostředkujícím a terminálovým provozem v proudu?
Odpovědět: Všechny operace Stream jsou buď Terminál, nebo Středně pokročilý. Zprostředkující operace jsou operace, které vracejí Stream, takže v tomto Stream lze provádět některé další operace. Zprostředkující operace nezpracovávají Stream na místě volání, proto se jim říká líný.
Tyto typy operací (Zprostředkující operace) zpracovávají data, když je provedena operace Terminál. Příklady mezilehlého provozu jsou mapa a filtr.
Terminálové operace zahájí zpracování proudu. Během tohoto volání Stream prochází všemi zprostředkujícími operacemi. Příklady provozu terminálu jsou součet, sběr a forEach.
V tomto programu se nejprve pokoušíme provést zprostředkující operaci bez operace terminálu. Jak vidíte, první blok kódu se nespustí, protože není podporována žádná operace terminálu.
Druhý blok byl úspěšně proveden kvůli součtu operací terminálu.
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(); } }
Výstup:
Q # 21) Napište program Java 8, abyste získali součet všech čísel v seznamu?
Odpovědět: V tomto programu jsme použili ArrayList k uložení prvků. Poté jsme pomocí metody sum () vypočítali součet všech prvků přítomných v ArrayList. Pak je převeden na Stream a přidán každý prvek pomocí mapToInt () a sum () metod.
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 } }
Výstup:
Otázka č. 22) Napište program Java 8, který umocní seznam čísel a poté odfiltruje čísla větší než 100 a pak najde průměr zbývajících čísel?
Odpovědět: V tomto programu jsme vzali pole celých čísel a uložili je do seznamu. Pak jsme s pomocí mapToInt (), jsme na druhou prvky a odfiltroval čísla větší než 100. Nakonec se vypočítá průměr ze zbývajícího počtu (větší než 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()); } }
Výstup:
Otázka č. 23) Jaký je rozdíl mezi streamem findFirst () a findAny ()?
Odpovědět: Jak název napovídá, metoda findFirst () se používá k vyhledání prvního prvku ze streamu, zatímco metoda findAny () se používá k vyhledání libovolného prvku ze streamu.
FindFirst () je v přírodě predestinarianism, zatímco findAny () je nedeterministický. V programování Deterministický znamená, že výstup je založen na vstupu nebo počátečním stavu systému.
Otázka č. 24) Jaký je rozdíl mezi Iteratorem a Spliteratorem?
Odpovědět: Níže jsou uvedeny rozdíly mezi Iteratorem a Spliteratorem.
Iterátor | Rozdělovač |
---|---|
To bylo představeno v Javě verze 1.2 | Byl představen v prostředí Java SE 8 |
Používá se pro Collection API. | Používá se pro Stream API. |
Některé z iteračních metod jsou next () a hasNext (), které se používají k iteraci prvků. | Metoda rozdělovače je tryAdvance (). |
Musíme zavolat metodu iterator () na Collection Object. | Musíme zavolat metodu spliterator () na Stream Object. |
Iteruje pouze v postupném pořadí. | Iteruje v paralelním a postupném pořadí. |
Otázka č. 25) Co je funkční rozhraní pro spotřebitele?
Odpovědět: Consumer Functional Interface je také rozhraní s jedním argumentem (jako Predicate a Function). Spadá pod java.util.function.Consumer. To nevrací žádnou hodnotu.
příklad abstraktního rozhraní v Javě
V níže uvedeném programu jsme využili metodu přijmout k načtení hodnoty objektu 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 */ } }
Výstup:
Otázka č. 26) Co je funkční rozhraní dodavatele?
Odpovědět: Funkční rozhraní dodavatele nepřijímá vstupní parametry. Spadá pod java.util.function.Supplier. Tím se vrátí hodnota pomocí metody get.
V níže uvedeném programu jsme použili metodu get k načtení hodnoty objektu 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. */ } }
Výstup:
Otázka č. 27) Co je Nashorn v Javě 8?
Odpovědět: Nashorn v prostředí Java 8 je stroj založený na prostředí Java pro provádění a vyhodnocování kódu JavaScript.
Otázka č. 28) Napsat program Java 8 a najít nejnižší a nejvyšší počet Streamů?
Odpovědět: V tomto programu jsme použili metody min () a max () k získání nejvyššího a nejnižšího počtu Stream. Nejprve jsme inicializovali Stream, který má celá čísla, a pomocí metody Comparator.comparing () jsme porovnali prvky Stream.
Když je tato metoda začleněna s max () a min (), dá vám nejvyšší a nejnižší čísla. Funguje to také při porovnávání řetězců.
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); } }
Výstup:
Q # 29) Jaký je rozdíl mezi provozem mapy a flatMap Stream?
Odpovědět: Operace Map Stream poskytuje jednu výstupní hodnotu na vstupní hodnotu, zatímco operace flatMap Stream poskytuje nulovou nebo více výstupní hodnotu na vstupní hodnotu.
Příklad mapy- Provoz Map Stream se obecně používá pro jednoduchou operaci na Stream, jako je ten, který je uveden níže.
V tomto programu jsme změnili znaky „Names“ na velká písmena pomocí mapové operace po jejich uložení do Stream a pomocí operace forEach Terminal jsme vytiskli každý prvek.
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 } }
Výstup:
flatMap Příklad- operace flatMap Stream se používá pro složitější provoz Stream.
Zde jsme provedli operaci flatMap na „Seznamu seznamu typových řetězců“. Zadali jsme názvy vstupů jako seznam a poté jsme je uložili do proudu, ve kterém jsme odfiltrovali jména, která začínají písmenem „S“.
Nakonec jsme pomocí operace forEach Terminal vytiskli každý prvek.
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 */ } }
Výstup:
Q # 30) Co je MetaSpace v Javě 8?
Odpovědět: V prostředí Java 8 byla zavedena nová funkce pro ukládání tříd. Oblast, kde se všechny třídy uložené v Javě 8 nazývají MetaSpace. MetaSpace nahradil PermGen.
Až do prostředí Java 7 byl nástrojem Virtual Machine Java PermGen používán k ukládání tříd. Protože MetaSpace je dynamický, protože může dynamicky růst a nemá žádné omezení velikosti, Java 8 nahradil PermGen MetaSpace.
Otázka č. 31) Jaký je rozdíl mezi interní a externí iterací Java 8?
Odpovědět: Rozdíl mezi interní a externí iterací je uveden níže.
Interní iterace | Externí iterace |
---|---|
To bylo představeno v Javě 8 (JDK-8). | Byl představen a procvičován v předchozí verzi Java (JDK-7, JDK-6 atd.). |
Interně iteruje na agregovaných objektech, jako je Collection. | Iteruje externě na agregovaných objektech. |
Podporuje styl funkčního programování. | Podporuje styl programování OOPS. |
Interní iterátor je pasivní. | Externí iterátor je aktivní. |
Je méně chybný a vyžaduje méně kódování. | Vyžaduje trochu více kódování a je náchylnější k chybám. |
Q # 32) Co je JJS?
Odpovědět: JJS je nástroj příkazového řádku, který se používá ke spouštění kódu JavaScript na konzole. V Javě 8 je JJS nový spustitelný soubor, kterým je motor JavaScriptu.
Otázka č. 33) Co je ChronoUnits v Javě 8?
Odpovědět: ChronoUnits je výčet, který je zaveden k nahrazení celočíselných hodnot, které se používají ve starém API k reprezentaci měsíce, dne atd.
jaký je rozdíl mezi linuxem a unixem
Otázka č. 34) Vysvětlit třídu StringJoiner v Javě 8? Jak můžeme dosáhnout spojení více řetězců pomocí třídy StringJoiner?
Odpovědět: V prostředí Java 8 byla v balíčku java.util zavedena nová třída známá jako StringJoiner. Prostřednictvím této třídy můžeme spojit více řetězců oddělených oddělovači a poskytnout jim předponu a příponu.
V níže uvedeném programu se dozvíme o připojení více řetězců pomocí třídy StringJoiner. Zde máme „,“ jako oddělovač mezi dvěma různými řetězci. Pak jsme spojili pět různých řetězců jejich přidáním pomocí metody add (). Nakonec vytiskněte String Joiner.
V další otázce č. 35 se dozvíte o přidání předpony a přípony k řetězci.
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); } }
Výstup:
Otázka č. 35) Napište program Java 8 a přidáte předponu a příponu do řetězce?
Odpovědět: V tomto programu máme „,“ jako oddělovač mezi dvěma různými řetězci. Jako předponu a příponu jsme také dali závorky „(“ a „)“. Poté se spojí pět různých řetězců jejich přidáním pomocí metody add (). Nakonec vytiskněte 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); } }
Výstup:
Q # 36) Napsat program Java 8 pro iteraci Stream pomocí metody forEach?
Odpovědět: V tomto programu provádíme iteraci Stream začínajícího od „number = 2“, po kterém následuje proměnná count zvýšená o „1“ po každé iteraci.
Potom filtrujeme číslo, jehož zbytek není nula, když se vydělí číslem 2. Také jsme nastavili limit jako? 5, což znamená pouze 5krát bude iterovat. Nakonec tiskneme každý prvek pomocí 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); } }
Výstup:
Otázka č. 37) Napište program Java 8, který uspořádá pole a poté převede seřazené pole na Stream?
Odpovědět: V tomto programu jsme použili paralelní řazení k seřazení řady celých čísel. Poté jsme převedli seřazené pole do Stream a pomocí forEach jsme vytiskli každý prvek 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 */ } }
Výstup:
Otázka č. 38) Napište program Java 8 a vyhledejte počet řetězců v seznamu, jehož délka je větší než 5?
Odpovědět: V tomto programu jsou do seznamu přidány čtyři řetězce pomocí metody add () a poté pomocí výrazu Stream a Lambda jsme spočítali řetězce, které mají délku větší než 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'); } }
Výstup:
Otázka č. 39) Napsat program Java 8 pro zřetězení dvou proudů?
Odpovědět: V tomto programu jsme vytvořili dva streamy ze dvou již vytvořených seznamů a poté je zřetězili pomocí metody concat (), ve které jsou dva seznamy předány jako argument. Nakonec vytiskli prvky zřetězeného proudu.
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 } }
Výstup:
Q # 40) Napsat program Java 8 pro odstranění duplicitních prvků ze seznamu?
Odpovědět: V tomto programu jsme uložili prvky do pole a převedli je do seznamu. Poté jsme použili proud a pomocí metody „Collectors.toSet ()“ jej shromáždili do „Set“.
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)); } }
Výstup:
Závěr
V tomto článku jsme porozuměli novým funkcím zavedeným v prostředí Java 8. Podrobně jsme probrali všechny hlavní otázky týkající se rozhovorů v prostředí Java 8 a jejich odpovědi.
Po přečtení tohoto tutoriálu musíte získat znalosti o nových API pro manipulaci s časem, nových funkcích Java 8, nových Streaming API spolu s apt programovacími příklady podle konceptu. Tyto nové koncepty nebo funkce jsou součástí procesu pohovoru, pokud jste připraveni na náročnější pozice Java.
Vše nejlepší!!
=> Zkontrolujte VŠECHNY výukové programy Java zde.
Doporučené čtení
- Dotazy a odpovědi na pohovor
- ETL Testing Interview Otázky a odpovědi
- Několik složitých otázek a odpovědí na ruční testování
- Top 40 C Programming Interview Otázky a odpovědi
- Top 40 populárních dotazů a odpovědí na rozhovor s J2EE, které byste si měli přečíst
- Spock Interview Otázky s odpověďmi (nejoblíbenější)
- 25 nejlepších agilních testovacích otázek a odpovědí na rozhovor
- Top 32 nejlepších datastage dotazů a odpovědí