Java

Вопросы по Java Core на собеседовании: ООП, коллекции, исключения

Java Core на собеседовании — это проверка фундамента. Интервьюер хочет понять, умеете ли вы объяснить ООП, выбирать коллекции, работать со строками, понимать исключения и не путаться в базовых правилах языка

Ниже — набор тем, которые стоит повторять не списком терминов, а через ответы и короткие примеры

По этой теме полезно отдельно посмотреть Создание динамических форм в React и Next.js, чтобы расширить контекст и сравнить подходы

По этой теме полезно отдельно посмотреть Вопросы по Java на собеседовании, чтобы расширить контекст и сравнить подходы

ООП: четыре базовых идеи

Инкапсуляция скрывает состояние и открывает безопасные методы. Наследование позволяет расширять поведение, но его не стоит применять ради красоты. Полиморфизм дает возможность работать через общий тип. Абстракция оставляет важное и убирает детали

Хороший ответ на собеседовании: «Я стараюсь сначала думать о модели задачи. Если у объекта есть состояние и поведение, класс уместен. Если нужно только переносить данные, иногда достаточно record или простого DTO»

equals и hashCode

Если два объекта считаются равными через equals(), у них должен быть одинаковый hashCode(). Это важно для HashMap и HashSet

class User {
    private final String email;

    User(String email) {
        this.email = email;
    }
}

На интервью полезно сказать, что в реальном коде equals и hashCode часто генерируют IDE или используют record, если подходит модель данных

ArrayList, LinkedList, HashMap, HashSet

ArrayList чаще всего подходит для обычного списка. LinkedList редко нужен новичку и не является универсально быстрым. HashMap используется для доступа по ключу. HashSet — для уникальных значений

Set<String> tags = new HashSet<>();
tags.add("java");
tags.add("spring");
tags.add("java");

System.out.println(tags.size());

В ответе важно не просто назвать коллекции, а объяснить выбор под задачу

Generics

Generics помогают указать тип элементов и ловить ошибки на этапе компиляции

List<String> names = new ArrayList<>();
names.add("Анна");

String first = names.get(0);

Без generics пришлось бы приводить тип вручную и рисковать ошибкой во время выполнения

Исключения

Checked exceptions компилятор заставляет обработать или пробросить. Unchecked exceptions наследуются от RuntimeException и часто связаны с ошибкой логики: неверный индекс, null, неправильный аргумент

Сильный ответ: исключение не должно заменять обычную ветку бизнес-логики. Если ситуацию можно проверить условием заранее, иногда лучше сделать явную проверку

Stream API

Stream API помогает обрабатывать коллекции цепочкой операций: фильтр, преобразование, сбор результата

List<String> names = List.of("Anna", "Ivan", "Maria");

List<String> longNames = names.stream()
    .filter(name -> name.length() > 4)
    .toList();

System.out.println(longNames);

На собеседовании важно объяснять не только синтаксис, но и порядок операций

Многопоточность на базовом уровне

Junior редко должен глубоко знать concurrency, но базовые слова нужны: поток выполнения, race condition, synchronized, immutable object, executor

Простой ответ: если несколько потоков меняют одни и те же данные без синхронизации, результат может стать непредсказуемым

Как готовиться

Возьмите каждую тему и подготовьте три вещи: определение на два предложения, пример кода, типичную ошибку. Такой набор звучит живее, чем длинная шпаргалка

Как показывать глубину без лишней теории

На Java Core часто проверяют не заученное определение, а умение объяснить последствия. Например, equals и hashCode важны не сами по себе, а потому что HashMap и HashSet используют их для поиска и сравнения объектов

import java.util.Objects;

class User {
    private final int id;

    User(int id) {
        this.id = id;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof User user)) return false;
        return id == user.id;
    }

    @Override
    public int hashCode() {
        return Objects.hash(id);
    }
}

Если кандидат может объяснить, почему эти методы идут парой, ответ выглядит намного сильнее

Ответы, которые стоит подготовить заранее

Тема Что обязательно упомянуть
ООП инкапсуляция, наследование, полиморфизм, абстракция
коллекции когда выбирать List, Set, Map
исключения checked и unchecked, где ловить ошибку
generics типобезопасность и меньше cast
stream читаемая обработка коллекций, но не магия
многопоточность shared state, race condition, synchronized

Частые ошибки

Заучивать сложные формулировки

Интервьюер быстро видит, когда человек не может объяснить пример. Лучше коротко, но своими словами

Называть LinkedList быстрым для всего

Это распространенный миф. Для большинства обычных задач ArrayList проще и практичнее

Не понимать hashCode

Если объект кладут в HashSet или ключом в HashMap, правила equals и hashCode становятся важными

Часто задаваемые вопросы

Нужно ли знать Spring для Java Core?

Spring полезен, но Java Core проверяет фундамент языка. Без него фреймворк будет пониматься поверхностно

Что делать, если не знаю ответ?

Скажите, что знаете частично, и попробуйте рассуждать от примера. Это лучше, чем уверенно говорить неверное

Какие темы повторить первыми?

ОПП, коллекции, строки, исключения, generics, базовый Stream API и простые задачи на код

Вопросы, где часто проверяют глубину

Тема Что важно сказать
Инкапсуляция поля лучше закрывать, состояние менять через методы
Наследование использовать, когда есть реальное отношение, а не ради повторного кода
Полиморфизм работать через общий тип и подставлять разные реализации
equals и hashCode равные объекты должны иметь одинаковый хеш
Коллекции выбирать по задаче: порядок, уникальность, поиск по ключу

Пример для equals и hashCode

record User(String email) {}

Set<User> users = new HashSet<>();
users.add(new User("a@example.com"));
users.add(new User("a@example.com"));

System.out.println(users.size());

record автоматически дает корректные equals и hashCode для полей. На собеседовании это хороший мостик: можно объяснить правило и показать современный короткий пример

Как отвечать на уточнения

Если интервьюер спрашивает «а почему», не повторяйте определение. Свяжите тему с ошибкой: неправильный hashCode ломает поведение HashSet, слишком общий catch прячет проблему, наследование без смысла делает код жестким

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x