top 40 java 8 interview questions answers
V tomto výučbe sme poskytli najdôležitejšie otázky týkajúce sa rozhovorov Java 8 a ich odpovede pomocou príkladov a vysvetlení kódu:
Všetky dôležité otázky, ktoré sú uvedené v tomto výučbe, sa týkajú Java 8. Zavádzaním nových verzií sa Java (v priebehu času) veľmi vyvinula. S každou verziou máme nové funkcie spojené s Java. Všetky tieto dôležité funkcie budú popísané v tomto výučbe.
Toto sú veľmi časté otázky, ktoré vám budú položené pri všetkých pohovoroch v jazyku Java, ktoré si vyžadujú pokročilé zručnosti. Tieto koncepty musíte mať, ak sa chystáte zúčastniť akýchkoľvek štandardných certifikačných skúšok Java, ako je Oracle Certified Associate (OCA).
=> Tu si pozrite príručku Java Beginners Guide.
Tento článok bude veľmi vhodný pre vývojárov Java, ako aj pre testerov Java / Automation Testers alebo pre kohokoľvek, kto hľadá vyššie platy v tej istej oblasti, pretože vyžaduje pokročilé znalosti jazyka Java.
Najčastejšie otázky na rozhovor s Java 8
Otázka č. 1) Uveďte zoznam nových funkcií zavedených v prostredí Java 8?
Odpoveď: Nové funkcie, ktoré sú zavedené v prostredí Java 8, sú uvedené nižšie:
- Lambda výrazy
- Odkazy na metódu
- Voliteľná trieda
- Funkčné rozhranie
- Predvolené metódy
- Rhinoceros, motor JavaScript
- Stream API
- Date API
Otázka 2) Čo sú to funkčné rozhrania?
Odpoveď: Funkčné rozhranie je rozhranie, ktoré má iba jednu abstraktnú metódu. Implementácia týchto rozhraní sa poskytuje pomocou výrazu Lambda, čo znamená, že ak chcete použiť výraz Lambda, musíte vytvoriť nové funkčné rozhranie alebo môžete použiť vopred definované funkčné rozhranie Java 8 .
Anotácia použitá na vytvorenie nového funkčného rozhrania je „ @Funkčné rozhranie “.
Otázka č. 3) Čo je voliteľná trieda?
Odpoveď: Voliteľná trieda je špeciálna trieda obalov zavedená v prostredí Java 8, ktorá sa používa na zabránenie výskytu NullPointerExceptions. Táto posledná trieda sa nachádza v balíku java.util. NullPointerExceptions nastane, keď sa nám nepodarí vykonať kontrolu Null.
Otázka č. 4) Aké sú predvolené metódy?
Odpoveď: Predvolené metódy sú metódy rozhrania, ktoré má telo. Tieto metódy, ako už názov napovedá, používajú predvolené kľúčové slová. Používanie týchto predvolených metód je „Spätná kompatibilita“, čo znamená, že ak JDK upraví ľubovoľné rozhranie (bez predvolenej metódy), triedy, ktoré implementujú toto rozhranie, sa rozbijú.
Na druhej strane, ak do rozhrania pridáte predvolenú metódu, budete môcť poskytnúť predvolenú implementáciu. Toto neovplyvní implementačné triedy.
Syntax:
public interface questions{ default void print() { System.out.println('www.softwaretestinghelp.com'); } }
Otázka č. 5) Aké sú hlavné charakteristiky funkcie lambda?
Odpoveď: Hlavné charakteristiky funkcie Lambda sú tieto:
- Metódu, ktorá je definovaná ako výraz Lambda, je možné odovzdať ako parameter inej metóde.
- Metóda môže existovať samostatne bez toho, aby patrila do triedy.
- Nie je potrebné deklarovať typ parametra, pretože kompilátor môže načítať typ z hodnoty parametra.
- Pri použití viacerých parametrov môžeme použiť zátvorky, ale pri použití jedného parametra nie je potrebné mať zátvorky.
- Ak má telo výrazu jediný výrok, nie je potrebné zahrnúť zložené zátvorky.
Otázka č. 6) Čo sa stalo so starým dátumom a časom?
Odpoveď: Nižšie sú uvedené nevýhody starého dátumu a času:
- Java.util.Date je premenlivý a nie je bezpečný voči vláknam, zatiaľ čo nové rozhranie Java 8 Date and Time API je bezpečné voči vláknam.
- Rozhranie Java 8 Date and Time API spĺňa normy ISO, zatiaľ čo starý dátum a čas boli zle navrhnuté.
- Zaviedlo niekoľko tried API pre dátum, ako je LocalDate, LocalTime, LocalDateTime atď.
- Keď hovoríme o výkone medzi nimi, Java 8 pracuje rýchlejšie ako starý režim dátumu a času.
Otázka č. 7) Aký je rozdiel medzi rozhraním Collection API a Stream API?
Odpoveď: Rozdiel medzi Stream API a Collection API je možné pochopiť z nasledujúcej tabuľky:
Stream API | Collection API |
---|---|
Bol predstavený vo verzii Java 8 Standard Edition. | Bol predstavený v Jave verzie 1.2 |
Iterátor a rozdeľovače sa nepoužívajú. | S pomocou forEach môžeme pomocou Iterátora a Spliteratora iterovať prvky a vykonať akciu s každou položkou alebo elementom. |
Môže byť uložených nekonečné množstvo funkcií. | Je možné uložiť spočítateľné množstvo prvkov. |
Spotrebu a iteráciu prvkov z objektu Stream je možné vykonať iba raz. | Spotrebu a iteráciu prvkov z objektu Collection je možné vykonať viackrát. |
Používa sa na výpočet údajov. | Slúži na ukladanie údajov. |
Otázka č. 8) Ako môžete vytvoriť funkčné rozhranie?
Odpoveď: Aj keď Java dokáže identifikovať funkčné rozhranie, môžete ho definovať pomocou anotácie
@Funkčné rozhranie
Po definovaní funkčného rozhrania môžete mať iba jednu abstraktnú metódu. Pretože máte iba jednu abstraktnú metódu, môžete napísať viac statických metód a predvolené metódy.
Ďalej je uvedený príklad programovania rozhrania FunctionalInterface napísaného na násobenie dvoch čí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ýkon:
Otázka č. 9) Čo je rozhranie SAM?
Odpoveď: Java 8 predstavila koncept FunctionalInterface, ktorý môže mať iba jednu abstraktnú metódu. Pretože tieto rozhrania určujú iba jednu abstraktnú metódu, niekedy sa nazývajú ako rozhrania SAM. SAM znamená „Single Abstract Method“.
Otázka č. 10) Čo je referenčná metóda?
ms sql server rozhovor otázky a odpovede pre skúsených
Odpoveď: V prostredí Java 8 bola predstavená nová funkcia známa ako Method Reference. Toto sa používa na označenie metódy funkčného rozhrania. Môže sa použiť na nahradenie výrazu Lambda s odvolaním sa na metódu.
Napríklad: Ak vyzerá výraz Lambda
num -> System.out.println(num)
Potom by zodpovedajúci odkaz na metódu bol,
System.out::println
kde „::“ je operátor, ktorý odlišuje názov triedy od názvu metódy.
Otázka č. 11) Vysvetlite nasledujúcu syntax
String:: Valueof Expression
Odpoveď: Je to statický odkaz na metódu Hodnota metóda String trieda. System.out :: println je statický odkaz na metódu println metódy mimo objekt triedy System.
Vráti zodpovedajúcu reťazcovú reprezentáciu odovzdaného argumentu. Argument môže byť Character, Integer, Boolean a tak ďalej.
Otázka č. 12) Čo je predikát? Uveďte rozdiel medzi predikátom a funkciou?
Odpoveď: Predicate je preddefinované funkčné rozhranie. Nachádza sa pod balíkom java.util.function.Predicate. Prijíma iba jeden argument vo forme, ako je uvedené nižšie,
Predikát
Predikát | Funkcia |
---|---|
Má návratový typ ako Boolean. | Má návratový typ ako Object. |
Je napísaný vo forme Predikát ktorý prijíma jediný argument. | Je napísaný vo forme Funkcia ktorá zároveň prijíma jediný argument. |
Jedná sa o funkčné rozhranie, ktoré sa používa na hodnotenie výrazov Lambda. To môže byť použité ako cieľ pre referenciu metódy. | Je to tiež funkčné rozhranie, ktoré sa používa na hodnotenie výrazov Lambda. Vo funkcii T je typ vstupu a R typ výsledku. To môže byť tiež použité ako cieľ pre Lambda Expression and Method Reference. |
Otázka č. 13) Nie je niečo v poriadku s nasledujúcim kódom? Zostaví alebo dá konkrétnu chybu?
@FunctionalInterface public interface Test { public C apply(A a, B b); default void printString() { System.out.println('softwaretestinghelp'); } }
Odpoveď: Áno. Tento kód sa skompiluje, pretože dodržiava špecifikáciu funkčného rozhrania a definuje iba jednu abstraktnú metódu. Druhá metóda, printString (), je predvolená metóda, ktorá sa nepočíta ako abstraktná metóda.
Otázka č. 14) Čo je Stream API? Prečo požadujeme Stream API?
Odpoveď: Stream API je nová funkcia pridaná do Javy 8. Je to špeciálna trieda, ktorá sa používa na spracovanie objektov zo zdroja, napríklad z kolekcie.
Vyžadujeme Stream API, pretože
- Podporuje agregačné operácie, čo zjednodušuje spracovanie.
- Podporuje programovanie vo funkčnom štýle.
- Robí to rýchlejšie spracovanie. Preto je vhodný na lepší výkon.
- Umožňuje paralelné operácie.
Otázka č. 15) Aký je rozdiel medzi limitom a preskočením?
Odpoveď: Metóda limit () sa používa na vrátenie Prúdu určenej veľkosti. Napríklad, Ak ste spomenuli limit (5), potom by bol počet výstupných prvkov 5.
Uvažujme o nasledujúcom príklade. Výstup tu vracia šesť prvkov, pretože limit je nastavený na „šesť“.
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ýkon:
Zatiaľ čo na preskočenie prvku sa používa metóda skip ().
Uvažujme o nasledujúcom príklade. Na výstupe sú prvky 6, 7, 8, čo znamená, že prvky preskočil až do šiesteho indexu (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)); } }
Výkon:
Otázka č. 16) Ako získate aktuálny dátum a čas pomocou rozhrania Java 8 Date and Time API?
Odpoveď: Program uvedený nižšie je napísaný pomocou nového rozhrania API zavedeného v prostredí Java 8. Na získanie aktuálneho dátumu a času sme použili rozhranie LocalDate, LocalTime a LocalDateTime API.
V prvom a druhom tlačovom výpise sme načítali aktuálny dátum a čas zo systémových hodín s predvolenou časovou zónou. V treťom tlačovom vyhlásení sme použili rozhranie LocalDateTime API, ktoré vytlačí dátum aj č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ýkon:
Otázka č. 17) Aký je účel metódy limit () v prostredí Java 8?
Odpoveď: Metóda Stream.limit () určuje limit prvkov. Veľkosť, ktorú zadáte v limite (X), vráti prúd veľkosti „X“. Je to metóda java.util.stream.Stream
Syntax:
limit(X)
Kde „X“ je veľkosť prvku.
Otázka 18) Napíš program na tlač 5 náhodných čísel pomocou forEach v jazyku Java 8?
Odpoveď: Nižšie uvedený program generuje 5 náhodných čísel pomocou forEach v Jave 8. Limitnú premennú môžete nastaviť na ľubovoľné číslo podľa toho, koľko náhodných čísel chcete vygenerovať.
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ýkon:
Otázka č. 19) Napíš program na tlač 5 náhodných čísel v zoradenom poradí pomocou forEach v Jave 8?
Odpoveď: Nižšie uvedený program generuje 5 náhodných čísel pomocou forEach v Jave 8. Limitnú premennú môžete nastaviť na ľubovoľné číslo podľa toho, koľko náhodných čísel chcete vygenerovať. Jedinou vecou, ktorú sem musíte pridať, je triedená () metóda.
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ýkon:
Otázka č. 20) Aký je rozdiel medzi sprostredkujúcimi a terminálovými operáciami v streame?
Odpoveď: Všetky operácie streamu sú terminálne alebo sprostredkovateľské. Sprostredkujúce operácie sú operácie, ktoré vracajú prúd, aby bolo možné v tomto prúde vykonávať niektoré ďalšie operácie. Sprostredkovateľské operácie nespracovávajú stream na mieste hovoru, preto sa nazývajú leniví.
Tieto typy operácií (sprostredkujúce operácie) spracúvajú údaje, keď sa vykonáva operácia na termináli. Príklady medziľahlej prevádzky sú mapa a filter.
Prevádzka terminálu inicializuje spracovanie toku. Počas tohto hovoru prúd prechádza všetkými sprostredkujúcimi operáciami. Príklady prevádzky terminálu sú súčet, zhromažďovanie a každý.
V tomto programe sa najskôr pokúšame vykonať strednú operáciu bez operácie terminálu. Ako vidíte, prvý blok kódu sa nespustí, pretože nie je podporovaná žiadna operácia terminálu.
Druhý blok bol úspešne vykonaný z dôvodu súčtu operácie 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ýkon:
Otázka č. 21) Napísať program Java 8, aby ste získali súčet všetkých čísel v zozname?
Odpoveď: V tomto programe sme použili ArrayList na ukladanie prvkov. Potom sme pomocou metódy sum () vypočítali súčet všetkých prvkov nachádzajúcich sa v ArrayList. Potom sa prevedie na Stream a pomocou metód mapToInt () a sum () sa pridá každý prvok.
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ýkon:
Otázka č. 22) Napíš program Java 8, aby zarovnal zoznam čísel, potom odfiltroval čísla väčšie ako 100 a potom zistil priemer zostávajúcich čísel?
najlepší softvér na skrytie adresy IP
Odpoveď: V tomto programe sme vybrali pole celých čísel a uložili ich do zoznamu. Potom sme pomocou mapToInt () vytvorili prvky na druhú a odfiltrovali sme čísla väčšie ako 100. Nakoniec sa vypočíta priemer zostávajúceho počtu (väčší ako 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ýkon:
Otázka č. 23) Aký je rozdiel medzi tokom findFirst () a findAny ()?
Odpoveď: Ako už názov napovedá, metóda findFirst () sa používa na vyhľadanie prvého prvku z toku, zatiaľ čo metóda findAny () sa používa na vyhľadanie ľubovoľného prvku z prúdu.
FindFirst () je svojou povahou predestinarianizmus, zatiaľ čo findAny () je nedeterministický. V programovaní Deterministický znamená, že výstup je založený na vstupe alebo počiatočnom stave systému.
Otázka č. 24) Aký je rozdiel medzi Iteratorom a Spliteratorom?
Odpoveď: Ďalej uvádzame rozdiely medzi Iterátorom a Spliterátorom.
Iterátor | Rozdeľovač |
---|---|
Bol predstavený v Jave verzie 1.2 | Bol predstavený v prostredí Java SE 8 |
Používa sa pre Collection API. | Používa sa pre Stream API. |
Niektoré z iteračných metód sú next () a hasNext (), ktoré sa používajú na iteráciu prvkov. | Metóda rozdeľovača je tryAdvance (). |
Musíme zavolať metódu iterator () na Collection Object. | Musíme zavolať metódu spliterator () na Stream Object. |
Iteruje iba v postupnom poradí. | Iteruje v paralelnom a postupnom poradí. |
Otázka č. 25) Čo je funkčné rozhranie pre spotrebiteľa?
Odpoveď: Spotrebiteľské funkčné rozhranie je tiež rozhranie s jedným argumentom (napríklad Predikát a Funkcia). Spadá pod java.util.function.Consumer. To nevráti žiadnu hodnotu.
V nasledujúcom programe sme použili metódu akceptovania na získanie 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ýkon:
Otázka č. 26) Čo je funkčné rozhranie dodávateľa?
Odpoveď: Funkčné rozhranie dodávateľa neakceptuje vstupné parametre. Spadá pod java.util.function.Supplier. Týmto sa vráti hodnota pomocou metódy get.
V nasledujúcom programe sme použili metódu get na získanie 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ýkon:
Otázka č. 27) Čo je Nashorn v Jave 8?
Odpoveď: Nashorn in Java 8 je motor založený na prostredí Java na vykonávanie a vyhodnocovanie kódu JavaScript.
Otázka č. 28) Napísať program Java 8 a nájsť najnižší a najvyšší počet streamu?
Odpoveď: V tomto programe sme na získanie najvyššieho a najnižšieho počtu streamu použili metódy min () a max (). Najskôr sme inicializovali Stream, ktorý má celé čísla a pomocou metódy Comparator.comparing () sme porovnali prvky Stream.
Ak je táto metóda začlenená do znakov max () a min (), poskytne vám najvyššie a najnižšie čísla. Bude to fungovať aj pri porovnaní reťazcov.
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ýkon:
Otázka č. 29) Aký je rozdiel medzi prevádzkou mapy a flatMap streamu?
Odpoveď: Operácia Map Stream poskytuje jednu výstupnú hodnotu na vstupnú hodnotu, zatiaľ čo operácia flatMap Stream poskytuje nulovú alebo vyššiu výstupnú hodnotu na vstupnú hodnotu.
Príklad mapy- Prevádzka služby Map Stream sa všeobecne používa na jednoduché ovládanie v streame, ako je ten, ktorý je uvedený nižšie.
V tomto programe sme zmenili znaky „Mená“ na veľké písmená pomocou operácie mapy po ich uložení do prúdu a pomocou operácie forEach Terminal sme každý prvok vytlačili.
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ýkon:
flatMap Príklad- Prevádzka flatMap Stream sa používa na zložitejšiu prevádzku Stream.
Tu sme vykonali operáciu flatMap na „zozname zoznamov typov reťazcov“. Dali sme vstupné mená ako zoznam a potom sme ich uložili do streamu, v ktorom sme odfiltrovali mená, ktoré začínajú na „S“.
Nakoniec sme pomocou operácie forEach Terminal vytlačili každý prvok.
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ýkon:
Otázka č. 30) Čo je to MetaSpace v prostredí Java 8?
Odpoveď: V prostredí Java 8 bola zavedená nová funkcia ukladania tried. Oblasť, kde sa všetky triedy uložené v prostredí Java 8 nazývajú MetaSpace. MetaSpace nahradil PermGen.
Až do jazyka Java 7 používal server Virtual Machine Java VirtualG na ukladanie tried. Pretože MetaSpace je dynamický, pretože môže dynamicky rásť a nemá žiadne obmedzenia veľkosti, Java 8 nahradila PermGen MetaSpace.
Otázka č. 31) Aký je rozdiel medzi internou a externou iteráciou Java 8?
najlepší bezplatný blokovanie automaticky otváraných okien pre chróm
Odpoveď: Rozdiel medzi internou a externou iteráciou je uvedený nižšie.
Interná iterácia | Vonkajšia iterácia |
---|---|
Bol predstavený v prostredí Java 8 (JDK-8). | Bol predstavený a praktizovaný v predchádzajúcej verzii Java (JDK-7, JDK-6 atď.). |
Vnútorne iteruje na agregovaných objektoch, ako napríklad Collection. | Iterizuje externe na agregovaných objektoch. |
Podporuje štýl funkčného programovania. | Podporuje štýl programovania OOPS. |
Interný iterátor je pasívny. | Externý iterátor je aktívny. |
Je menej chybný a vyžaduje menej kódovania. | Vyžaduje trochu viac kódovania a je náchylnejší na chyby. |
Otázka č. 32) Čo je to JJS?
Odpoveď: JJS je nástroj príkazového riadku, ktorý sa používa na vykonávanie kódu JavaScript na konzole. V prostredí Java 8 je JJS nový spustiteľný súbor, ktorým je motor JavaScriptu.
Otázka č. 33) Čo je to ChronoUnits v prostredí Java 8?
Odpoveď: ChronoUnits je výčet, ktorý sa zavádza na nahradenie celočíselných hodnôt, ktoré sa používajú v starom rozhraní API na reprezentáciu mesiaca, dňa atď.
Otázka č. 34) Vysvetlite triedu StringJoiner v prostredí Java 8? Ako môžeme dosiahnuť spojenie viacerých reťazcov pomocou triedy StringJoiner?
Odpoveď: V prostredí Java 8 bola nová trieda predstavená v balíku java.util, ktorý bol známy ako StringJoiner. Prostredníctvom tejto triedy môžeme spojiť viac reťazcov oddelených oddeľovačmi spolu s poskytnutím predpony a prípony.
V nižšie uvedenom programe sa dozvieme o spájaní viacerých reťazcov pomocou triedy StringJoiner. Tu máme „,“ ako oddeľovač medzi dvoma rôznymi reťazcami. Potom sme spojili päť rôznych reťazcov tak, že sme ich pridali pomocou metódy add (). Nakoniec vytlačte String Joiner.
V nasledujúcej otázke č. 35 sa dozviete o pridávaní predpony a prípony k reťazcu.
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ýkon:
Otázka č. 35) Napíš program Java 8, ktorý do reťazca pridá predponu a príponu?
Odpoveď: V tomto programe máme „,“ ako oddeľovač medzi dvoma rôznymi reťazcami. Tiež sme zadali zátvorky „(“ a „)“ ako predponu a príponu. Potom sa päť rôznych reťazcov spojí ich pridaním pomocou metódy add (). Nakoniec vytlač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ýkon:
Otázka č. 36) Napísať program Java 8 na iteráciu streamu pomocou metódy forEach?
Odpoveď: V tomto programe iterujeme Stream začínajúci od „number = 2“, za ktorým nasleduje premenná count zvýšená o „1“ po každej iterácii.
Potom filtrujeme číslo, ktorého zvyšok nie je nula, keď ho vydelíme číslom 2. Tiež sme nastavili limit ako? 5, čo znamená iba 5-krát opakovanie. Na záver tlačíme každý prvok pomocou 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ýkon:
Otázka č. 37) Napísať program Java 8 na zoradenie poľa a potom prevedenie zoradeného poľa na Stream?
Odpoveď: V tomto programe sme použili paralelné triedenie na triedenie radu celých čísel. Potom sme skonvertovali zoradené pole na Stream a pomocou forEach sme vytlačili každý prvok 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ýkon:
Otázka č. 38) Napíšte program Java 8 a vyhľadajte počet reťazcov v zozname, ktorého dĺžka je väčšia ako 5?
Odpoveď: V tomto programe sú do zoznamu pridané štyri reťazce pomocou metódy add () a pomocou výrazu Stream a Lambda sme spočítali reťazce, ktoré majú dĺžku väčšiu ako 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ýkon:
Otázka č. 39) Napísať program Java 8 na spojenie dvoch streamov?
Odpoveď: V tomto programe sme vytvorili dva prúdy z dvoch už vytvorených zoznamov a potom sme ich zreťazili pomocou metódy concat (), v ktorej sa dva zoznamy odovzdávajú ako argument. Nakoniec sa vytlačili prvky zreťazeného prúdu.
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ýkon:
Otázka č. 40) Napísať program Java 8 na odstránenie duplicitných prvkov zo zoznamu?
Odpoveď: V tomto programe sme prvky uložili do poľa a previedli ich do zoznamu. Potom sme použili prúd a pomocou metódy „Collectors.toSet ()“ sme ho zhromaždili na „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ýkon:
Záver
V tomto článku sme pochopili nové funkcie zavedené v prostredí Java 8. Podrobne sme prebrali všetky hlavné otázky týkajúce sa rozhovorov s Java 8 a ich odpovede.
Po prečítaní tohto tutoriálu ste museli získať vedomosti o nových rozhraniach API pre manipuláciu s časom a dátumom, nových funkciách Java 8, nových streamovacích rozhraniach API spolu s príkladmi programovania vhodnými pre tento koncept. Tieto nové koncepty alebo funkcie sú súčasťou procesu pohovoru, keď ste pripravení na náročnejšie pozície Java.
Všetko najlepšie!!
=> Skontrolujte VŠETKY návody Java tu.
Odporúčané čítanie
- Dotazy a odpovede na pohovor
- ETL Testovacie otázky a odpovede na pohovor
- Niektoré zložité otázky a odpovede na ručné testovanie
- Top 40 C Programming Interview Otázky a odpovede
- Top 40 populárnych otázok a odpovedí na rozhovory s J2EE, ktoré by ste si mali prečítať
- Spock Interview Otázky s odpoveďami (najobľúbenejšie)
- 25 najlepších otázok a odpovedí na agilné testovacie pohovory
- Top 32 najlepších otázok a odpovedí na rozhovor o údajoch