35 + Java 8 въпроса и отговора за интервю (2025)
Независимо дали е техник или друг професионалист, интервютата винаги изхвърлят адреналина от нервността. Въпреки това, за да се откроите от тълпата, е важно да излъскате уменията си и да заложите на способностите си. Освен това, имайки ръка върху често задаваните Java 8 въпроса и отговора за интервю могат да ви помогнат.
Затова се задълбочете в тези въпроси за интервю за java 8 за опитни и начинаещи, за да се справите с предстоящите си интервюта.
Java 8 въпроса за интервю за първокурсници и опитни
1) Java 8 попада в коя програмна парадигма?
Java 8 попада в следната програмна парадигма:
- Обектно или класово ориентиран език за програмиране.
- Език за функционално програмиране.
- Определен процедурен език за програмиране.
- Език за логическо програмиране.
2) Защо трябва да се използва незадължителният клас?
Незадължителният клас е нововъведен клас контейнер, който е полезен при демонстриране на съществуващите или несъществуващите незадължителни стойности. Основното му предимство е да избягва проверките за нулеви и невалидни и улеснява методите, полезни при проверка на съществуването на стойност за определена променлива.
3) Назовете няколко скорошни функции, въведени в Java 8.
По-долу са най-новите функции, въведени в Java 8:
- Ламбда изрази: Тя е Java функция, която можете да споделите или да посочите като обект.
- Намеса на метода: Той използва функцията като критерий за прилагане на метод.
- Функционална намеса: Всяка функционална намеса е свързана с единичен абстрактен метод, който е известен като функционален метод.
- Метод по подразбиране: Полезно е при внедряване на методи в интерфейсите, които помагат за активиране на потенциала за „еволюция на интерфейса“.
- API за дата и час: Това е подобрена, но вдъхновена версия на API за време на Java, за да се справи с недостатъците на последната версия.
- API поток се нарича абстрактен слой, който помага за конвейерирането на данните за обработка.
- По желание: Класът обвивка е полезен при проверка на нулевите стойности и обработка на допълнителни данни.
- JavaСкрипт и Nashorn Engine: Това е подобрената версия на JavaScript Engine, който е полезен за активиране на неговата функционалност в Java, заменяйки Rhino.
4) Посочете предимствата от използването на java 8
Ето някои предимства от използването Java 8:
- Помага при създаването на приложения много по-бързо и по-лесен начин.
- Осигурява много стабилна среда за разработчиците.
- Кратки, многократно използвани и лесни за разбиране кодове.
- Подобрена и ефективна поддръжка.
- Лесен за пренасяне в различни операционни системи.
- Минимални типови кодове.
5) Какво е колекция и как се различава от поток?
Колекцията е база данни в паметта, която записва всички стойности според текущата структура на данните. Така че, преди да го добавите към колекцията, е важно да изчислите всеки от тях. Докато потокът е визуално фиксирана структура от данни, където можем да изчислим елементите според нашите нужди.
6) Какво представлява изразът Lambada?
Ламбада изразът е вид функция, която няма име и понякога се нарича анонимна функция, защото няма собствен тип информация. Можете да го използвате според вашите нужди и е много полезно при повтаряне, филтриране и извличане на всякакви данни от колекцията.
Пример:
import java. util.Arrays; import java.util.List; import java.util.stream.Collectors; public class LambdaExpressionExample { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave"); List<String> filteredNames = names.stream() .filter(name -> name.startsWith("C")) .map(name -> name.toUpperCase()) .collect(Collectors.toList()); System.out.println(filteredNames); } }
Изход:
Charlie
7) Дефинирайте конвейерната обработка на потока
Конвейеризацията на потока е метод за групиране на различни операции като цяло. Можете да постигнете това, като категоризирате неговите поточни операции на две части. Междинни и крайни операции.
Всеки път, когато се изпълнява междинна операция, тя връща екземпляр обратно към конвейера на потока. Следователно всеки потребител може да настрои ирационален брой междинни операции, за да рационализира данните и в крайна сметка да формира тръбопровод за обработка.
Освен това, за да прекратите тръбопроводите, е необходимо да имате терминална операция в края на процеса.
8) В какво са предикат и потребител Java 8?
Предикатът е функционален интерфейс, който обикновено получава аргументи и извлича булева стойност. Можете да го използвате, за да приложите филтър за колекция от обекти.
От друга страна, потребителят се нарича вграден функционален интерфейс, открит в Java.util.function пакет. Можете да го използвате, за да консумирате всеки обект и той приема входната стойност и не издава нищо.
9) Защо методът peek () се използва в Java 8?
Методът peek() помага за поддръжка на отстраняване на грешки, когато човек иска да забележи елементите, тъй като те са склонни да текат от конкретна точка в конвейера. Това е представяне на нашето наблюдение как преминава всеки елемент.
Синтаксис: public Object peek()
10) Какво ви прави идеалния кандидат за Java роля на разработчик?
Ето някои важни качества, които могат да ви направят идеален кандидат за Java роля на разработчик:
- Трябва да имате способността да пишете ясни, лесни за разбиране и ефективни кодове.
- Дълбоко разбиране на моделите и концепциите на „OOP или обектно-ориентирано програмиране"
- Добро познаване на различни архитектурни и дизайнерски модели.
- Запознаване с Java модели на едновременност.
- Опит и познания за работа с различни рамки за уеб приложения като напр Spark и Игра.
- Фундаментални знания за Java Виртуална машина или JVM, нейните недостатъци, заобиколно решение и др.
- Добър опит в използването на вградени и външни бази данни.
11) Обяснете „Функционалния интерфейс“.
Интерфейс само с един абстракт се нарича функционален интерфейс. Известен е още като Единичен абстрактен метод или SAM. Въпреки това анотацията @FunctionalInterface не е задължителна и може да се използва дори и да не е там. Той се разширява към другия интерфейс, ако няма абстракт.
12) Защо са необходими статични методи Java 8?
Препратката към статичен метод се нарича помощен или помощен метод, който е свързан с интерфейс. Това също е клас, който не е свързан с никакъв обект.
Ето причините да използвате статичния метод в Java:
- Полезно за поддържане и разширяване на API.
- Включва ясно и кратко споделяне на отговорностите и не е необходимо да имате един клас помощни програми, за да имате колекциите помощни програми.
- Полезно за поддържане на всички интерфейси в общ интерфейс, а не в конкретни интерфейси.
13) Какви са предимствата на Nashorn?
Nashorn е най-модерният и нов JavaСценарий машина за обработка, въведена през Java 8. По-рано беше базиран на Mozilla Rhino. Той осигурява подобрено съответствие с ECMA JavaСкрипт. Той е по-бърз от предишните си версии.
14) По какво се различават API за събиране и API за поток?
Ето някои важни разлики между API за събиране и API за поток
API за събиране | API поток |
---|---|
API за събиране е използван за първи път в Java 1.2 | Stream API беше въведен за първи път през Java АКО 8 г. |
Можете да го използвате за съхранение на неограничени данни. | Можете да го използвате за изчисляване на неограничени данни. |
API за събиране ви позволява да използвате Iterator и Spilterator за повторение на данните. | Stream API ви позволява да използвате Iterator и Spilterator за повторение на данните. |
API за събиране е лесен за достъп. | API в поток, няма директен начин за достигане до конкретни елементи. |
Освен това улеснява обработката му според вашите нужди. | Stream API може да се обработва само веднъж. |
15) Опишете PermGenSpace и MetaSpace.
PermGen или Постоянното пространство за генериране е уникален тип куп пространство, използвано за проследяване на съхранени метаданни, което сега е премахнато в Java 8.
С тази нова версия съхранението на метаданните ще се извършва в подобна памет, известна като „MetaSpace“. Не е прехвърляем Java Heap памет и е подобрена версия на PermGen в аспекти на автоматична настройка, събиране на боклук и т.н.
16) Как се създава функционален интерфейс в Java 8?
Можете да използвате ламбда израз, за да реализирате абстрактния метод на функционалния интерфейс Java 8. По-долу е пример за кодиране на същото:
Пример
import java.util.function.Consumer; public class FunctionalInterfaceExample { public static void main(String[] args) { Consumer<String> printer = System.out::println; printer.accept("Hello, world!"); } }
Изход:
Hello, world!
17) Какви са разликите и приликите между функцията и предиката в Java 8?
Ето разликите между функция и предикат в Java 8:
- Функцията е полезна при трансформация, докато предикатът може да се използва за тестване на всяко условие.
- Функцията може да получи аргумент и да даде резултат, докато предикатът също може да получи аргумент, но издаде само булевата стойност.
- Функцията се означава с , а Предикатът се обозначава само с , където T е типът на функцията, а R е резултатът.
По-долу са приликите между функция и предикат:
- И функцията, и предикатът са функционални интерфейси.
- И функцията, и предикатът са функции с един аргумент.
18) Обяснете разликата между skip(long) и limit(long), като използвате пример.
Прескачането (дълго) е междинна операция, която извлича остатъчните елементи след елиминирането на първоначалните n елемента на конкретен поток.
Пример:
import java.util.Arrays; import java.util.List; public class SkipExample { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave", "Eve"); // Create a stream from the names list names.stream() // Skip the first two elements of the stream .skip(2) // Print the remaining elements to the console .forEach(System.out::println); } }
Изход:
Charlie Dave Eve
Ограничението (дълго) извлича потока от елементи с определен размер
Пример:
import java.util.Arrays; import java.util.List; public class LimitExample { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave", "Eve"); // Create a stream from the names list names.stream() // Limit the stream to the first three elements .limit(3) // Print the elements to the console .forEach(System.out::println); } }
Изход:
AliceBob Charlie
19) Коя ситуация е най-подходяща за използване на API за поток Java 8?
Можете да използвате API за поток в Java 8. Има нужда от следните операции:
- Можете да извършвате паралелна обработка.
- За изпълнение на лениви операции
- За извършване на операции с бази данни
- Използвайте за вътрешни итерации.
- За писане на програмиране във функционален стил
- Можете да използвате за използване на конвейерни операции.
20) Каква е функцията на Type Inference?
Изводът за тип помага на компилатора при идентифицирането или разпознаването на типовете аргументи, като просто има общ преглед на съответната декларация и извикване на метод.
21) Кой е най-лесният начин за идентифициране и премахване на дублиращи се елементи от списък в Java 8?
Най-лесният начин за идентифициране и премахване на дублиращите се елементи е чрез използване на операцията поток и извършване на събиране, последвано от използването на метода Collections.toSet().
22) Какви са насоките за функционален интерфейс?
По-долу са насоките за функционален интерфейс, който е сред най-търсените Java 8 програмни въпроса:
- Трябва да има само един абстрактен метод.
- Можете да имате колкото се може повече методи по подразбиране, тъй като не е абстрактен и изпълнението се дава по-рано от същото.
- Абстрактен метод, основният елемент на публичните методи от Java.lang, е известен във функционален интерфейс. Object все още се счита за полезен интерфейс.
Забележка: Обяснението за това е, че всеки клас на изпълнение за този интерфейс може да има имплементация за този абстрактен метод, който е дефиниран от самия клас на изпълнение или е взет от суперклас.
23) Правете разлика между сплитератор и итератор.
Ето някои разлики между сплитератор и итератор:
Сплитератор | Итератор |
---|---|
Въведено е през Java 1.2. | Въведено е през Java 1.8. |
Той само повтаря всички елементи поотделно. | Той напречва всички елементи поотделно, както и в насипно състояние. |
Той действа като итератор за пълна колекция от API. | Той действа като итератор както за поток, така и за API за събиране. |
Няма да поддържа паралелно програмиране. | Поддържа паралелно програмиране. |
24) Как можете да извикате метод по подразбиране на интерфейс в клас?
Ключовата дума по подразбиране, която присъства в началото на сигнатурата на метода, се използва за обозначаване на декларация на метод в интерфейс като метод по подразбиране. Можете да пропуснете публичния модификатор, защото всяка декларация на метод в интерфейс, включително методите по подразбиране, автоматично е публична.
25) Дефинирайте метода по подразбиране. Кога можете да го използвате?
Методът по подразбиране присъства в интерфейса и включва имплементация. Този метод е полезен при добавяне на нова функционалност към даден интерфейс, като същевременно запазва обратната съвместимост заедно с неговите класове, които вече са внедрени в интерфейс.
26) Как се създават потоци в Java, и това ли е сред най-задаваните въпроси за интервю за поток на java 8?
Потоци Java описват последователността от обекти от конкретен източник, като колекция, която ще поддържа агрегатни операции. Можете да го използвате за събиране, филтриране, отпечатване и промяна на една структура от данни в друга.
Ето примерите как да създавате потоци в Java:
import java.util.stream.Stream; public class StreamExample { public static void main(String[] args) { Stream<String> stream = Stream.of("Alice", "Bob", "Charlie", "Dave", "Eve"); stream.forEach(System.out::println); } }
Изход:
Alice Bob Charlie Dave Eve
27) Какво представляват потоковите операции Map и FlatMap?
Map и FlatMap се считат за операции на поток и междинен поток, които приемат функция. Той също така помага при прилагането на дадената функция към останалите елементи.
28) Защо трябва да променяме Java език за програмиране често?
Трябва да променим Java език за програмиране често поради следните причини:
- Можете да използвате функциите на Функционално програмиране.
- За да използвате ефективно най-новата технология на многоядрените процесори.
29) Споменете няколко функционални интерфейса, използвани в Java 8.
По-долу са дадени няколко функционални интерфейса, използвани в Java 8:
- ДвоенOperaTor
- Потребител
- функция
- Доставчик
- УнарOperaTor
- BiFunction
- Предикат
30) Кои са основните API класове за час и дата?
По-долу са изброени основните API класове за час и дата, които се използват в Java 8:
- Местно време
- LocalDateTime
- Местна дата
31) Дайте основната структура/синтаксис на ламбда израза.
Основната структура/синтаксис на ламбда израза е:
(arugument - list) - > {body}
Тук
- Аргумент – списък: Можете да го държите пълен или празен.
- Знак стрелка: Полезно е при свързване на изрази на тялото и аргументи – списък.
- тяло: Състои се от оператори и изрази за ламбда израза.
32) Какви са основните характеристики на Stream?
По-долу са основните характеристики на Stream:
- Тръбопровод
- източник
- Агрегат Operaции
- Последователност на елементите
- Автоматични итерации
33) Кои са най-често срещаните междинни операции?
Някои от най-често срещаните типове междинни изрази са:
- различен ()
- Пропускане (дълго n)
- Филтър (предикат)
- Ограничение (дълго n)
- Карта (функция)
34) Кои са най-често срещаните видове терминални операции?
По-долу са най-често срещаните типове терминални операции:
- Броя
- Намалете
- Min
- AllMatch
- макс
- AnyMatch
- Към масив
35) Какво е препратка към метод в Java 8?
Препратка към метода в Java 8 е начин за позоваване на функционалния интерфейс. Известно е като много по-лесна и ефективна форма на ламбда израз. Когато използвате ламбда изрази, за да посочите метод, можете да го замените с препратката към метода.
36) По какво се различават вътрешните и външните итерации?
По-долу са разликите между вътрешна и външна итерация:
Вътрешна итерация | Външна итерация |
---|---|
Известен е също като пасивен или скрит итератор. | Известен е също като активен или явен итератор. |
Носи се вътрешно върху различни предмети. | Носи се външно върху различни предмети. |
Използва се във функционалното програмиране. | Използва се в обектно-ориентираното програмиране. |
Отчита много по-малко грешки. Кодирането обаче е задължително за него. | Отчита повече грешки. Въпреки това кодирането не е необходимо. |
37) Използвано ли е извеждане на типа в предишни версии на Java?
Java въведен тип смущения в Java 5, но с много ограничен достъп. Но с годините възможностите за намеса на типа се увеличиха и тя е най-добра в Java 8.
38) Запишете а Java 8 програма, която може да намери минималния и максималния брой на потока.
import java.util.Arrays; import java.util.stream.IntStream; public class MinMaxExample { public static void main(String[] args) { int[] numbers = {9, 3, 8, 1, 5, 7, 2, 6, 4}; int min = IntStream.of(numbers).min().getAsInt(); int max = IntStream.of(numbers).max().getAsInt(); System.out.println("Minimum number: " + min); System.out.println("Maximum number: " + max); } }
Изход:
Minimum number: 1 Maximum number: 9
39) Как се свързват множество низове чрез клас StringJoiner?
StringJoiner помага при свързването на един или повече низове и може да се направи чрез конкретен съединител или разделител. Например, човек може да съедини редица низове, като ги раздели със запетая (,).
За създаване на CSV низ може да се генерира пълен път за конкретна директория в Linux, което може да стане чрез присъединяване към низа с помощта на наклонената черта „/“.
40) Коя е най-добрата алтернатива на ламбда изразите в Java 8?
Като цяло ние използваме ламбда изрази, за да създадем анонимни методи, които помагат да се получи желаният резултат. Има обаче случаи, в които ламбда изразите не работят и използват само съществуващ метод.
Така че, за да избегнете това, можете да използвате референтен метод, който може да помогне за получаване на желания резултат. Референцията на метода е изобразена с помощта на символа: (двойно двоеточие).