Функциональные интерфейсы и Stream API
Повтори обработку данных через Stream API: лямбды, ссылки на методы, функциональные интерфейсы и сбор результатов. Вопросы помогают разобрать, как устроен такой код и как объяснить его поведение на собеседовании.
Вопросы
- Что такое функциональный интерфейс?
- Для чего нужна аннотация @FunctionalInterface?
- Какие встроенные функциональные интерфейсы вы знаете?
- Что такое ссылка на метод?
- Что такое лямбда-выражение? Чем его можно заменить?
- Что такое Stream API? Для чего нужны стримы?
- Почему Stream называют ленивым?
- Какие существуют способы создания стрима?
- Как из коллекции создать стрим?
- Какие промежуточные методы в стримах вы знаете?
- Расскажите про метод peek().
- Расскажите про метод map().
- Расскажите про метод flatMap().
- Чем отличаются методы map() и flatMap().
- Расскажите про метод filter()
- Расскажите про метод limit()
- Расскажите про метод skip()
- Расскажите про метод sorted()
- Расскажите про метод distinct()
- Какие терминальные методы в стримах вы знаете?
- Расскажите про метод collect()
- Расскажите про метод reduce()
- Расскажите про класс Collectors и его методы.
- Как работают параллельные стримы?
- Что такое IntStream и DoubleStream?