Можете ли вы продемонстрировать код или концепции на примере?

«Можете ли вы продемонстрировать код или концепции на примере?» — вопрос из категории Other, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, могу предоставить примеры кода и объяснить концепции. Например, для демонстрации Java Stream API:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class StreamExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("John", "Alice", "Bob", "Eve");
        List<String> filtered = names.stream()
            .filter(name -> name.length() > 3) // Фильтрация по длине
            .sorted()                         // Сортировка
            .collect(Collectors.toList());    // Сбор в список

        System.out.println(filtered); // Вывод: [Alice, John]
    }
}

Почему это работает:

  • stream() создает поток элементов
  • filter() отбирает элементы по условию (лямбда-выражение)
  • sorted() сортирует в естественном порядке
  • collect() преобразует поток обратно в коллекцию

Для демонстрации потокобезопасности с AtomicInteger:

import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.IntStream;

public class ThreadSafeExample {
    public static void main(String[] args) {
        AtomicInteger counter = new AtomicInteger(0);

        // Параллельное выполнение 1000 инкрементов
        IntStream.range(0, 1000)
                 .parallel()
                 .forEach(i -> counter.incrementAndGet());

        System.out.println(counter.get()); // Гарантированно 1000
    }
}

Ключевой момент: AtomicInteger обеспечивает атомарные операции без блокировок, используя CAS (Compare-And-Swap) операции на уровне процессора.