Вернуться в каталог собеседований

Тестовое собеседование Java разработчика #19 - Михаил Гончаренко

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

Eugene Suleimanov
  • Опубликовано на YouTube:
  • Просмотры на YouTube: 26 тыс.
  • Лайки на YouTube: 671
Открыть на YouTube

Таймлайн

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

Тестовое интервью Java-разработчика Михаила Гончаренко охватывает Streams, многопоточность, асинхронность, ООП, коллекции и жизненный цикл Spring Bean. Кандидат решает задачу удаления дубликатов из списка, а затем проектирует высоконагруженный сервис изображений в духе Instagram: хранение, кэширование, масштабирование, CI/CD и тестирование. В части про CompletableFuture и конкретные технологии кэширования кандидат прямо отмечает, что не имеет практического опыта или не готов дать точный ответ.

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

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

  • Подготовить чёткое объяснение Java Stream: intermediate-операции строят конвейер, terminal-операция запускает его; отдельно объяснять, почему parallelStream не гарантирует ускорения.
  • Различать ExecutorService, Runnable и Callable, а также лимит потоков FixedThreadPool и постановку избыточных задач в очередь.
  • Уметь сравнить Future и CompletableFuture на примере неблокирующих цепочек вычислений, обработчиков завершения и случаев, когда get() всё же блокирует поток.
  • Для удаления дубликатов проговаривать компромисс: HashSet даёт ожидаемую линейную сложность, но требует дополнительной памяти; сортировка с последующим линейным проходом — O(n log n), меняет порядок элементов и требует аккуратной обработки списка.
  • В системном дизайне разделять объектное хранилище изображений вроде S3 и реляционную БД с метаданными публикаций, пользователей и ссылками на объекты.
  • Быть готовым описать pipeline: ветки Gitflow, unit- и интеграционные тесты, статический анализ Sonar, тестовая среда, rolling deployment и откат версии при инциденте.
  • Повторить порядок жизненного цикла Spring Bean и назначение BeanDefinition, BeanFactoryPostProcessor, BeanPostProcessor, @PostConstruct и @PreDestroy.

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