Вернуться в видеотеку

Собеседование Java разработчика, сильный Middle, Spring Framework, Hibernate

Публичный разбор мок-интервью Java-разработчика с вопросами по Core Java, Spring Framework, Hibernate/JPA и Stream API. После технической части ведущий даёт кандидату оценочный фидбек и отвечает на карьерные вопросы зрителей.

Источник: ШОРТКАТ — менторская программа

Открыть на YouTube

Таймлайн

Коротко о видео

Это публичное мок-интервью Java-разработчика: кандидат с примерно четырьмя годами Java-опыта отвечает на вопросы по Core Java, Spring Framework, Hibernate/JPA, коллекциям и Stream API. Интервьюер уточняет и разбирает ответы о `BigDecimal`, каскадах и транзакциях, загрузке сущностей, конфигурации Spring и обработке исключений; в конце кандидат с помощью подсказок решает задачу на поиск наиболее частого элемента через Stream API. Финал посвящён обратной связи кандидату, рекламе менторской программы «ШОРТКАТ» и вопросам зрителей о грейде, зарплате, смене работы и повышении.

Затронутые темы

Что взять на заметку

  • Для финансовых расчётов в интервью ожидают объяснение, почему `float` и `double` дают погрешности, и знание `BigDecimal`, масштаба и режима округления.
  • Стоит различать JPA-связи и каскады: `PERSIST`, `REMOVE`, `REFRESH`, `DETACH` и `ALL`, а также понимать, какие действия распространяются на связанные сущности.
  • Нужно уметь объяснить прокси-механику `@Transactional`: внутренний вызов метода не проходит через прокси; ведущий отдельно указывает на ограничение применения аннотации к приватному методу.
  • Следует не смешивать назначение аннотаций: `@Transient` исключает поле из persistence, `@JsonIgnore` — из сериализации ответа, а `@Column(updatable = false)` позволяет запретить обновление колонки после создания.
  • К вопросам по Hibernate относятся различия lazy/eager loading, риск `LazyInitializationException`, проблема лишних запросов и отличие кэша первого уровня от настраиваемого кэша второго уровня.
  • Для Spring важно знать источники внешней конфигурации и их перекрытие: `application.yml`, профильные файлы, переменные окружения и аргументы командной строки; кандидат прямо признаёт, что точную иерархию не помнит.
  • Практическая задача решается через `Collectors.groupingBy(Function.identity(), Collectors.counting())`, затем поиск максимальной записи через `entrySet()` и `Map.Entry.comparingByValue()`; отдельно нужно определить правило для ничьей по частоте.

Рекомендуем посмотреть