top 40 java 8 interview questions answers
В този урок ние предоставихме най-важните въпроси за интервю за Java 8 и техните отговори с примери за кодове и обяснение:
Всички важни въпроси, изброени в този урок, са специфични за Java 8. Java се е развила много (с течение на времето) с въвеждането на нови версии. С всяка версия имаме нови функции, свързани с Java. Всички тези важни функции ще бъдат разгледани в този урок.
Това са много често срещани въпроси, които ще ви бъдат зададени във всяко интервю за Java, което изисква разширени умения. Тези концепции са задължителни, ако ще се явявате на стандартни изпити за сертифициране на Java като Oracle Certified Associate (OCA).
=> Погледнете тук ръководството за начинаещи Java.
Тази статия ще бъде много подходяща както за разработчици на Java, така и за тестери на Java / тестери за автоматизация или за всеки, който търси по-високо заплащане в същото поле, тъй като изисква усъвършенствани Java умения.
Най-често задаваните въпроси за интервю за Java 8
В # 1) Избройте новите функции, въведени в Java 8?
Отговор: Новите функции, въведени в Java 8, са изброени по-долу:
- Ламбда изрази
- Референции на методите
- Незадължителен клас
- Функционален интерфейс
- Методи по подразбиране
- Rhinoceros, JavaScript двигател
- API за поток
- API за дата
В # 2) Какво представляват функционалните интерфейси?
Отговор: Функционалният интерфейс е интерфейс, който има само един абстрактен метод. Внедряването на тези интерфейси се осигурява с помощта на Lambda Expression, което означава, че за да използвате Lambda Expression, трябва да създадете нов функционален интерфейс или можете да използвате предварително дефинирания функционален интерфейс на Java 8 .
Анотацията, използвана за създаване на нов функционален интерфейс е „ @FunctionalInterface ”.
В # 3) Какво представлява незадължителен клас?
Отговор: Незадължителен клас е специален клас обвивка, въведен в Java 8, който се използва за избягване на NullPointerExceptions. Този последен клас присъства под пакета java.util. NullPointerExceptions се появява, когато не успеем да извършим проверките Null.
В # 4) Какви са методите по подразбиране?
Отговор: Методите по подразбиране са методите на интерфейса, който има тяло. Тези методи, както подсказва името, използват ключовите думи по подразбиране. Използването на тези методи по подразбиране е „Обратна съвместимост“, което означава, че ако JDK модифицира всеки интерфейс (без метод по подразбиране), тогава класовете, които прилагат този интерфейс, ще се счупят.
От друга страна, ако добавите метода по подразбиране в интерфейс, ще можете да предоставите изпълнението по подразбиране. Това няма да повлияе на изпълняващите класове.
Синтаксис:
public interface questions{ default void print() { System.out.println('www.softwaretestinghelp.com'); } }
Q # 5) Какви са основните характеристики на ламбда функцията?
Отговор: Основните характеристики на ламбда функцията са както следва:
- Метод, който е дефиниран като Lambda Expression, може да бъде предаден като параметър на друг метод.
- Методът може да съществува самостоятелно, без да принадлежи към клас.
- Няма нужда да декларирате типа на параметъра, защото компилаторът може да извлече типа от стойността на параметъра.
- Можем да използваме скоби, когато използваме множество параметри, но не е необходимо да имаме скоби, когато използваме един параметър.
- Ако тялото на израза има един израз, няма нужда да включвате къдрави скоби.
Q # 6) Какво не беше наред със старата дата и час?
Отговор: По-долу са изброени недостатъците на старата дата и час:
- Java.util.Date е променлив и не е безопасен за нишки, докато новият API за дата и час на Java 8 е безопасен за нишки.
- API за дата и час Java 8 отговаря на стандартите ISO, докато старите дата и час са били зле проектирани.
- Той въведе няколко API класа за дата като LocalDate, LocalTime, LocalDateTime и т.н.
- Говорейки за производителността между двете, Java 8 работи по-бързо от стария режим на дата и час.
В # 7) Каква е разликата между API за събиране и API за поток?
Отговор: Разликата между Stream API и Collection API може да се разбере от таблицата по-долу:
API за поток | API за събиране |
---|---|
Представен е във версията на Java 8 Standard Edition. | Представен е в Java версия 1.2 |
Няма полза от Итератор и Сплитератори. | С помощта на forEach можем да използваме Итератор и Сплитератори за итерация на елементите и извършване на действие върху всеки елемент или елемент. |
Може да се съхраняват безкраен брой функции. | Може да се съхраняват брояч на елементите. |
Консумацията и итерацията на елементи от обекта Stream може да се извърши само веднъж. | Консумацията и итерацията на елементи от обекта Collection могат да се извършват няколко пъти. |
Използва се за изчисляване на данни. | Използва се за съхраняване на данни. |
Q # 8) Как можете да създадете функционален интерфейс?
Отговор: Въпреки че Java може да идентифицира функционален интерфейс, можете да го определите с анотацията
@FunctionalInterface
След като сте дефинирали функционалния интерфейс, можете да имате само един абстрактен метод. Тъй като имате само един абстрактен метод, можете да напишете множество статични методи и методи по подразбиране.
По-долу е даден пример за програмиране на FunctionalInterface, написан за умножение на две числа.
@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)); } }
Изход:
В # 9) Какво представлява SAM интерфейсът?
Отговор: Java 8 представи концепцията за функционален интерфейс, който може да има само един абстрактен метод. Тъй като тези интерфейси определят само един абстрактен метод, те понякога се наричат SAM интерфейси. SAM означава „Метод с един абстрактен метод“.
Q # 10) Какво е справка за метод?
най-добрият софтуер за подобряване на производителността на компютъра
Отговор: В Java 8 беше въведена нова функция, известна като Метод за справка. Това се използва за препращане към метода на функционалния интерфейс. Може да се използва за заместване на Lambda Expression, докато се позовава на метод.
Например: Ако Lambda Expression изглежда така
num -> System.out.println(num)
Тогава съответният референтен метод ще бъде,
System.out::println
където “::” е оператор, който различава името на класа от името на метода.
Q # 11) Обяснете следния синтаксис
String:: Valueof Expression
Отговор: Това е статичен метод препратка към Стойност на метод на Струна клас. System.out :: println е статична препратка към метод println на обект out от клас System.
Той връща съответното низово представяне на аргумента, който е предаден. Аргументът може да бъде Character, Integer, Boolean и т.н.
В # 12) Какво е предикат? Посочете разликата между предикат и функция?
Отговор: Предикатът е предварително дефиниран функционален интерфейс. Той е под java.util.function.Predicate пакет. Той приема само един аргумент, който е във формата, както е показано по-долу,
Предикат
Предикат | Функция |
---|---|
Той има тип на връщане като Boolean. | Той има типа на връщане като Object. |
Написано е под формата на Предикат който приема един аргумент. | Написано е под формата на Функция който също приема един аргумент. |
Това е функционален интерфейс, който се използва за оценка на Lambda Expressions. Това може да се използва като цел за справка за метод. | Това е и функционален интерфейс, който се използва за оценка на Lambda Expressions. Във функция T е за тип на въвеждане, а R е за тип на резултата. Това може да се използва и като цел за ламбда-израз и справка за метода. |
Q # 13) Има ли нещо нередно със следния код? Ще се компилира или ще даде някаква конкретна грешка?
@FunctionalInterface public interface Test { public C apply(A a, B b); default void printString() { System.out.println('softwaretestinghelp'); } }
Отговор: Да. Кодът ще се компилира, тъй като следва спецификацията на функционалния интерфейс за дефиниране само на един абстрактен метод. Вторият метод, printString (), е метод по подразбиране, който не се брои като абстрактен метод.
Q # 14) Какво е Stream API? Защо се нуждаем от API на Stream?
Отговор: API на потока е нова функция, добавена в Java 8. Това е специален клас, който се използва за обработка на обекти от източник като Collection.
Изискваме Stream API, защото,
- Той поддържа съвкупни операции, което улеснява обработката.
- Той поддържа програмиране в функционален стил.
- Това прави по-бърза обработка. Следователно е подходящо за по-добро представяне.
- Тя позволява паралелни операции.
Q # 15) Каква е разликата между ограничение и пропускане?
Отговор: Методът limit () се използва за връщане на потока с посочения размер. Например, Ако сте споменали ограничение (5), тогава броят на изходните елементи ще бъде 5.
Нека разгледаме следния пример. Изходът тук връща шест елемента, тъй като ограничението е зададено на „шест“.
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)); } }
Изход:
Докато методът skip () се използва за пропускане на елемента.
Нека разгледаме следния пример. В изхода елементите са 6, 7, 8, което означава, че е пропуснал елементите до 6-ия индекс (започвайки от 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)); } }
Изход:
Q # 16) Как ще получите текущата дата и час с помощта на Java 8 API за дата и час?
Отговор: Програмата по-долу е написана с помощта на новия API, въведен в Java 8. Използвахме LocalDate, LocalTime и LocalDateTime API, за да получим текущата дата и час.
В първото и второто отпечатване извлекохме текущата дата и час от системния часовник с часовата зона, зададена по подразбиране. В третото изявление за печат използвахме API на LocalDateTime, който ще отпечата както дата, така и час.
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 } }
Изход:
Q # 17) Каква е целта на метода limit () в Java 8?
Отговор: Методът Stream.limit () определя лимита на елементите. Размерът, който посочите в ограничението (X), ще върне потока с размера на „X“. Това е метод на java.util.stream.Stream
Синтаксис:
limit(X)
Където „X“ е размерът на елемента.
В # 18) Напишете програма за отпечатване на 5 произволни числа, използвайки forEach в Java 8?
Отговор: Програмата по-долу генерира 5 случайни числа с помощта на forEach в Java 8. Можете да зададете граничната променлива на произволно число в зависимост от това колко случайни числа искате да генерирате.
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 */ } }
Изход:
Q # 19) Напишете програма за отпечатване на 5 произволни числа в сортиран ред, използвайки forEach в Java 8?
Отговор: Програмата по-долу генерира 5 случайни числа с помощта на forEach в Java 8. Можете да зададете граничната променлива на произволно число в зависимост от това колко случайни числа искате да генерирате. Единственото нещо, което трябва да добавите тук, е методът 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 */ } }
Изход:
Q # 20) Каква е разликата между междинните и терминалните операции в Stream?
Отговор: Всички операции на потока са или терминални, или междинни. Междинните операции са операциите, които връщат потока, така че някои други операции могат да бъдат извършени на този поток. Междинните операции не обработват потока на мястото на повикване, поради което се наричат мързеливи.
Тези видове операции (междинни операции) обработват данни, когато е извършена операция на терминала. Примери на междинни операции са карта и филтър.
Терминалните операции инициират обработка на потока. По време на това обаждане потокът преминава през всички междинни операции. Примери на експлоатацията на терминала са sum, Collect и forEach.
В тази програма първо се опитваме да изпълним междинна операция без терминална операция. Както можете да видите, първият блок код няма да се изпълни, тъй като няма поддържаща операция на терминала.
Вторият блок е изпълнен успешно поради операционната сума на терминала ().
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(); } }
Изход:
Q # 21) Напишете програма Java 8, за да получите сумата от всички числа, присъстващи в списък?
Отговор: В тази програма използвахме ArrayList за съхраняване на елементите. След това с помощта на метода sum () сме изчислили сумата на всички елементи, присъстващи в ArrayList. След това се преобразува в Stream и се добавя всеки елемент с помощта на методите mapToInt () и 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 } }
Изход:
ръчно тестване на интервю въпроси и отговори за опитни
Въпрос # 22) Напишете програма Java 8, за да квадратирате списъка с числа и след това да филтрирате числата по-големи от 100 и след това да намерите средната стойност на останалите числа?
Отговор: В тази програма взехме масив от цели числа и ги съхранихме в списък. След това с помощта на mapToInt () ние изравнихме елементите на квадрат и филтрирахме числата, по-големи от 100. Накрая се изчислява средната стойност на останалия брой (по-голям от 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()); } }
Изход:
Q # 23) Каква е разликата между Stream’s findFirst () и findAny ()?
Отговор: Както подсказва името, методът findFirst () се използва за намиране на първия елемент от потока, докато методът findAny () се използва за намиране на който и да е елемент от потока.
FindFirst () е предестинаризъм по своята същност, докато findAny () е недетерминиран. При програмирането, детерминиран означава, че изходът се основава на входа или първоначалното състояние на системата.
Q # 24) Каква е разликата между Iterator и Spliterator?
Отговор: По-долу са разликите между Iterator и Spliterator.
Итератор | Разделител |
---|---|
Представен е в Java версия 1.2 | Представен е в Java SE 8 |
Използва се за API за събиране. | Използва се за Stream API. |
Някои от методите за повторение са next () и hasNext (), които се използват за итерация на елементи. | Методът на сплитератор е tryAdvance (). |
Трябва да извикаме метода iterator () в Object Collection. | Трябва да извикаме метода spliterator () на Stream Object. |
Взаимодейства само в последователен ред. | Взаимодейства в паралелен и последователен ред. |
Q # 25) Какво представлява потребителският функционален интерфейс?
Отговор: Потребителският функционален интерфейс също е интерфейс с един аргумент (като предикат и функция). Той се предлага под java.util.function.Consumer. Това не връща никаква стойност.
В програмата по-долу използвахме метода accept, за да извлечем стойността на обекта 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 */ } }
Изход:
Q # 26) Какво представлява функционалният интерфейс на доставчика?
Отговор: Функционалният интерфейс на доставчика не приема входни параметри. Той се предлага под java.util.function.Supplier. Това връща стойността, използвайки метода get.
В програмата по-долу използваме метода get, за да извлечем стойността на обекта 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. */ } }
Изход:
Q # 27) Какво е Nashorn в Java 8?
Отговор: Nashorn в Java 8 е Java-базиран двигател за изпълнение и оценка на JavaScript код.
Q # 28) Напишете програма Java 8, за да намерите най-ниското и най-голямото число на поток?
Отговор: В тази програма използвахме методите min () и max (), за да получим най-голямото и най-малкото число на поток. Първо, инициализирахме поток, който има цели числа и с помощта на метода Comparator.comparing () сравнихме елементите на потока.
Когато този метод е включен с max () и min (), той ще ви даде най-високите и най-ниските числа. Ще работи и при сравняване на струните.
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); } }
Изход:
Q # 29) Каква е разликата между операцията Map Stream и FlatMap Stream?
Отговор: Операцията Map Stream дава една изходна стойност на входна стойност, докато операцията flatMap Stream дава нула или повече изходна стойност за входна стойност.
Пример за карта- Операцията Map Stream обикновено се използва за лесна работа в Stream, като тази, спомената по-долу.
В тази програма сме променили символите на “Имена” в главни букви, като използваме операция с карти, след като ги съхраняваме в поток и с помощта на операцията forEach Terminal отпечатваме всеки елемент.
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 } }
Изход:
Пример за flatMap- Операцията flatMap Stream се използва за по-сложна операция Stream.
Тук сме извършили операция flatMap върху „Списък на списък от тип String“. Дали сме имена на входове като списък и след това сме ги съхранили в поток, в който сме филтрирали имената, които започват с „S“.
И накрая, с помощта на операцията forEach Terminal, ние отпечатахме всеки елемент.
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 */ } }
Изход:
Q # 30) Какво е MetaSpace в Java 8?
Отговор: В Java 8 беше въведена нова функция за съхраняване на класове. Областта, в която всички класове, които се съхраняват в Java 8, се наричат MetaSpace. MetaSpace замени PermGen.
До Java 7 PermGen се използваше от Java Virtual Machine за съхраняване на класовете. Тъй като MetaSpace е динамичен, тъй като може да расте динамично и няма ограничения за размера, Java 8 замени PermGen с MetaSpace.
как да превърна видео от youtube в wav файл
Q # 31) Каква е разликата между Java 8 Internal и External Iteration?
Отговор: Разликата между вътрешната и външната итерация е посочена по-долу.
Вътрешна итерация | Външна итерация |
---|---|
Въведен е в Java 8 (JDK-8). | Той беше въведен и практикуван в предишната версия на Java (JDK-7, JDK-6 и т.н.). |
Той итерира вътрешно за агрегираните обекти като Collection. | Той итерира външно върху агрегираните обекти. |
Той поддържа функционален стил на програмиране. | Той поддържа стил на програмиране на OOPS. |
Internal Iterator е пасивен. | Външният итератор е активен. |
Той е по-малко грешен и изисква по-малко кодиране. | Тя изисква малко повече кодиране и е по-податлива на грешки. |
Q # 32) Какво е JJS?
Отговор: JJS е инструмент за команден ред, използван за изпълнение на JavaScript код на конзолата. В Java 8 JJS е новият изпълним файл, който е JavaScript двигател.
В # 33) Какво представлява ChronoUnits в Java 8?
Отговор: ChronoUnits е преброяването, което се въвежда, за да замести целочислените стойности, които се използват в стария API за представяне на месеца, деня и т.н.
Q # 34) Обяснете клас StringJoiner в Java 8? Как можем да постигнем присъединяване към множество низове с помощта на StringJoiner Class?
Отговор: В Java 8 беше въведен нов клас в пакета java.util, който беше известен като StringJoiner. Чрез този клас можем да съединим множество низове, разделени с разделители, заедно с предоставяне на префикс и суфикс към тях.
В програмата по-долу ще научим за присъединяването към множество низове с помощта на StringJoiner Class. Тук имаме „,“ като разделител между две различни низове. След това сме обединили пет различни низа, като ги добавим с помощта на метода add (). Накрая отпечатате String Joiner.
В следващия въпрос # 35 ще научите за добавянето на префикс и суфикс към низа.
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); } }
Изход:
В # 35) Напишете програма Java 8, за да добавите префикс и суфикс към String?
Отговор: В тази програма имаме „,“ като разделител между два различни низа. Също така, ние сме дали „(“ и „)“ скоби като префикс и суфикс. След това се съединяват пет различни низа, като се добавят с помощта на метода add (). Накрая отпечатате 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); } }
Изход:
Q # 36) Напишете програма Java 8 за итерация на поток, използвайки метода forEach?
Отговор: В тази програма ние итерираме поток, започвайки от „число = 2”, последван от променливата за броене, увеличена с „1” след всяка итерация.
След това филтрираме числото, чийто остатък не е нула, когато се дели на числото 2. Освен това сме задали лимита като? 5, което означава, че само 5 пъти ще се повтори. И накрая, ние отпечатваме всеки елемент, използвайки 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); } }
Изход:
Q # 37) Напишете програма Java 8, за да сортирате масив и след това да преобразувате сортирания масив в Stream?
Отговор: В тази програма използвахме паралелно сортиране, за да сортираме масив от цели числа. След това преобразувахме сортирания масив в Stream и с помощта на forEach отпечатахме всеки елемент от 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 */ } }
Изход:
Q # 38) Напишете програма Java 8, за да намерите броя на низовете в списък, чиято дължина е по-голяма от 5?
Отговор: В тази програма в списъка се добавят четири низа с помощта на метода add () и след това с помощта на израза Stream и Lambda сме преброили низовете, чиято дължина е по-голяма от 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'); } }
Изход:
Q # 39) Напишете програма Java 8 за обединяване на два потока?
Отговор: В тази програма създадохме два потока от двата вече създадени списъка и след това ги обединихме, използвайки метод concat (), в който два списъка се предават като аргумент. Накрая отпечата елементите на обединения поток.
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 } }
Изход:
Q # 40) Напишете програма Java 8, за да премахнете дублиращите се елементи от списъка?
Отговор: В тази програма сме съхранили елементите в масив и сме ги преобразували в списък. След това използвахме поток и го събрахме в „Set“ с помощта на метода „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)); } }
Изход:
Заключение
В тази статия разбрахме новите функции, въведени в Java 8. Покрихме подробно всички основни въпроси за интервюта за Java 8 и техните отговори.
След като прочетете този урок, трябва да сте придобили знания за новите API за манипулиране на дата и час, новите функции на Java 8, новите API за поточно предаване, както и подходящите примери за програмиране според концепцията. Тези нови концепции или функции са част от процеса на интервю, когато сте готови за по-предизвикателните позиции на Java.
Всичко най-хубаво!!
=> Проверете ВСИЧКИ уроци за Java тук.
Препоръчително четене
- Интервюирайте въпроси и отговори
- Въпроси и отговори за интервю за ETL тестване
- Някои сложни ръчни тестови въпроси и отговори
- Топ 40 C Въпроси и отговори за интервю за програмиране
- Топ 40 популярни въпроси и отговори за интервю за J2EE, които трябва да прочетете
- Въпроси за интервю с Spock с отговори (най-популярни)
- 25 най-добри пъргави тестови интервюта Въпроси и отговори
- Топ 32 най-добри въпроси и отговори за интервю за сцената на данни