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

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

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

Источник: Eugene Suleimanov

Открыть на 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.

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

2 ч 15 мин
BackendSenior

Собеседование senior backend-разработчика / Node.js | Хекслет

Длинное учебное интервью о проектировании backend-систем и инженерных компромиссах. Основные темы — шина сообщений в финтехе, Node.js-стек, тестирование, инфраструктура, производительность и культура разработки.

1 ч 47 мин
BackendSenior

Гриша Скобелев, Саша Бармин: Публичное собеседование Senior Software Engineer

Публичное учебное интервью по Java для Senior-уровня с разбором архитектуры, JVM, многопоточности и задач на рассуждение. В финале участники обсуждают процесс найма, system design и вопросы кандидата к работодателю.

1 ч 18 мин
BackendSenior

Валентин Удальцов, Виталий Лихачев: Публичное собеседование Senior Software Engineer (PHP)

Публичное учебное интервью по PHP для уровня Senior Software Engineer. В нём разбирают современные практики разработки, архитектуру, конкурентный доступ к данным, PostgreSQL, Redis, очереди и transactional outbox.