Easyfunctional-interfacejava8

Что такое functional interface?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

Functional interface — интерфейс ровно с одним abstract методом (default/static не считаются). Помечается @FunctionalInterface (опционально, но компилятор проверяет). Используется как target type для лямбд.

@FunctionalInterface
interface MyFunc {
    int apply(int x);
}
MyFunc square = x -> x * x;

Стандартные в java.util.function:

  • Function<T,R> (T→R), BiFunction<T,U,R>;
  • Predicate<T> (T→boolean), Consumer<T> (T→void), Supplier<T> (()→T);
  • UnaryOperator<T>, BinaryOperator<T>, BiPredicate<T,U>;
  • Примитивные: IntFunction, ToIntFunction, IntPredicate — без autoboxing.

Композиция: fn.andThen(g), fn.compose(g), pred.and(p), pred.or(p), pred.negate().

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.