Какой типичный вопрос по Java может быть на первом собеседовании?

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

Ответ

На первом собеседовании по Java часто проверяют понимание базовых концепций языка и стандартных подводных камней. Классический пример — работа с коллекциями и итераторами.

Типичная задача и ошибка:

List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C"));
for (String s : list) { // Используется итератор неявно
    if (s.equals("B")) {
        list.remove(s); // ConcurrentModificationException!
    }
}

Проблема: Модификация коллекции (list.remove()) во время итерации через for-each (который использует Iterator) приводит к ConcurrentModificationException.

Правильные решения:

  1. Явное использование Iterator и его метода remove():
    Iterator<String> iterator = list.iterator();
    while (iterator.hasNext()) {
        String s = iterator.next();
        if (s.equals("B")) {
            iterator.remove(); // Безопасное удаление
        }
    }
  2. Использование метода removeIf() (Java 8+):
    list.removeIf(s -> s.equals("B"));
  3. Создание копии коллекции для итерации:
    new ArrayList<>(list).forEach(s -> {
        if (s.equals("B")) list.remove(s);
    });

    Такой вопрос проверяет знание fail-fast итераторов и безопасных способов модификации коллекций.