Вот список Вопросов для собеседования по Java 8, которые задавали в интервью, а также публикую ответы для лучшей подготовки.
Как найти имя сотрудника, начинающееся с буквы А, с помощью stream API
List<Employee> employees = ...; // Your list of employees List<Employee> employeesStartingWithA = employees.stream() .filter(e -> e.getName().startsWith("A")) .collect(Collectors.toList());
Объединить два Employee ArrayList и отсортировать по возрасту с помощью потокового API java8
List<Employee> list1 = ...; // Your first list List<Employee> list2 = ...; // Your second list List<Employee> mergedAndSorted = Stream.concat(list1.stream(), list2.stream()) .sorted(Comparator.comparingInt(Employee::getAge)) .collect(Collectors.toList());
Найдите четные числа из ArrayList и найдите сумму всех чисел, используя потоковый API Java 8.
List<Integer> numbers = Arrays.asList(1,2,3,4,5,6); // Your list of numbers int sumOfEvenNumbers = numbers.stream() .filter(n -> n % 2 == 0) .mapToInt(Integer::intValue) .sum();
Сортировка сотрудников по имени и зарплате с помощью java 8 stream API
public class Employee { String firstName; int age; } List<Employee> employees = new ArrayList<>(); Employee e1 = new Employee("Ajay",35); Employee e2 = new Employee("Vijay",5); Employee e3 = new Employee("Zack",30); Employee e4 = new Employee("David",51); List<Employee> sortedEmployees = employees.stream() .sorted(Comparator.comparing(Employee::getName).thenComparing(Employee::getSalary)) .collect(Collectors.toList());
Сортировка сотрудников по полу и возрасту старше 30 лет с помощью Java 8 stream API
List<Employee> employees = ...; // Your list of employees List<Employee> sortedEmployees = employees.stream() .filter(e -> e.getAge() > 30) .sorted(Comparator.comparing(Employee::getGender)) .collect(Collectors.toList());
Каковы операции промежуточного и конечного потока в потоке java 8
Промежуточные операции – это операции, которые сами по себе не дают конечный результат, а преобразуют или фильтруют элементы потока и возвращают новый поток, с которым можно работать дальше. Некоторые примеры промежуточных операций:
map()
: преобразует каждый элемент потока с помощью заданной функции.filter()
: сохраняет только те элементы потока, которые удовлетворяют заданному условию.distinct()
: Удаляет дубликаты из потока.sorted()
: сортирует элементы потока в заданном порядке.limit()
: усекает поток до указанного максимального размера.skip()
: Пропускает указанное количество элементов с начала потока.
Терминальные операции – это операции, которые приводят к конечному результату или побочному эффекту и завершают обработку потока. После применения терминальной операции к потоку этот поток нельзя использовать снова. Некоторые примеры терминальных операций:
forEach()
: выполняет заданное действие для каждого элемента потока.toArray()
: собирает элементы потока в массив.reduce()
: объединяет элементы потока с помощью заданной функции и возвращает один результат.collect()
: собирает элементы потока в коллекцию или другую структуру данных.count()
: подсчитывает количество элементов в потоке.min()
,max()
: возвращает минимальный или максимальный элемент потока на основе заданного порядка.
Какие типы потоков в java 8
- Stream‹T›: это наиболее распространенный тип потока, представляющий поток объектов типа T. Вы можете создать Stream‹T› из коллекции или массива, используя методы
stream()
илиArrays.stream()
соответственно. - IntStream, LongStream, DoubleStream: это специализированные потоки, содержащие примитивные значения типов int, long и double соответственно. Эти специализированные потоки имеют дополнительные методы, оптимизированные для работы с примитивными значениями, такими как
sum()
,average()
иrange()
. - Поток‹T[]›: это поток массивов типа T. Вы можете создать поток‹T[]›, вызвав метод
Arrays.stream()
для массива типа T[]. - Stream.Builder‹T›: это класс построителя, который можно использовать для создания Stream‹T› путем добавления элементов по одному. Вы можете создать Stream.Builder‹T›, используя метод
Stream.builder()
.
В поисках содержания интервью с разработчиком Java здесь вы можете найти 1000 вопросов о Springboot, Microservice и Java.
найти другие мои полезные статьи на интервью Java Developer
Как я получил более 10 писем с предложениями в качестве Java-разработчика за 3 месяца.
Как я подробно изучил Java, готовясь к техническим собеседованиям по Java
17 вопросов для собеседования с Java-разработчиком, серия 9 (опытные кандидаты от 0 до 6 лет)
13 новых вопросов для интервью с разработчиками Java, серия 6 (микросервисы и Java-кодирование)
Вопросы на собеседовании по Microservice для разработчиков Java Backend, серия-3
Вопросы на собеседовании по Microservice для Backend Developers Series-2 (CIRCUIT-BREAKER)
Вопросы на собеседовании по микросервисам для Backend Developers серия-1