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
Q # 1) Перелічіть нові функції, представлені в Java 8?
Відповідь: Нові функції, представлені в Java 8, перелічені нижче:
- Лямбда-вирази
- Посилання на методи
- Необов’язковий клас
- Функціональний інтерфейс
- Методи за замовчуванням
- Носоріг, механізм JavaScript
- API потоку
- API дати
Q # 2) Що таке функціональні інтерфейси?
Відповідь: Функціональний інтерфейс - це інтерфейс, який має лише один абстрактний метод. Реалізація цих інтерфейсів забезпечується за допомогою виразу Lambda, що означає, що для використання виразу Lambda вам потрібно створити новий функціональний інтерфейс або ви можете використовувати заздалегідь визначений функціональний інтерфейс Java 8 .
Анотація, яка використовується для створення нового функціонального інтерфейсу: @FunctionalInterface '.
Q # 3) Що таке факультативний клас?
Відповідь: Необов’язковий клас - це спеціальний клас обгортки, введений в Java 8, який використовується для уникнення NullPointerExceptions. Цей заключний клас присутній у пакеті java.util. NullPointerExceptions відбувається, коли нам не вдається виконати перевірки Null.
Q # 4) Які методи за замовчуванням?
Відповідь: Методи за замовчуванням - це методи інтерфейсу, який має тіло. Ці методи, як випливає з назви, використовують ключові слова за замовчуванням. Використання цих методів за замовчуванням - 'Зворотна сумісність', що означає, що якщо JDK змінює будь-який Інтерфейс (без методу за замовчуванням), то класи, що реалізують цей Інтерфейс, порушуються.
З іншого боку, якщо ви додасте метод за замовчуванням в інтерфейс, то ви зможете надати реалізацію за замовчуванням. Це не вплине на реалізацію класів.
Синтаксис:
public interface questions{ default void print() { System.out.println('www.softwaretestinghelp.com'); } }
Q # 5) Які основні характеристики лямбда-функції?
Відповідь: Основними характеристиками лямбда-функції є такі:
- Метод, який визначається як лямбда-вираз, може бути переданий як параметр іншому методу.
- Метод може існувати окремо, не належачи до класу.
- Немає необхідності оголошувати тип параметра, оскільки компілятор може отримати тип зі значення параметра.
- Ми можемо використовувати дужки при використанні декількох параметрів, але немає необхідності мати дужки, коли ми використовуємо один параметр.
- Якщо тіло виразу має одне твердження, тоді немає потреби включати фігурні дужки.
Q # 6) Що було не так із старою датою та часом?
Відповідь: Нижче наведено недоліки старої дати та часу:
- Java.util.Date можна змінювати і не є безпечним для потоків, тоді як новий API дати і часу Java 8 є потокобезпечним.
- Java 8 Date and Time API відповідає стандартам ISO, тоді як старі дата та час були погано розроблені.
- Він представив кілька класів API для дати, таких як LocalDate, LocalTime, LocalDateTime тощо.
- Говорячи про продуктивність між ними, Java 8 працює швидше, ніж старий режим дати та часу.
Q # 7) У чому різниця між API колекції та API потоку?
Відповідь: Різницю між API потоку та 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)); } }
Вихід:
Q # 9) Що таке інтерфейс SAM?
Відповідь: Java 8 представила концепцію FunctionalInterface, яка може мати лише один абстрактний метод. Оскільки ці інтерфейси визначають лише один абстрактний метод, їх іноді називають інтерфейсами SAM. SAM розшифровується як “Single Abstract Method”.
Q # 10) Що таке посилання на методи?
знайти команду в unix з прикладами
Відповідь: У Java 8 була представлена нова функція, відома як Посилання на методи. Це використовується для позначення методу функціонального інтерфейсу. Він може бути використаний для заміни лямбда-виразу, посилаючись на метод.
Наприклад: Якщо Лямбда-вираз виглядає так
num -> System.out.println(num)
Тоді відповідним посиланням на метод буде,
System.out::println
де “::” - це оператор, який відрізняє ім’я класу від імені методу.
Q # 11) Поясніть наступний синтаксис
String:: Valueof Expression
Відповідь: Це статичне посилання на метод Значення метод Рядок клас. System.out :: println - це статичне посилання на метод println об'єкта out класу System.
Він повертає відповідне рядкове представлення переданого аргументу. Аргументом може бути символ, ціле число, логічне значення тощо.
Q # 12) Що таке предикат? Вкажіть різницю між предикатом та функцією?
Відповідь: Предикат - це заздалегідь визначений функціональний інтерфейс. Він знаходиться під пакетом java.util.function.Predicate. Він приймає лише один аргумент у формі, як показано нижче,
Присудок
Присудок | Функція |
---|---|
Він має тип повернення як логічний. | Він має тип повернення як Object. |
Це написано у формі Присудок який приймає один аргумент. | Це написано у формі Функція який також приймає один аргумент. |
Це функціональний інтерфейс, який використовується для оцінки лямбда-виразів. Це може бути використано як орієнтир для Довідника методів. | Це також функціональний інтерфейс, який використовується для оцінки лямбда-виразів. У функції '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 Date and Time 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’ - це розмір елемента.
Q # 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 } }
Вихід:
Q # 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) У чому різниця між Ітератором та Сплітератором?
Відповідь: Нижче наведено відмінності між Ітератором та Сплітератором.
Ітератор | Спліттер |
---|---|
Він був представлений у версії Java 1.2 | Це було представлено в Java SE 8 |
Він використовується для API колекції. | Він використовується для Stream API. |
Деякі з методів ітерації є next () і hasNext (), які використовуються для ітерації елементів. | Метод сплітератора - tryAdvance (). |
Нам потрібно викликати метод iterator () для об’єкта збору. | Нам потрібно викликати метод spliterator () для об’єкта Stream. |
Взаємодіє лише в послідовному порядку. | Взаємодіє в паралельному та послідовному порядку. |
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.
найпростіший спосіб конвертувати YouTube у mp3
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) У чому різниця між операцією потоку карти та flatMap?
Відповідь: Операція 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 використовується для більш складної роботи потоку.
Тут ми виконали операцію 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.
Q # 31) У чому різниця між внутрішньою та зовнішньою ітерацією Java 8?
Відповідь: Різниця між внутрішньою та зовнішньою ітерацією наведена нижче.
Внутрішня ітерація | Зовнішня ітерація |
---|---|
Він був введений в Java 8 (JDK-8). | Це було запроваджено та застосовано в попередній версії Java (JDK-7, JDK-6 тощо). |
Він виконує внутрішню ітерацію щодо об’єднаних об’єктів, таких як Collection. | Він здійснює ітерацію зовні для об’єднаних об’єктів. |
Він підтримує функціональний стиль програмування. | Він підтримує стиль програмування OOPS. |
Внутрішній ітератор пасивний. | Зовнішній ітератор активний. |
Він менш помилковий і вимагає менше кодування. | Це вимагає трохи більше кодування та більше схильне до помилок. |
Q # 32) Що таке JJS?
Відповідь: JJS - це інструмент командного рядка, який використовується для виконання коду JavaScript на консолі. У Java 8 JJS - це новий виконуваний файл, який є механізмом JavaScript.
Q # 33) Що таке ChronoUnits у Java 8?
Відповідь: ChronoUnits - це перелік, який вводиться для заміни значень Integer, що використовуються у старому API для представлення місяця, дня тощо.
Q # 34) Поясніть клас StringJoiner у Java 8? Як ми можемо досягти об’єднання кількох рядків за допомогою класу StringJoiner?
Відповідь: У Java 8 введено новий клас у пакеті java.util, який був відомий як StringJoiner. За допомогою цього класу ми можемо об’єднати кілька рядків, розділених розділювачами, разом із наданням їм префіксу та суфікса.
У наведеній нижче програмі ми дізнаємося про приєднання кількох рядків за допомогою класу StringJoiner. Тут ми маємо “,” як роздільник між двома різними рядками. Потім ми об’єднали п’ять різних рядків, додавши їх за допомогою методу 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); } }
Вихід:
Q # 35) Написати програму Java 8 для додавання префіксу та суфікса до рядка?
Відповідь: У цій програмі ми маємо “,” як роздільник між двома різними рядками. Крім того, ми надали дужки “(” та “)” як префікс та суфікс. Потім п’ять різних рядків об’єднуються, додаючи їх за допомогою методу 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 програмних запитань та відповідей на програмування
- 40 найкращих запитань та відповідей на інтерв’ю J2EE, які слід прочитати
- Запитання для інтерв’ю у Spock (найпопулярніші)
- 25 найкращих запитань та відповідей на інтерв’ю для спритного тестування
- Найкращі 32 запитання та відповіді на інтерв’ю на етапі обробки даних