Автор оригинала: Pankaj Kumar.
В этом посте мы обсудим некоторые важные вопросы для интервью Java SE 8 с ответами. Я напишу еще один пост, чтобы обсудить оставшиеся вопросы для интервью Java SE 8.
Вопросы для интервью на Java 8
- Зачем нам снова нужно переходить на Java?
- Новые функции Java SE 8?
- Преимущества новых функций Java SE 8?
- Что такое Лямбда-выражение?
- Каковы три части лямбда-выражения? Каков тип лямбда-выражения?
- Что такое Функциональный интерфейс? Что такое интерфейс SAM?
- Можно ли определить свой собственный функциональный интерфейс? Что такое @functional interface? Каковы правила определения Функционального интерфейса?
- Является ли аннотация @functional Interface обязательной для определения функционального интерфейса? В чем польза аннотации @functional Interface? Зачем нам нужны функциональные интерфейсы в Java?
- Когда мы перейдем к потоковому API Java 8? Почему нам нужно использовать Java 8 Stream API в наших проектах?
- Объясните различия между API сбора и API потока?
- Что такое разделитель в Java SE 8?Различия между итератором и разделителем в Java SE 8?
- Что является необязательным в Java 8? В чем польза необязательного?Преимущества Java 8 Необязательно?
- Что такое вывод типа? Доступен ли вывод типов в более старых версиях, таких как Java 7 и до 7, или он доступен только в Java SE 8?
Вопросы и ответы для интервью на Java 8
В этом разделе мы рассмотрим каждый вопрос из предыдущего раздела и ответим на него с подробным описанием. Если вам нужна дополнительная информация и примеры, пожалуйста, просмотрите предыдущие публикации Java SE 8, доступные в JournalDEV.
Зачем нам снова нужно переходить на Java?
Корпорация Oracle представила множество новых концепций в Java SE 8, чтобы предоставить следующие преимущества:
- Для Эффективного использования современных многоядерных Процессоров
- Для использования функций FP
В последнее время мы можем наблюдать кардинальные изменения в оборудовании. В настоящее время все системы используют многоядерные процессоры (2,4,8,16-ядерные и т.д.) Для развертывания и запуска своих приложений. Нам нужны новые конструкции программирования на Java, чтобы эффективно использовать эти многоядерные процессоры для разработки приложений с высокой параллельностью и высокой масштабируемостью.
Корпорация Oracle представила множество концепций FP(функционального программирования) в рамках Java SE 8, чтобы использовать преимущества FP.
Новые функции Java SE 8?
- Лямбда-выражения
- Функциональные Интерфейсы
- Потоковый API
- API даты и времени
- Методы интерфейса по умолчанию и Статические методы
- Разделитель
- Ссылки на методы и конструкторы
- Улучшения API коллекций
- Усовершенствования утилит параллелизма
- Усовершенствования платформы Fork/Join
- Внутренняя Итерация
- Операции параллельного массива и параллельного сбора
- Необязательный
- Введите Аннотации и повторяемые аннотации
- Отражение Параметров метода
- Кодирование и декодирование Base64
- Улучшения ввода-вывода и NO2
- Движок Nashorn JavaScript
- Усовершенствования javac
- Изменения в JVM
- Компактные профили Java 8: compact1,compact2,compact3
- JDBC 4.2
- JAXP 1.6
- Java DB 10.10
- Сетевой
- Изменения в системе Безопасности
Преимущества новых функций Java SE 8?
Мы можем получить следующие преимущества от новых функций Java SE 8:
- Более лаконичный и читаемый код
- Более многоразовый код
- Более проверяемый и поддерживаемый код
- Очень параллельный и масштабируемый код
- Напишите Параллельный Код
- Операции, подобные Записи базы данных
- Приложения с более высокой Производительностью
- Более продуктивный код
Что такое Лямбда-выражение?
Лямбда-выражение-это анонимная функция, которая принимает набор входных параметров и возвращает результаты.
Лямбда-выражение-это блок кода без какого-либо имени, с параметрами или без параметров и с результатами или без результатов. Этот блок кода выполняется по требованию.
Каковы три части лямбда-выражения? Каков тип лямбда-выражения?
Лямбда-выражение содержит 3 части:
- Список параметров
- Оператор Лямбда-стрелки
- Тело Лямбда-выражения
Лямбда-выражение может содержать ноль или один или несколько параметров. Это необязательно.
“->” известен как оператор Лямбда-стрелки. Он разделяет список параметров и тело.
Тип “Journal Dev” – java.lang.Строка. Тип “true” является логическим. Точно так же, каков тип лямбда-выражения? Тип лямбда – выражения-это функциональный интерфейс .
Пример:- Каков тип следующего лямбда-выражения?
() -> System.out.println("Hello World");
Это лямбда-выражение не имеет параметров и не возвращает никаких результатов. Итак, это тип “java.lang.Работоспособный” Функциональный Интерфейс.
Что такое Функциональный интерфейс? Что такое интерфейс SAM?
Функциональный интерфейс-это интерфейс, который содержит один и только один абстрактный метод. Функциональный интерфейс также известен как интерфейс SAM, поскольку он содержит только один абстрактный метод.
Интерфейс SAM расшифровывается как Единый интерфейс абстрактного метода. API Java SE 8 определил множество функциональных интерфейсов.
Можно ли определить свой собственный функциональный интерфейс? Что такое @functional interface? Каковы правила определения Функционального интерфейса?
Да, можно определить наши собственные функциональные интерфейсы. Мы используем аннотацию @Functional Interface Java SE 8 для обозначения интерфейса как функционального интерфейса.
Нам нужно следовать этим правилам, чтобы определить Функциональный интерфейс:
- Определите интерфейс с одним и только одним абстрактным методом.
- Мы не можем определить более одного абстрактного метода.
- Используйте аннотацию @functional Interface в определении интерфейса.
- Мы можем определить любое количество других методов, таких как методы по умолчанию, статические методы.
- Если мы переопределим java.lang.Метод класса объектов как абстрактный метод, который не считается абстрактным методом.
Является ли аннотация @functional Interface обязательной для определения функционального интерфейса? В чем польза аннотации @functional Interface? Зачем нам нужны функциональные интерфейсы в Java?
Не обязательно определять функциональный интерфейс с аннотацией @functional Interface. Если мы не хотим, мы можем опустить эту аннотацию. Однако, если мы используем его в определении функционального интерфейса, компилятор Java заставляет использовать один и только один абстрактный метод внутри этого интерфейса.
Зачем нам нужны Функциональные интерфейсы? Тип лямбда-выражения Java SE 8-это функциональный интерфейс. Везде, где мы используем Лямбда-выражения, это означает, что мы используем Функциональные интерфейсы.
Когда мы перейдем к потоковому API Java 8? Почему нам нужно использовать Java 8 Stream API в наших проектах?
Когда наш Java-проект хочет выполнить следующие операции, лучше использовать Java 8 Stream API, чтобы получить массу преимуществ:
- Когда мы хотим выполнять Операции, подобные операциям с базой данных. Например, мы хотим выполнить группировку по операциям, порядок по операциям и т. Д.
- Когда хочется выполнять операции лениво.
- Когда мы хотим писать программирование в функциональном стиле.
- Когда мы хотим выполнять параллельные операции.
- Когда требуется использовать внутреннюю итерацию
- Когда мы хотим выполнить конвейерные операции.
- Когда мы хотим добиться лучшей производительности.
Объясните различия между API сбора и API потока?
1.0 | Он представлен в Java SE 8 | Он доступен с Java 1.2 |
2.0 | Он используется для вычисления данных (вычисления на множестве объектов). | Он используется для хранения данных (набора объектов). |
3.0 | Мы не можем использовать разделитель или итератор для перебора элементов. | Мы можем использовать как разделитель, так и итератор для перебора элементов. Мы можем использовать forEach для выполнения действия для каждого элемента этого потока. |
4.0 | API потока используется для обработки элементов коллекции. | Он используется для хранения неограниченного количества элементов. |
5.0 | Stream API использует внутреннюю итерацию для итерации элементов, используя методы forEach. | Как правило, он использует концепцию внешней итерации для итерации таких элементов, как Итератор. |
6.0 | Потоковый объект строится лениво. | Объект коллекции строится с энтузиазмом. |
7.0 | Мы можем добавлять элементы в объект потока без каких-либо предварительных вычислений. Это означает, что потоковые объекты вычисляются по требованию. | Мы добавляем элементы в объект коллекции только после того, как он будет полностью вычислен. |
8.0 | Мы можем повторять и использовать элементы из объекта потока только один раз. | Мы можем повторять и использовать элементы из объекта коллекции любое количество раз. |
Что такое разделитель в Java SE 8?Различия между итератором и разделителем в Java SE 8?
Разделитель расшифровывается как Разделяемый итератор. Он недавно представлен корпорацией Oracle как часть Java SE 8. Как и Итератор и листератор, он также является одним из интерфейсов итератора.
1.0 | Он доступен начиная с Java 1.2. | Он представлен в Java SE 8. |
2.0 | Нерасщепляемый Итератор | Разделяемый Итератор |
3.0 | Он используется для сбора API. | Он используется в потоковом API. |
4.0 | Он использует концепцию внешней итерации для повторения коллекций. | Он использует концепцию внутренней итерации для повторения потоков. |
5.0 | Мы можем использовать итератор для повторения коллекций только в последовательном порядке. | Мы можем использовать разделитель для итерации потоков в параллельном и последовательном порядке. |
6.0 | Мы можем получить итератор, вызвав метод iterator() для объекта коллекции. | Мы можем получить Spliterator, вызвав метод spliterator() для объекта Stream. |
7.0 | Важные методы: next(), hasNext() | Важный метод: попробуйте Заранее() |
Что является необязательным в Java 8? В чем польза необязательного?Преимущества Java 8 Необязательно?
Необязательно: Необязательно-это последний класс, представленный как часть Java SE 8. Он определен в пакете java.util.
Он используется для представления необязательных значений, которые либо существуют, либо не существуют. Он может содержать либо одно значение, либо нулевое значение. Если он содержит значение, мы можем его получить. В противном случае мы ничего не получим.
Это ограниченная коллекция, то есть она содержит не более одного элемента. Это альтернатива значению “null”.
Основным преимуществом опции является:
- Он используется для того, чтобы избежать нулевых проверок.
- Он используется, чтобы избежать “исключения NullPointerException”.
Что такое вывод типа? Доступен ли вывод типов в более старых версиях, таких как Java 7 и до 7, или он доступен только в Java SE 8?
Вывод типа означает определение типа компилятором во время компиляции.
Это не новая функция в Java SE 8. Он доступен в Java 7 и до Java 7 тоже.
Перед Java 7:- Давайте рассмотрим массивы Java. Определите строку массива со значениями, как показано ниже:
String str[] = { "Java 7", "Java 8", "Java 9" };
Здесь мы присвоили некоторые строковые значения с правой стороны, но не определили его тип. Компилятор Java автоматически определяет его тип и создает строку массива.
Java 7: Корпорация Oracle представила новую функцию “Алмазный оператор” в Java SE 7, чтобы избежать ненужного определения типов в универсальных системах.
Map> customerInfoByCity = new HashMap<>();
Здесь мы не определили информацию о типе с правой стороны, просто определили оператор Diamond Java SE 7.
Java SE 8: Корпорация Oracle значительно расширила концепцию вывода типов в Java SE 8. Мы используем эту концепцию для определения Лямбда-выражений, Функций, Ссылок на методы и т.д.
ToIntBiFunctionadd = (a,b) -> a + b;
Здесь компилятор Java наблюдает за определением типа, доступным слева, и определяет тип параметров лямбда-выражения a и b как целые числа.
Это все о вопросах для интервью Java 8.
Я обсудил некоторые вопросы для интервью Java SE 8 в этом посте и буду обсуждать еще несколько вопросов для интервью Java SE 8 в своих следующих постах.
Пожалуйста, напишите мне комментарий, если вам нравится мой пост или у вас есть какие-либо вопросы/предложения.