Рубрики
Без рубрики

Вопросы для интервью Java 8, вопросы и ответы для интервью java se 8, вопросы для интервью java stream, расширенные ответы на вопросы для интервью с функциями java 8

Вопросы для интервью Java 8, вопросы и ответы для интервью java se 8, вопросы для интервью java stream, расширенные ответы на вопросы для интервью с функциями java 8

Автор оригинала: Pankaj Kumar.

В моем предыдущем посте я обсудил некоторые важные вопросы и ответы на интервью Java SE 8. В этом посте мы обсудим еще несколько вопросов и ответов для интервью Java SE 8.

Прежде чем прочитать этот пост, пожалуйста, просмотрите мой предыдущий пост по адресу: “Вопросы для интервью Java SE 8 (Часть 1) “.

Вопросы для интервью Java SE 8

  1. Что такое внутренняя итерация в Java SE 8?
  2. Различия между Внешней итерацией и Внутренней итерацией?
  3. Каковы основные недостатки внешней итерации?
  4. Каковы основные преимущества внутренней итерации перед внешней итерацией?
  5. В чем основной недостаток внутренней итерации по сравнению с внешней итерацией?
  6. В чем основное преимущество внешней итерации перед Внутренней итерацией?
  7. Когда нам нужно использовать внутреннюю итерацию? Когда нам нужно использовать внешнюю итерацию?
  8. Различия между промежуточными операциями и терминальными операциями потокового API Java 8?
  9. Можно ли обеспечить реализацию методов в интерфейсах Java? Если возможно, как мы их предоставляем?
  10. Что такое метод по умолчанию? Зачем нам нужны методы по умолчанию в интерфейсах Java 8?
  11. Что такое статический метод? Зачем нам нужны статические методы в интерфейсах Java 8?
  12. Различия между функциональным программированием и объектно-ориентированным программированием?
  13. Объясните проблемы старого API даты Java? Каковы преимущества API даты и времени Java 8 по сравнению со старым API даты и API времени Joda?
  14. Зачем нам нужен новый API даты и времени в Java SE 8?Объясните, как API данных и времени Java SE 8 решает проблемы старого API даты Java?
  15. В чем различия между СТАРЫМ API даты Java Java и API даты и времени Java 8?
  16. Что такое множественное наследование? Как Java 8 поддерживает множественное наследование?
  17. В чем проблема с алмазами в интерфейсах из-за методов по умолчанию? Как Java 8 Решает эту проблему?

Java SE 8 Вопросы и ответы для интервью

Что такое внутренняя итерация в Java SE 8?

До Java 8 у нас не было концепции внутренней итерации. В Java 8 появилась новая функция, известная как “Внутренняя итерация”. До Java 8 Язык Java имел только внешнюю итерацию для повторения элементов агрегированного объекта, таких как Коллекции, массивы и т.д.

Внутренняя итерация означает “Повторение агрегированных элементов объекта один за другим внутри с помощью Java API”. Вместо того, чтобы Java-приложение выполняло итерацию извне, мы просим Java API выполнить эту работу внутри.

Различия между Внешней итерацией и Внутренней итерацией?

1.0 Доступно и до Java 8. Он представлен в Java SE 8
2.0 Повторение агрегированных элементов объекта извне. Внутренняя итерация агрегированных элементов объекта (фон).
3.0 Повторяйте элементы, используя для каждого цикла и итераторы, такие как перечисление, Итератор, список. Повторяйте элементы с помощью Java API, например, методом “forEach”.
4.0 Повторение элементов только последовательно и по порядку. Не требуется повторять элементы в последовательном порядке.
5.0 Он следует подходу ООП, который является императивным стилем. Он следует подходу функционального программирования, который является декларативным стилем.
6.0 Он НЕ разделяет должным образом обязанности, то есть определяет как “Что должно быть сделано”, так и “Как это должно быть сделано”. Он определяет только “То, что должно быть сделано”. Не нужно беспокоиться о том, “Как это должно быть сделано”. Java API заботится о том, “Как это сделать”.
7.0 Менее Читаемый Код. Более читаемый код.

Каковы основные недостатки внешней итерации?

Внешняя итерация имеет следующие недостатки:

  • Нам нужно писать код в императивном стиле.
  • Четкого разделения обязанностей не существует. Тесная связь между кодом “Что должно быть сделано” и “Как это должно быть сделано”.
  • Менее Читаемый Код.
  • Более подробный и шаблонный код.
  • Мы должны повторять элементы только в последовательном порядке.
  • Мы должны повторять элементы только в последовательном порядке.

Каковы основные преимущества внутренней итерации перед внешней итерацией?

По сравнению с внешней итерацией Внутренняя итерация имеет следующие преимущества:

  • Поскольку это соответствует функциональному стилю программирования, мы можем писать Декларативный код.
  • Более читаемый и лаконичный код.
  • Избегает написания подробного и шаблонного кода
  • Нет необходимости повторять элементы в последовательном порядке.
  • Он поддерживает параллелизм и параллелизм должным образом.
  • Мы можем писать параллельный код для повышения производительности приложения.
  • Четкое разделение обязанностей. Слабая связь между кодом “Что должно быть сделано” и “Как это должно быть сделано”.
  • Нам нужно писать код только о том, “Что нужно сделать”, а Java API заботится о том, “Как это должно быть сделано”.

В чем основной недостаток внутренней итерации по сравнению с внешней итерацией?

По сравнению с внешней итерацией, внутренняя итерация имеет один существенный недостаток:

  • Во внутренней итерации, поскольку Java API заботится о внутренней итерации элементов, у нас НЕТ контроля над итерацией.

В чем основное преимущество внешней итерации перед Внутренней итерацией?

По сравнению с внутренней итерацией, Внешняя итерация имеет одно важное преимущество:

  • Во внешней итерации, поскольку Java API НЕ заботится об итерационных элементах, у нас есть большой контроль над итерацией.

Когда нам нужно использовать внутреннюю итерацию? Когда нам нужно использовать внешнюю итерацию?

Нам нужно понять ситуации, в которых следует использовать либо Внутреннюю итерацию, либо Внешнюю итерацию.

  • Когда нам нужно больше контроля над итерацией, мы можем использовать внешнюю итерацию.
  • Когда нам не нужно больше контролировать итерацию, мы можем использовать Внутреннюю итерацию.
  • Когда нам нужно разрабатывать приложения с высокой степенью параллелизма и параллельные приложения , и мы, мы должны использовать внутреннюю итерацию.

Различия между промежуточными операциями и терминальными операциями потокового API Java 8?

1.0 Операции терминала потока оцениваются самостоятельно. Не нужна помощь в других операциях. Промежуточные операции потока не оцениваются до тех пор, пока мы не свяжем их с операцией терминала потока.
2.0 Вывод Промежуточных операций не является потоком. Что-то еще, кроме Ручья. Вывод промежуточных операций-это другой поток.
3.0 Терминальные операции оцениваются с энтузиазмом. Промежуточные операции оцениваются лениво.
4.0 Мы НЕ можем связывать потоковые Терминальные операции. Мы можем связать в цепочку любое количество промежуточных операций потока.
5.0 Мы можем использовать только одну операцию терминала потока для каждого оператора. Мы можем использовать любое количество промежуточных операций потока для каждой инструкции.

Можно ли обеспечить реализацию методов в интерфейсах Java? Если возможно, как мы их предоставляем?

В Java 7 или более ранних версиях невозможно обеспечить реализацию методов в интерфейсах. Java 8 и далее, это возможно.

В Java SE 8 мы можем предоставить реализации методов в интерфейсах, используя следующие две новые концепции:

  • Методы по умолчанию
  • Статические методы

Что такое метод по умолчанию? Зачем нам нужны методы по умолчанию в интерфейсах Java 8?

Метод по умолчанию-это метод, который реализован в интерфейсе с ключевым словом “по умолчанию”. Это новая функция, представленная в Java SE 8.

Нам нужны методы по умолчанию по следующим причинам:

  • Это позволяет нам обеспечить реализацию метода в интерфейсах.
  • Чтобы добавить новую функциональность в Интерфейс, не нарушая классы, реализующие этот интерфейс.
  • Чтобы обеспечить элегантную Функцию Обратной совместимости.
  • Для удобства расширения существующей функциональности.
  • Для удобства обслуживания существующей функциональности.

Что такое статический метод? Зачем нам нужны статические методы в интерфейсах Java 8?

Статический метод-это служебный метод или вспомогательный метод, который связан с классом (или интерфейсом). Он не связан ни с каким объектом.

Нам нужны статические методы по следующим причинам:

  • Мы можем сохранить вспомогательные или служебные методы, специфичные для интерфейса, в том же интерфейсе, а не в отдельном служебном классе.
  • Нам не нужны отдельные служебные классы, такие как Коллекции, массивы и т.д., Чтобы сохранить служебные методы.
  • Четкое разделение обязанностей. То есть нам не нужен один служебный класс, чтобы сохранить все служебные методы API сбора, такие как Коллекции и т. Д.
  • Легко расширить API.
  • Простота в обслуживании API.

Различия между функциональным программированием и объектно-ориентированным программированием?

Существует Состояние Не существует состояния
Использует изменяемые данные Использует неизменяемые данные
Это следует модели Императивного программирования Он следует Декларативной модели программирования
Модель программирования с отслеживанием состояния Модель программирования без сохранения состояния
Основное внимание уделяется “Как у вас дела” Основное внимание уделяется: “Что вы делаете”
Плохо подходит для параллельного (параллельного) программирования Хорошо подходит для параллельного (параллельного) программирования
НЕ подходит для обработки и анализа больших данных Подходит для обработки и анализа больших данных
Это нарушает концепцию инкапсуляции Поддерживает чистую инкапсуляцию
Методы с побочными эффектами Функции без побочных эффектов
Объекты являются первоклассными гражданами Функции являются гражданами первого класса
Основной единицей манипулирования являются Объекты(Экземпляры классов). Основным блоком манипуляции является “Функция”
Управление Потоком: Циклы, Условные операторы Управление потоком: Вызовы функций, Вызовы функций с рекурсией
Он использует концепцию “Цикла” для повторения данных сбора. Например:-Для-каждого цикла в Java Он использует концепцию “рекурсии” для повторения данных сбора.
Порядок исполнения является обязательным и очень важным. Порядок исполнения имеет меньшее значение.
Поддерживает только “Абстракцию над данными”. Поддерживает как “Абстракцию над данными”, так и “Абстракцию над поведением”.
Мы используем ООП, когда у нас мало операций с большим количеством вещей. Например: Вещи-это классы, а операции-методы в Java. Мы используем FP, когда у нас мало вещей с большим количеством операций.

ПРИМЕЧАНИЕ:- Для получения дополнительной информации о сравнениях FP, IP и ООП, пожалуйста, просмотрите мой предыдущий пост по адресу: “Сравните FP, ООП(IP) “

Объясните проблемы старого API даты Java? Каковы преимущества API даты и времени Java 8 по сравнению со старым API даты и API времени Joda?

СТАРЫЙ Java API даты Java означает API данных, доступный до Java SE 8, то есть Дата, календарь, SimpleDateFormat и т.д.

API старой даты Java имеет следующие проблемы или недостатки по сравнению с API даты и времени Java 8 и API времени Joda.

  • Большая часть API устарела.
  • Меньшая Читабельность.
  • java.util.Дата изменчива и небезопасна для потоков.
  • java.text.SimpleDateFormat не является потокобезопасным.
  • Меньшая Производительность.

API даты и времени Java SE 8 имеет следующие преимущества по сравнению со старым API даты Java.

  • Очень прост в использовании.
  • Удобочитаемый синтаксис, который обеспечивает Большую Читабельность.
  • Весь API является потокобезопасным.
  • Лучшая производительность.

Зачем нам нужен новый API даты и времени в Java SE 8?Объясните, как API данных и времени Java SE 8 решает проблемы старого API даты Java?

Нам нужен API даты и времени Java 8 для разработки высокопроизводительных, Потокобезопасных и масштабируемых Java-приложений.

API даты и времени Java 8 решает все старые проблемы API даты Java, следуя принципам неизменяемости и потокобезопасности.

В чем различия между СТАРЫМ API даты Java Java и API даты и времени Java 8?

Различия между СТАРЫМ API даты Java Java и API даты и времени Java 8:

1.0 Доступно и до Java 8. Он представлен в Java SE 8
2.0 Не Потокобезопасно. Потокобезопасно.
3.0 Изменяемый API. Неизменяемый API.
4.0 Меньшая Производительность. Лучшая производительность.
5.0 Меньшая Читабельность. Большая Читабельность.
6.0 Его не рекомендуется использовать, так как он устарел. Его всегда рекомендуется использовать.
7.0 Не Поддается Расширению. Легко расширяется.
8.0 Он определяет значения месяцев от 0 до 11, то есть. Он определяет значения месяцев от 1 до 12, то есть.
9.0 Это старый API. Это новый API.

Что такое множественное наследование? Как Java 8 поддерживает множественное наследование?

Множественное наследование означает, что класс может наследовать или расширять характеристики и функции более чем от одного родительского класса.

В Java 7 или более ранних версиях множественное наследование невозможно, поскольку Java следует правилу “Класс должен расширять один и только один класс или абстрактный класс”. Однако с помощью интерфейса можно обеспечить наследование нескольких реализаций, поскольку Java следует правилу “Класс может расширять любое количество интерфейсов”.

Однако Java 8 поддерживает “Реализацию методов в интерфейсах”, вводя новые функции: методы по умолчанию в интерфейсе. Из-за этой функции Java 8 поддерживает множественное наследование с некоторыми ограничениями.

В чем проблема с алмазами в интерфейсах из-за методов по умолчанию? Как Java 8 Решает эту проблему?

Методы Java 8 по умолчанию могут создавать проблемы с алмазами, когда класс реализует несколько интерфейсов. Это происходит, когда класс расширяет несколько интерфейсов с одной и той же реализацией метода (метод по умолчанию).

Пример кода Java SE 8, чтобы показать проблему Diamond с методами интерфейса по умолчанию.

interface A {
	default void display() {
		System.out.println("A");
	}
}

interface B extends A {
	default void display() {
		System.out.println("B");
	}
}

interface C extends A {
	default void display() {
		System.out.println("C");
	}
}

class D implements B, C {
}

В приведенном выше фрагменте кода класс D выдает ошибку во время компиляции, поскольку “Повторяющиеся методы по умолчанию с именем display с параметрами () и () наследуются от типов C и B”. Это связано с тем, что компилятор Java запутается в том, какой метод отображения() использовать в классе D. Класс D наследует метод отображения() от обоих интерфейсов B и C. Для решения этой проблемы Java 8 предложила следующее решение.

class D implements B, C {

	@Override
	public void display() {
		B.super.display();
	}
	
}

Это B. super.display(); решит эту проблему с алмазами. Если вы хотите использовать метод интерфейса C по умолчанию, используйте C. super.display(); .

Это все о вопросах для интервью Java 8. Мы обсудим еще несколько вопросов для интервью Java SE 8 в моих следующих постах.

Пожалуйста, напишите мне комментарий, если вам нравится мой пост или у вас есть какие-либо вопросы/предложения.