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

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

Тестовое Java-собеседование с алгоритмической задачей и большой секцией system design. Кандидат проектирует масштабируемую IoT-платформу и объясняет используемый в работе backend-стек.

Источник: Eugene Suleimanov

Открыть на YouTube

Таймлайн

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

Это тестовое собеседование Java-разработчика Даниила Морозова: он рассказывает о пути от desktop-разработки к Java backend, текущем IoT-проекте и работе в международной команде в Токио. Затем кандидат решает задачу на поиск наибольшего общего префикса строк и обсуждает сложность решения. Основная часть посвящена system design платформы для сбора телеметрии со 100 млн устройств: ingestion, Kafka, обработке потоков, хранению, аналитике, расчёту нагрузки и логированию.

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

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

  • Кандидат описывает текущий IoT backend как платформу, агрегирующую сигналы устройств и сохраняющую их для последующей выдачи результатов пользователям; команда состоит из трёх senior-разработчиков.
  • В качестве стека текущего проекта он называет Kafka Streams, реактивные API на Vert.x, Cassandra для основного хранения и PostgreSQL для более традиционных данных; на момент разговора система ещё не была в production.
  • Для задачи longest common prefix обсуждается обход позиций первой строки с проверкой символа во всех остальных строках и обязательной проверкой границ более коротких строк; заявленная сложность — O(N×L) по времени и O(1) дополнительной памяти без учёта результата.
  • В system design-сценарии 100 млн устройств отправляют данные раз в пять секунд, то есть расчётная входная скорость составляет около 20 млн событий в секунду; это требует горизонтального масштабирования и разбиения потока.
  • Кандидат предлагает отделить приём сообщений от Kafka промежуточным ingress/gateway-слоем, чтобы валидировать и маршрутизировать события, собирать метрики и не связывать устройства напрямую с Kafka.
  • Kafka topics он предлагает проектировать по бизнес-кейсу, приложению или типу данных, а не создавать topic на каждое устройство; retention и частота агрегаций должны зависеть от бизнес-требований.
  • Для хранения обсуждаются Cassandra для высокоинтенсивной записи и долгого хранения, Redis для быстрых подготовленных выборок, а для логов — централизованный сбор через Filebeat и поиск в Elasticsearch; это предложения кандидата, а не подтверждённая архитектура.

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

1 ч 47 мин
BackendSenior

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

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

1 ч 36 мин
Backend

Тестовое собеседование Java разработчика #27 - Зуфар Сунагатов

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

1 ч 18 мин
Backend

Тестовое собеседование Java разработчика #28 - Леонид Земенков

Тестовое интервью Java-разработчика: карьерный опыт кандидата, алгоритмическая задача на скользящее окно и проектирование масштабируемого web scraper для агрегирования объявлений.