top 40 java 8 interview questions answers
W tym samouczku przedstawiliśmy najważniejsze pytania do wywiadu dotyczące Java 8 i ich odpowiedzi wraz z przykładami kodu i objaśnieniami:
Wszystkie ważne pytania wymienione w tym samouczku dotyczą języka Java 8. Java bardzo się rozwinęła (z biegiem czasu) wraz z wprowadzeniem nowych wersji. Z każdą wersją mamy nowe funkcje związane z Javą. Wszystkie te ważne funkcje zostaną omówione w tym samouczku.
Są to bardzo częste pytania, które będą zadawane podczas wszelkich wywiadów dotyczących języka Java, które wymagają zaawansowanych umiejętności. Te pojęcia są niezbędne, jeśli zamierzasz stawić się na standardowych egzaminach certyfikacyjnych Java, takich jak Oracle Certified Associate (OCA).
=> Zapoznaj się z podręcznikiem Java dla początkujących tutaj.
Ten artykuł będzie bardzo odpowiedni zarówno dla programistów Java, jak i testerów języka Java / testerów automatyzacji lub każdego, kto szuka wyższych zarobków w tej samej dziedzinie, ponieważ wymaga zaawansowanych umiejętności Java.
Najczęściej zadawane pytania do wywiadów na temat Java 8
P # 1) Wymień nowe funkcje wprowadzone w Javie 8?
Odpowiedź: Poniżej wymieniono nowe funkcje wprowadzone w Javie 8:
- Wyrażenia lambda
- Odniesienia do metod
- Klasa opcjonalna
- Interfejs funkcjonalny
- Metody domyślne
- Rhinoceros, silnik JavaScript
- Stream API
- Date API
Pytanie 2) Co to są interfejsy funkcjonalne?
Odpowiedź: Interfejs funkcjonalny to interfejs, który ma tylko jedną abstrakcyjną metodę. Implementacja tych interfejsów odbywa się za pomocą wyrażenia lambda, co oznacza, że aby skorzystać z wyrażenia lambda, należy stworzyć nowy interfejs funkcjonalny lub skorzystać z predefiniowanego funkcjonalny interfejs Java 8 .
Adnotacja używana do tworzenia nowego interfejsu funkcjonalnego to „ @FunctionalInterface ”.
P # 3) Co to jest klasa opcjonalna?
Odpowiedź: Klasa opcjonalna to specjalna klasa opakowująca wprowadzona w Javie 8, która służy do unikania wyjątków NullPointerExceptions. Ta ostatnia klasa znajduje się w pakiecie java.util. NullPointerExceptions występuje, gdy nie możemy wykonać kontroli Null.
P # 4) Jakie są domyślne metody?
Odpowiedź: Metody domyślne to metody interfejsu, który ma treść. Metody te, jak sama nazwa wskazuje, używają domyślnych słów kluczowych. Użycie tych metod domyślnych to „wsteczna kompatybilność”, co oznacza, że jeśli JDK modyfikuje dowolny interfejs (bez metody domyślnej), to klasy implementujące ten interfejs ulegną awarii.
Z drugiej strony, jeśli dodasz domyślną metodę w interfejsie, będziesz mógł zapewnić domyślną implementację. Nie wpłynie to na klasy implementujące.
Składnia:
public interface questions{ default void print() { System.out.println('www.softwaretestinghelp.com'); } }
Pytanie nr 5) Jakie są główne cechy funkcji Lambda?
Odpowiedź: Główne cechy funkcji Lambda są następujące:
- Metodę zdefiniowaną jako Lambda Expression można przekazać jako parametr do innej metody.
- Metoda może istnieć samodzielnie, bez przynależności do klasy.
- Nie ma potrzeby deklarowania typu parametru, ponieważ kompilator może pobrać typ z wartości parametru.
- Możemy używać nawiasów, gdy używamy wielu parametrów, ale nie ma potrzeby stosowania nawiasów, gdy używamy pojedynczego parametru.
- Jeśli treść wyrażenia zawiera jedną instrukcję, nie ma potrzeby umieszczania nawiasów klamrowych.
Pytanie nr 6) Co było nie tak ze starą datą i godziną?
Odpowiedź: Poniżej wymieniono wady starej daty i godziny:
- Java.util.Date jest zmienna i nie jest bezpieczna wątkowo, podczas gdy nowy interfejs API daty i godziny Java 8 jest bezpieczny dla wątków.
- Java 8 Date and Time API spełnia standardy ISO, podczas gdy stara data i godzina były źle zaprojektowane.
- Wprowadził kilka klas API dla dat, takich jak LocalDate, LocalTime, LocalDateTime itp.
- Mówiąc o wydajności między nimi, Java 8 działa szybciej niż stary reżim daty i czasu.
Pytanie 7) Jaka jest różnica między interfejsem Collection API a Stream API?
Odpowiedź: Różnicę między Stream API a Collection API można zrozumieć z poniższej tabeli:
Stream API | Collection API |
---|---|
Został wprowadzony w wersji Java 8 Standard Edition. | Został wprowadzony w Javie w wersji 1.2 |
Nie ma pożytku z Iteratora i Spliteratorów. | Z pomocą forEach możemy użyć Iteratora i Spliteratorów do iteracji elementów i wykonania akcji na każdym elemencie lub elemencie. |
Można przechowywać nieskończoną liczbę funkcji. | Można przechowywać policzalną liczbę elementów. |
Zużycie i iterację elementów z obiektu Stream można wykonać tylko raz. | Zużycie i iteracja elementów z obiektu Collection można wykonać wiele razy. |
Służy do obliczania danych. | Służy do przechowywania danych. |
Pytanie nr 8) Jak stworzyć funkcjonalny interfejs?
Odpowiedź: Chociaż Java może zidentyfikować interfejs funkcjonalny, można go zdefiniować za pomocą adnotacji
@FunctionalInterface
Po zdefiniowaniu interfejsu funkcjonalnego możesz mieć tylko jedną metodę abstrakcyjną. Ponieważ masz tylko jedną metodę abstrakcyjną, możesz napisać wiele metod statycznych i metod domyślnych.
Poniżej znajduje się przykład programowania FunctionalInterface napisanego w celu mnożenia dwóch liczb.
@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)); } }
Wynik:
P # 9) Co to jest interfejs SAM?
Odpowiedź: Java 8 wprowadziła koncepcję FunctionalInterface, która może mieć tylko jedną metodę abstrakcyjną. Ponieważ te interfejsy określają tylko jedną abstrakcyjną metodę, są czasami nazywane interfejsami SAM. SAM oznacza „Single Abstract Method”.
Pytanie nr 10) Co to jest odniesienie do metody?
java j2ee pytania i odpowiedzi do wywiadu
Odpowiedź: W Javie 8 wprowadzono nową funkcję znaną jako Method Reference. Jest to używane w odniesieniu do metody interfejsu funkcjonalnego. Można go użyć do zastąpienia wyrażenia Lambda podczas odwoływania się do metody.
Na przykład: Jeśli wygląda Lambda Expression
num -> System.out.println(num)
Wtedy odpowiednie odniesienie do metody wyglądałoby tak:
System.out::println
gdzie „::” jest operatorem odróżniającym nazwę klasy od nazwy metody.
Pytanie nr 11) Wyjaśnij następującą składnię
String:: Valueof Expression
Odpowiedź: Jest to statyczne odwołanie do metody Wartość metoda Strunowy klasa. System.out :: println jest statyczną referencją do metody println obiektu z klasy System.
Zwraca odpowiednią reprezentację w postaci ciągu przekazanego argumentu. Argumentem może być znak, liczba całkowita, wartość logiczna i tak dalej.
P # 12) Co to jest predykat? Podać różnicę między predykatem a funkcją?
Odpowiedź: Predicate to predefiniowany interfejs funkcjonalny. Znajduje się w pakiecie java.util.function.Predicate. Akceptuje tylko jeden argument, który ma postać pokazaną poniżej,
Orzec
Orzec | Funkcjonować |
---|---|
Ma typ zwracany jako Boolean. | Ma typ zwracany jako Object. |
Jest napisane w formie Orzec który akceptuje pojedynczy argument. | Jest napisane w formie Funkcjonować który również akceptuje pojedynczy argument. |
Jest to interfejs funkcjonalny używany do oceny wyrażeń lambda. Może to służyć jako cel odniesienia do metody. | Jest to również interfejs funkcjonalny, który jest używany do oceny wyrażeń lambda. W funkcji T jest typem danych wejściowych, a R typem wyniku. Może to również służyć jako cel dla wyrażenia lambda i odniesienia do metody. |
Pytanie nr 13) Czy jest coś nie tak z poniższym kodem? Czy skompiluje się lub wyświetli jakiś konkretny błąd?
@FunctionalInterface public interface Test { public C apply(A a, B b); default void printString() { System.out.println('softwaretestinghelp'); } }
Odpowiedź: Tak. Kod zostanie skompilowany, ponieważ jest zgodny ze specyfikacją interfejsu funkcjonalnego definiującą tylko jedną metodę abstrakcyjną. Druga metoda, printString (), jest metodą domyślną, która nie jest traktowana jako metoda abstrakcyjna.
Pytanie nr 14) Co to jest Stream API? Dlaczego wymagamy Stream API?
Odpowiedź: Stream API to nowa funkcja dodana w języku Java 8. Jest to specjalna klasa używana do przetwarzania obiektów ze źródła, takiego jak Collection.
Wymagamy Stream API, ponieważ
- Obsługuje operacje zagregowane, dzięki czemu przetwarzanie jest proste.
- Obsługuje programowanie w stylu funkcjonalnym.
- Szybsze przetwarzanie. Dlatego jest odpowiedni dla lepszej wydajności.
- Umożliwia równoległe operacje.
Pytanie nr 15) Jaka jest różnica między limit i skip?
Odpowiedź: Metoda limit () służy do zwracania strumienia o określonym rozmiarze. Na przykład, Jeśli wspomniałeś o limicie (5), liczba elementów wyjściowych wynosiłaby 5.
Rozważmy następujący przykład. Dane wyjściowe zwracają sześć elementów, ponieważ limit jest ustawiony na „sześć”.
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)); } }
Wynik:
Natomiast metoda skip () służy do pomijania elementu.
Rozważmy następujący przykład. Na wyjściu elementy to 6, 7, 8, co oznacza, że pominął elementy aż do szóstego indeksu (zaczynając 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)); } }
Wynik:
Pytanie nr 16) W jaki sposób uzyskasz aktualną datę i godzinę za pomocą Java 8 Date and Time API?
Odpowiedź: Poniższy program został napisany przy pomocy nowego API wprowadzonego w Javie 8. Skorzystaliśmy z API LocalDate, LocalTime i LocalDateTime, aby uzyskać aktualną datę i godzinę.
W pierwszej i drugiej instrukcji print pobraliśmy bieżącą datę i godzinę z zegara systemowego ze strefą czasową ustawioną jako domyślna. W trzeciej instrukcji print użyliśmy interfejsu API LocalDateTime, który wydrukuje zarówno datę, jak i godzinę.
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 } }
Wynik:
Pytanie # 17) Jaki jest cel metody limit () w Javie 8?
Odpowiedź: Metoda Stream.limit () określa limit elementów. Rozmiar określony w limicie (X), zwróci strumień o rozmiarze „X”. Jest to metoda java.util.stream.Stream
Składnia:
limit(X)
Gdzie „X” to rozmiar elementu.
P # 18) Czy napisać program do drukowania 5 liczb losowych przy użyciu forEach w Javie 8?
Odpowiedź: Poniższy program generuje 5 liczb losowych za pomocą forEach w Javie 8. Możesz ustawić zmienną limitu na dowolną liczbę w zależności od tego, ile liczb losowych chcesz wygenerować.
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 */ } }
Wynik:
Pytanie nr 19) Napisz program do drukowania 5 liczb losowych w posortowanej kolejności za pomocą forEach w Javie 8?
Odpowiedź: Poniższy program generuje 5 liczb losowych za pomocą forEach w Javie 8. Możesz ustawić zmienną limitu na dowolną liczbę w zależności od tego, ile liczb losowych chcesz wygenerować. Jedyne, co musisz tutaj dodać, to metoda sortowana ().
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 */ } }
Wynik:
Pytanie # 20) Jaka jest różnica między operacjami pośrednimi i terminalowymi w usłudze Stream?
Odpowiedź: Wszystkie operacje na Stream są albo terminalowe, albo pośrednie. Operacje pośrednie to operacje, które zwracają strumień, dzięki czemu można wykonać inne operacje na tym strumieniu. Operacje pośrednie nie przetwarzają strumienia w miejscu wywołania, dlatego nazywane są leniwymi.
Te rodzaje operacji (operacje pośrednie) przetwarzają dane, gdy wykonywana jest operacja terminalowa. Przykłady operacji pośrednich to mapa i filtr.
Operacje terminalowe inicjują przetwarzanie strumienia. Podczas tego wezwania Strumień przechodzi wszystkie operacje pośrednie. Przykłady operacji terminalowych to suma, odbiór i za każdy.
W tym programie najpierw próbujemy wykonać operację pośrednią bez obsługi terminala. Jak widać, pierwszy blok kodu nie zostanie wykonany, ponieważ nie ma obsługi terminala.
jak zaimplementować kolejkę w java
Drugi blok został pomyślnie wykonany z powodu operacji terminala sum ().
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(); } }
Wynik:
Q # 21) Napisz program Java 8, aby uzyskać sumę wszystkich liczb obecnych na liście?
Odpowiedź: W tym programie użyliśmy ArrayList do przechowywania elementów. Następnie za pomocą metody sum () obliczyliśmy sumę wszystkich elementów znajdujących się w ArrayList. Następnie jest konwertowany na Stream i dodawany każdy element za pomocą metod mapToInt () i sum ().
import java.util.*; class Java8 { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add(10); list.add(20); list.add(30); list.add(40); list.add(50); // Added the numbers into Arraylist System.out.println(sum(list)); } public static int sum(ArrayList list) { return list.stream().mapToInt(i -> i).sum(); // Found the total using sum() method after // converting it into Stream } }
Wynik:
P # 22) Napisz program Java 8, aby podnieść listę liczb do kwadratu, a następnie odfiltruj liczby większe niż 100, a następnie znajdź średnią z pozostałych liczb?
Odpowiedź: W tym programie pobraliśmy tablicę liczb całkowitych i zapisaliśmy je na liście. Następnie za pomocą mapToInt () podnieśliśmy elementy do kwadratu i odfiltrowaliśmy liczby większe niż 100. Na koniec obliczana jest średnia z pozostałej liczby (większej niż 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()); } }
Wynik:
Pytanie # 23) Jaka jest różnica między funkcją findFirst () i findAny () w usłudze Stream?
Odpowiedź: Jak sama nazwa wskazuje, metoda findFirst () służy do znajdowania pierwszego elementu ze strumienia, natomiast metoda findAny () służy do znajdowania dowolnego elementu ze strumienia.
Funkcja findFirst () ma charakter predestynarianizmu, podczas gdy funkcja findAny () nie jest deterministyczna. W programowaniu deterministyczny oznacza, że dane wyjściowe są oparte na wejściu lub stanie początkowym systemu.
Pytanie nr 24) Jaka jest różnica między Iteratorem a Spliteratorem?
Odpowiedź: Poniżej znajdują się różnice między Iteratorem i Spliteratorem.
Iterator | Rozdzielacz |
---|---|
Został wprowadzony w Javie w wersji 1.2 | Został wprowadzony w Javie SE 8 |
Jest używany przez Collection API. | Jest używany przez Stream API. |
Niektóre metody iteracyjne to next () i hasNext (), które są używane do iteracji elementów. | Metoda spliteratora to tryAdvance (). |
Musimy wywołać metodę iterator () na obiekcie Collection. | Musimy wywołać metodę spliterator () w obiekcie Stream. |
Iteruje tylko w kolejności sekwencyjnej. | Iteruje w kolejności równoległej i sekwencyjnej. |
Pytanie nr 25) Co to jest interfejs funkcjonalny konsumenta?
Odpowiedź: Konsumencki interfejs funkcjonalny jest również interfejsem z pojedynczym argumentem (podobnie jak predykat i funkcja). Podlega java.util.function.Consumer. To nie zwraca żadnej wartości.
W poniższym programie wykorzystaliśmy metodę accept do pobrania wartości obiektu 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 */ } }
Wynik:
Pytanie nr 26) Co to jest interfejs funkcjonalny dostawcy?
Odpowiedź: Interfejs funkcjonalny dostawcy nie akceptuje parametrów wejściowych. Podlega java.util.function.Supplier. Zwraca wartość przy użyciu metody get.
W poniższym programie wykorzystaliśmy metodę get do pobrania wartości obiektu 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. */ } }
Wynik:
Pytanie nr 27) Co to jest Nashorn w Javie 8?
Odpowiedź: Nashorn in Java 8 to oparty na Javie silnik do wykonywania i oceny kodu JavaScript.
Pytanie nr 28) Napisz program Java 8, aby znaleźć najniższą i najwyższą liczbę strumienia?
Odpowiedź: W tym programie użyliśmy metod min () i max (), aby uzyskać najwyższą i najniższą liczbę strumienia. Przede wszystkim zainicjowaliśmy strumień, który ma liczby całkowite i przy pomocy metody Comparator.comparing () porównaliśmy elementy Stream.
Włączenie tej metody z max () i min () daje najwyższe i najniższe liczby. Będzie również działać podczas porównywania ciągów znaków.
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); } }
Wynik:
Pytanie nr 29) Jaka jest różnica między operacją Map a flatMap Stream?
Odpowiedź: Operacja Map Stream daje jedną wartość wyjściową na wartość wejściową, podczas gdy operacja flatMap Stream daje zero lub więcej wartości wyjściowych na wartość wejściową.
Przykład mapy- Operacja Map Stream jest zwykle używana do prostych operacji na Stream, takich jak ta wspomniana poniżej.
W tym programie zmieniliśmy znaki „Nazwy” na wielkie litery za pomocą operacji na mapie po zapisaniu ich w strumieniu i za pomocą operacji forEach Terminal wydrukowaliśmy każdy 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 } }
Wynik:
flatMap Przykład- Operacja flatMap Stream jest używana do bardziej złożonych operacji na strumieniu.
Tutaj wykonaliśmy operację flatMap na „Liście listy typu String”. Podaliśmy nazwy wejściowe jako listę, a następnie zapisaliśmy je w strumieniu, w którym odfiltrowaliśmy nazwy zaczynające się od „S”.
Wreszcie za pomocą operacji forEach Terminal wydrukowaliśmy każdy 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 */ } }
Wynik:
przykłady skryptów powłoki unix dla początkujących
Pytanie nr 30) Czym jest MetaSpace w Javie 8?
Odpowiedź: W Javie 8 wprowadzono nową funkcję przechowywania klas. Obszar, w którym wszystkie klasy przechowywane w Javie 8 noszą nazwę MetaSpace. MetaSpace zastąpił PermGen.
Aż do Java 7, PermGen był używany przez Java Virtual Machine do przechowywania klas. Ponieważ MetaSpace jest dynamiczny, ponieważ może się dynamicznie rozwijać i nie ma żadnych ograniczeń rozmiaru, Java 8 zastąpiła PermGen MetaSpace.
Pytanie # 31) Jaka jest różnica między wewnętrzną i zewnętrzną iteracją Java 8?
Odpowiedź: Różnicę między iteracją wewnętrzną i zewnętrzną przedstawiono poniżej.
Iteracja wewnętrzna | Iteracja zewnętrzna |
---|---|
Został wprowadzony w Javie 8 (JDK-8). | Został wprowadzony i praktykowany w poprzedniej wersji Java (JDK-7, JDK-6 i tak dalej). |
Iteruje wewnętrznie na zagregowanych obiektach, takich jak Collection. | Iteruje zewnętrznie na zagregowanych obiektach. |
Obsługuje funkcjonalny styl programowania. | Obsługuje styl programowania OOPS. |
Iterator wewnętrzny jest pasywny. | Iterator zewnętrzny jest aktywny. |
Jest mniej błędny i wymaga mniej kodowania. | Wymaga trochę więcej kodowania i jest bardziej podatna na błędy. |
Pytanie # 32) Co to jest JJS?
Odpowiedź: JJS to narzędzie wiersza poleceń używane do wykonywania kodu JavaScript na konsoli. W Javie 8 JJS jest nowym plikiem wykonywalnym, który jest silnikiem JavaScript.
Pytanie # 33) Co to jest ChronoUnits w Javie 8?
Odpowiedź: ChronoUnits to wyliczenie, które zostało wprowadzone w celu zastąpienia wartości całkowitych, które są używane w starym interfejsie API do reprezentowania miesiąca, dnia itp.
Pytanie # 34) Wyjaśnij klasę StringJoiner w Javie 8? Jak możemy osiągnąć łączenie wielu ciągów za pomocą klasy StringJoiner?
Odpowiedź: W Javie 8 w pakiecie java.util wprowadzono nową klasę, znaną jako StringJoiner. Za pomocą tej klasy możemy łączyć wiele ciągów oddzielonych ogranicznikami wraz z podaniem do nich przedrostka i sufiksu.
W poniższym programie nauczymy się łączyć wiele ciągów za pomocą klasy StringJoiner. Tutaj mamy „,” jako separator między dwoma różnymi ciągami. Następnie połączyliśmy pięć różnych ciągów, dodając je za pomocą metody add (). Na koniec wydrukowano łącznik sznurkowy.
W następnym pytaniu # 35 dowiesz się o dodawaniu przedrostka i sufiksu do ciągu.
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); } }
Wynik:
Q # 35) Napisz program Java 8, aby dodać przedrostek i sufiks do ciągu?
Odpowiedź: W tym programie mamy „,” jako separator między dwoma różnymi ciągami. Podaliśmy również nawiasy „(” i „)” jako przedrostek i przyrostek. Następnie łączy się pięć różnych ciągów, dodając je za pomocą metody add (). Na koniec wydrukowano łącznik sznurkowy.
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); } }
Wynik:
Q # 36) Napisz program w języku Java 8 do iteracji strumienia przy użyciu metody forEach?
Odpowiedź: W tym programie iterujemy strumień zaczynający się od „liczba = 2”, po którym następuje zmienna licznika zwiększana o „1” po każdej iteracji.
Następnie filtrujemy liczbę, której reszta nie wynosi zero po podzieleniu przez liczbę 2. Ponadto ustawiliśmy limit jako? 5, co oznacza, że tylko 5 razy będzie iterować. Na koniec drukujemy każdy element za 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); } }
Wynik:
Pytanie # 37) Napisz program Java 8 do sortowania tablicy, a następnie przekonwertuj posortowaną tablicę na Stream?
Odpowiedź: W tym programie użyliśmy sortowania równoległego do sortowania tablicy liczb całkowitych. Następnie przekonwertowaliśmy posortowaną tablicę na Stream i za pomocą forEach wydrukowaliśmy każdy element 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 */ } }
Wynik:
Pytanie nr 38) Napisz program Java 8, aby znaleźć liczbę ciągów znaków na liście, których długość jest większa niż 5?
Odpowiedź: W tym programie cztery Ciągi są dodawane do listy za pomocą metody add (), a następnie za pomocą wyrażenia Stream i Lambda policzyliśmy łańcuchy o długości większej niż 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'); } }
Wynik:
Q # 39) Napisz program Java 8 do łączenia dwóch strumieni?
Odpowiedź: W tym programie utworzyliśmy dwa strumienie z dwóch już utworzonych list, a następnie połączyliśmy je za pomocą metody concat (), w której dwie listy są przekazywane jako argument. Na koniec wydrukowano elementy połączonego strumienia.
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 } }
Wynik:
Pytanie nr 40) Napisz program Java 8, aby usunąć zduplikowane elementy z listy?
Odpowiedź: W tym programie zapisaliśmy elementy w tablicy i przekonwertowaliśmy je na listę. Następnie użyliśmy strumienia i zebraliśmy go do „Set” za pomocą metody „Collectors.toSet ()”.
import java.util.Arrays; import java.util.List; import java.util.Set; import java.util.stream.Collectors; public class Java8 { public static void main(String[] args) { Integer[] arr1 = new Integer[] { 1, 9, 8, 7, 7, 8, 9 }; List listdup = Arrays.asList(arr1); // Converted the Array of type Integer into List Set setNoDups = listdup.stream().collect(Collectors.toSet()); // Converted the List into Stream and collected it to “Set” // Set won't allow any duplicates setNoDups.forEach((i) -> System.out.print(' ' + i)); } }
Wynik:
Wniosek
W tym artykule zrozumieliśmy nowe funkcje wprowadzone w Javie 8. Omówiliśmy szczegółowo wszystkie główne pytania do wywiadów Java 8 i odpowiedzi na nie.
Po przeczytaniu tego samouczka musisz zdobyć wiedzę na temat nowych interfejsów API do manipulacji datami, nowych funkcji Java 8, nowych interfejsów API przesyłania strumieniowego wraz z przykładami programowania apt zgodnie z koncepcją. Te nowe koncepcje lub funkcje są częścią procesu rozmowy kwalifikacyjnej, gdy masz ochotę na bardziej wymagające pozycje Java.
Wszystkiego najlepszego!!
=> Sprawdź WSZYSTKIE samouczki Java tutaj.
rekomendowane lektury
- Pytania i odpowiedzi do wywiadu
- ETL Testing Interview Pytania i odpowiedzi
- Niektóre trudne pytania i odpowiedzi do testowania ręcznego
- 40 najpopularniejszych pytań i odpowiedzi do wywiadów w zakresie programowania w języku C
- Top 40 popularnych pytań i odpowiedzi do wywiadów J2EE, które powinieneś przeczytać
- Pytania do wywiadu Spocka z odpowiedziami (najpopularniejsze)
- 25 najlepszych pytań i odpowiedzi do wywiadów z testami zwinnymi
- 32 najlepsze pytania i odpowiedzi do wywiadów z danymi