Собеседование Стрим АПИ. Как можно классифицировать стримы в разных контекстах 4
Скачать 21.1 Kb.
|
Оглавление Стримы 3 Что такое стримы? Для чего они нужны? Когда их лучше использовать? Какие бывают стримы: знать 3 группы: 1) конечные и бесконечные, 2) последовательные и параллельные 3) объектные и примитивные спрашивает про параллельные, промежуточные и терминальные (конечные и бесконечные это) 3 Как можно классифицировать стримы в разных контекстах? 4 Чем является Stream в контексте Java? 4 В каком пакете находится Stream? 4 Чем Stream отличается от итератора? 4 Сравнение стримов с коллекцией 4 Из каких частей состоит использование стримов? 4 В каком случае нужно закрывать стрим? 4 Первый этап работы со стримом? 4 Откуда можно получить стрим? 4 Что такое ленивая инициализация стрима? 4 Сколько раз можно вызывать терминльную операцию? Две терминальные операции в одном выражении? 4 Что такое терминальная операция? 4 Для чего терминальные операции? Какие бывают и что делают? 4 Что возвращают промежуточные операции над стримом? 4 Перечислить основные промежуточные операции. Их предназначение. 4 Терминальные и промежуточные опирации? пример 4 Для чего нужны параллельные стримы? 4 Как получить стрим диапазона чисел? 4 Можно ли конкатенировать стримы? если да то каким методом? 4 Можно ли получить пустой стрим? если да то каким методом? 4 Как получить стрим из массива? 4 Какой второй этап работы со стримом? 4 Что такое коллекторы? 4 В чем разница map и flatMap? 4 еще методы peek и forEach - в чем разница: первый промежуточный, второй - терминальный, ну и функционал какой у каждого? 4 В чем разница между foreach и foreachordered? 4 Может ли стрим использоваться повторно? 4 Что такое метод референс? 4 Разница методов .list() и walk() Что такое саплер-поставщик? 4 В чем разница методов range и rangeClosed? 4 Лямбда: 4 К каким переменным есть доступ из лямбда-выражения? 5 К каким переменным и как можно обращаться в теле лямда-выражениях?(к каким переменным можно обращаться внутри лямбды: переменные внутри метода (эффективно-финальные), static переменные класса, переменные интерфейса (с которым лямбда работает)) 5 Что такое лямбда выражение и ссылка на метод. Как они связаны с анонимным классом? 5 ссылка на метод - ну и в каком виде передается: имя класса:: имя стат метода (для статического метода); объект класса:: имя метода (для метода экземпляра); название класса:: new(для конструктора) 5 как взаимосвязаны лямбда и функциональный интерфейс? 5 Может ли лямбда-выражение быть в несколько строк? 5 Анонимные классы: 5 Любой анонимный класс можно заменить на лямбду? 5 Что такое анонимный класс? как создать, где применяются, особенно как создать экземпляр. 5 Функциональные интерфейсы: 5 Что такое функциональный интерфейс и для чего он нужен и зачем были добавлены? 5 Какой аннотацией помечается функциональный интерфейс? 5 Может ли функциональный интерфейс содержать что-то кроме абстрактного метода? 5 Сколько дефолтных методов и статических методов, сртатических полей в интерфейсе? 5 Что такое default методы в интерфейсе и для чего они были введены? 5 Где находятся функциональные интерфейсы? 5 Перечислить основные семейства функ.интерфейсов? Что они принимают и что возвращают? 5 Какие есть способы инстацировать функциональные интерфейсы? 5 Расскажите про Comparator и Comparable? 5 Отличие BinaryOperator от Function? 5 Все способы реализации функционального интерфейса? 5 Разное: 6 императивный vs декларативный подход 6 функциональное программирование что такое,плюсы минусы, где применяется 6 Objects (зачем нужен) 6 Стримы Что такое стримы? Для чего они нужны? Когда их лучше использовать? Какие бывают стримы: знать 3 группы: 1) конечные и бесконечные, 2) последовательные и параллельные 3) объектные и примитивные спрашивает про параллельные, промежуточные и терминальные (конечные и бесконечные это) Stream API — это новый способ работать со структурами данных в функциональном стиле. Stream (поток) API (описание способов, которыми одна компьютерная программа может взаимодействовать с другой программой) — это по своей сути поток данных. Пакет java.util.stream – это средства потоковой обработки данных в функциональном стиле. Они не имеют ничего общего (кроме названия) с потоками ввода-вывода. Типичные применения – конвертация, переупаковка, и агрегация данных Stream API любит неизменяемые данные. Если вы хотите поменять существующие структуры данных, а не создать новые, вам нужно что-то другое. Посмотрите в сторону новых стандартных методов (например, List.replaceAll). Stream API любит независимые данные. Если для получения результата вам нужно использовать одновременно несколько элементов из входного набора, без сторонних библиотек будет очень коряво. Но библиотеки вроде StreamEx часто решают эту проблему. Stream API любит решать одну задачу за проход. Если вы хотите в один обход данных решить несколько разных задач, готовьтесь писать свои коллекторы. И не факт, что это вообще получится. Стримы бывают последовательными (sequential) и параллельными (parallel). Последовательные выполняются только в текущем потоке, а вот параллельные используют общий пул ForkJoinPool.commonPool(). При этом элементы разбиваются (если это возможно) на несколько групп и обрабатываются в каждом потоке отдельно. Затем на нужном этапе группы объединяются в одну для предоставления конечного результата. Java Stream API предлагает два вида методов: 1. Конвейерные — возвращают другой stream, то есть работают как builder, 2. Терминальные — возвращают другой объект, такой как коллекция, примитивы, объекты, Optional и т.д. Как можно классифицировать стримы в разных контекстах? Чем является Stream в контексте Java? В каком пакете находится Stream? Чем Stream отличается от итератора? Сравнение стримов с коллекцией Из каких частей состоит использование стримов? В каком случае нужно закрывать стрим? Первый этап работы со стримом? Откуда можно получить стрим? Что такое ленивая инициализация стрима? Сколько раз можно вызывать терминльную операцию? Две терминальные операции в одном выражении? Что такое терминальная операция? Для чего терминальные операции? Какие бывают и что делают? Что возвращают промежуточные операции над стримом? Перечислить основные промежуточные операции. Их предназначение. Терминальные и промежуточные опирации? пример Для чего нужны параллельные стримы? Как получить стрим диапазона чисел? Можно ли конкатенировать стримы? если да то каким методом? Можно ли получить пустой стрим? если да то каким методом? Как получить стрим из массива? Какой второй этап работы со стримом? Что такое коллекторы? В чем разница map и flatMap? еще методы peek и forEach - в чем разница: первый промежуточный, второй - терминальный, ну и функционал какой у каждого? В чем разница между foreach и foreachordered? Может ли стрим использоваться повторно? Что такое метод референс? Разница методов .list() и walk() Что такое саплер-поставщик? В чем разница методов range и rangeClosed? Лямбда: К каким переменным есть доступ из лямбда-выражения? К каким переменным и как можно обращаться в теле лямда-выражениях?(к каким переменным можно обращаться внутри лямбды: переменные внутри метода (эффективно-финальные), static переменные класса, переменные интерфейса (с которым лямбда работает)) Что такое лямбда выражение и ссылка на метод. Как они связаны с анонимным классом? ссылка на метод - ну и в каком виде передается: имя класса:: имя стат метода (для статического метода); объект класса:: имя метода (для метода экземпляра); название класса:: new(для конструктора) как взаимосвязаны лямбда и функциональный интерфейс? Может ли лямбда-выражение быть в несколько строк? Анонимные классы: Любой анонимный класс можно заменить на лямбду? Что такое анонимный класс? как создать, где применяются, особенно как создать экземпляр. Функциональные интерфейсы: Что такое функциональный интерфейс и для чего он нужен и зачем были добавлены? Какой аннотацией помечается функциональный интерфейс? Может ли функциональный интерфейс содержать что-то кроме абстрактного метода? Сколько дефолтных методов и статических методов, сртатических полей в интерфейсе? Что такое default методы в интерфейсе и для чего они были введены? Где находятся функциональные интерфейсы? Перечислить основные семейства функ.интерфейсов? Что они принимают и что возвращают? Какие есть способы инстацировать функциональные интерфейсы? Расскажите про Comparator и Comparable? Отличие BinaryOperator от Function? Все способы реализации функционального интерфейса? Разное: императивный vs декларативный подход функциональное программирование что такое,плюсы минусы, где применяется Objects (зачем нужен) |