Вступ до Java 8 Питання та відповіді щодо інтерв'ю

Java 8 - це нова платформа, яка знову виходить з новими бібліотеками та класами. Переважно ці функції зосереджені на тому, щоб мати більш чистий та компактний код. Нові функції, додані в цій версії, можуть бути перелічені як Lambda Expressions, посилання методів, опціональний, функціональний інтерфейс та методи за замовчуванням, Nashorn, Stream та Date API. Необхідність зміни в Java полягала в тому, щоб ефективно використовувати поточні багатоядерні процесори та використовувати функції FP.

Нижче наведено найважливіше питання, яке задають в інтерв'ю:

Тепер, якщо ви шукаєте роботу, пов’язану з Java 8, тоді вам потрібно підготуватися до питань інтерв'ю Java 8 для 2019 року. Це правда, що кожне інтерв'ю відрізняється за різними профілями роботи. Тут ми підготували важливі запитання та відповіді щодо інтерв'ю Java 8, які допоможуть вам досягти успіху в інтерв’ю. Ці питання щодо інтерв'ю поділяються на дві частини:

Частина 1 - Питання для інтерв'ю Java 8 (основні)

Ця перша частина стосується основних запитань та відповідей щодо інтерв'ю Java 8

Q1. Чим відрізняється Java 8 від попередніх версій Java?

Відповідь:
Різні версії Java такі:

  • API дати: це вдосконалений API, який є незмінним API натхнення дати JodaTime.
  • API потоку: це спеціальний ітератор-клас, який допомагає функціонально обробляти колекцію об'єктів.
  • Лямбда-вираз: Це нова мовна функція, яка дозволяє розглядати різні дії, що виконуються як об’єкти.
  • Довідка щодо методу: Це допомагає визначити лямбдаські вирази, посилаючись на різні методи безпосередньо, використовуючи їх імена.
  • Необов’язково: Це спеціальний клас обгортки, який допомагає визначити додаткові функції.
  • Функціональний інтерфейс: це інтерфейс з максимально одним абстрактним методом, і його реалізація забезпечується виразом Ламбда
  • Nashorn Javascript Engine: це двигун на базі Java, який використовується для виконання та оцінки коду JavaScript.

Q2. Чи можливо реалізувати два інтерфейси, що мають метод за замовчуванням з тим самим іменем та підписом? Поясніть на прикладі.

Відповідь:
Це основні запитання щодо інтерв'ю Java 8, задані в інтерв'ю. Розглянемо наступний код з реалізацією двох інтерфейсів
public interface DefaultMethodInterface (
default public void defaultMethod()(
System.out.println("I am in Default method Interface I");
)
)
public interface DefaultMethodInterface2 (
default public void defaultMethod()(
System.out.println("I am in Default method Interface II");
)
)
public class HelloJava8 implements DefaultMethodInterface, DefaultMethodInterface2 (
public static void main(String() args)(
DefaultMethodInterface defMethIn = new HelloJava();
defMethIn.defaultMethod();
)
)

Тут компілятор видає помилку, кажучи, що "Скопіювати методи за замовчуванням". Отже, неможливо реалізувати два інтерфейси з однаковим іменем та підписом.

Q3. Чи можливо визначити власний функціональний інтерфейс? Поясніть правила визначення функціонального інтерфейсу.

Відповідь:
Можна визначити наші власні функціональні інтерфейси. Користувач може використовувати примітку @FunctionalInterface Java SE 8 для позначення інтерфейсу як функціонального інтерфейсу. Наступні правила потрібно пам’ятати при створенні функціонального інтерфейсу.

  1. Потрібно визначити лише один інтерфейс, що містить лише один абстрактний метод
  2. Більше, ніж на абстрактних методах не можна визначити
  3. Користувач повинен використовувати анотацію @FunctionalInterface у визначенні інтерфейсу.
  4. Можна визначити будь-яку кількість різних методів, таких як метод за замовчуванням, статичний метод тощо.
  5. Ми можемо замінити метод класу java.lang.Object як абстрактний метод, і це не вважатиметься абстрактним методом.

Перейдемо до наступного питання щодо інтерв'ю Java 8.

Q4. Що додатково в Java 8? Поясніть його переваги.

Відповідь:
Необов’язково - це заключний клас, який вводиться як частина Java SE 8. Це частина java.util.package. Він може бути використаний для представлення необов'язкових значень, які існують або не існують. Це може мати значення як одне значення або нульове значення. Якщо цей клас містить значення, то ми отримуємо значення ще, ми нічого не отримуємо.
Основні переваги цього класу полягають у тому, що він може використовуватися для уникнення нульових перевірок, а також уникнути "NullPointerException".

Q5. Чи буде наведений нижче код компілюватися без помилок?

Відповідь:
@FunctionalInterface
public interface Function2 (
public V apply(T t, U u);
default void count() (
// increment counter
)
)

Так, цей код буде компілюватися без будь-якої помилки, оскільки він слідує правилу специфікації функціонального інтерфейсу щодо визначення лише одного абстрактного методу. Другий метод, який використовується - це метод за замовчуванням, який не збільшує кількість абстрактних методів.

Частина 2 - Питання щодо інтерв'ю Java 8 (розширено)

Давайте тепер подивимося на передові питання та відповіді щодо інтерв'ю Java 8

Q6. Що таке Нашорн на Яві?

Відповідь:
Це новий двигун обробки Java для платформи Java, який поставляється на Java 8. До тих пір, поки платформа JDK 7 Java не використовувала Rhino як двигун обробки. Це був двигун обробки Javascript. Nashorn забезпечує кращу відповідність нормалізованій специфікації JavaScript ECMA. Він також забезпечує кращу швидкість виконання, ніж попередні версії.

Q7. Яка різниця між предикатом і функцією?

Відповідь:
Обидва це функціональні інтерфейси. Присудок - це функція єдиного аргументу, яка повертає або істинну, або хибну. Цей вираз може бути використаний як цільове призначення для вираження лямбда або будь-якого посилання на метод.
Функція - це також функція одного аргументу, але різниця тут полягає в тому, що вона повертає об'єкт. Тут T являє вхід до функції, а R являє собою тип результату. Обидва вони можуть бути використані як цільове призначення для лямбда-виразів або методів посилань.

Перейдемо до наступного питання щодо інтерв'ю Java 8.

Q8. Поясніть різницю між проміжними та термінальними операціями.

Відповідь:
Потокові операції використовуються для обробки потоків та їх об'єднання. Усі ці операції є або проміжними, або термінальними. Проміжні операції повертають сам Потік і дозволяють здійснювати подальші операції, якщо вони будуть виконані. Ці операції не виконуються одночасно. Ці операції можна виконувати лише для обробки даних, коли є операція терміналу. Щоб назвати кілька операцій, це фільтрування, карта та плоска карта.
Операції на терміналі припиняють трубопровід і ініціюють обробку потоку. Цей потік передається через усі проміжні операції під час роботи терміналу. Ці операції включають в себе "Кожен", зменшення, збір, сума тощо.

Q9. Що таке потоковий конвеєр в Java 8?

Відповідь:
Це розширений Java 8 Інтерв'ю Питання, задані в інтерв'ю. Це концепція з'єднання операцій разом. Цей процес здійснюється розбиттям операцій, які можуть працювати з потоками з двома категоріями проміжних та термінальних операцій. Кожна проміжна операція повертає примірник потоку під час її запуску. Також повинна бути операція терміналу, яка поверне остаточне значення і припинить трубопровід.

Q10. Що таке StringJoiner?

Відповідь:
StringJoiner - це утильовий метод, який використовується для побудови різних рядків із потрібними роздільниками. Це також може допомогти у створенні послідовностей різних символів, розділених роздільниками. Це було введено в Java 8. Різні конструктори: Public StringJoiner (роздільник CharSequence) та Public StringJoiner (роздільник CharSequence, префікс CharSequence, суфікс CharSequence). Нижче наводиться приклад StringJoiner:
StringJoiner strJoiner = new StringJoiner(".");
strJoiner.add("Buggy").add("Bread");
System.out.println(strJoiner); // prints Buggy.Bread

Рекомендована стаття

Це керівництво для переліку питань щодо запитань та відповідей щодо Java 8, щоб кандидат міг легко розбити ці питання щодо інтерв'ю Java 8. Тут, у цій публікації, ми вивчили топ-запитання щодо інтерв'ю Java 8, які часто задаються в інтерв'ю. Ви також можете переглянути наступні статті, щоб дізнатися більше -

  1. Питання для інтерв'ю Java з багатопотоковими запитами
  2. Питання для інтерв'ю Java EE
  3. На жаль, питання щодо інтерв'ю Java
  4. Питання для співбесіди в яві Java
  5. Що нового в Java 8?