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

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

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

Источник: Eugene Suleimanov

Открыть на YouTube

Таймлайн

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

Это тестовое интервью с Java backend-разработчиком Зуфаром Сунагатовым, который рассказывает о переезде в Лондон и текущем внутреннем банковском проекте: Java-драйвере для доступа к хранилищам данных с gRPC/Protocol Buffers и потоковой передачей данных. В алгоритмической части разбирают поиск двух чисел с заданной суммой в бинарном дереве поиска: от неудачной идеи использовать свойства BST для отсечения ветвей переходят к обходу дерева с HashSet и Queue. В system design кандидат проектирует гипотетический глобальный мессенджер уровня Telegram: уточняет требования, считает нагрузку, обсуждает хранилища, кэширование, CDN, балансировку и компромиссы выбора БД.

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

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

  • Для рассказа о проекте стоит уметь связно объяснить назначение Java JAR-драйвера, интеграцию с хранилищами данных, gRPC/Protocol Buffers, генерацию клиентов для разных языков и streaming батчей.
  • Подготовьте описание полного пути фичи: обсуждение со стейкхолдерами, Epic и подзадачи, инфраструктурные и QA-задачи, unit-тесты, тестовые стенды, Code Review, регрессия и выпуск в production.
  • В задаче Two Sum IV для BST нельзя считать, что поиск пары автоматически работает за O(log N): второе число для каждого узла может находиться в любой части дерева.
  • Рабочий подход для задачи — обойти дерево, перед добавлением текущего значения в HashSet проверять наличие target − value, а для итеративного обхода использовать Queue; итоговые сложности O(N) по времени и O(N) по памяти.
  • В system design сначала зафиксируйте функциональные и нефункциональные требования, затем отдельно оцените сообщения, чтения, медиафайлы, объём хранения и пиковую нагрузку. В упражнении из 60 млн DAU и 15 сообщений в день получают 900 млн сообщений в сутки, или около 10 417 записей в секунду в среднем.
  • При выборе хранилища нужно начинать с типов данных и паттернов чтения/записи, а не с названия БД; для мессенджера отдельно рассматриваются основная БД, файловое/object storage, кэш, CDN и балансировщики.

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

1 ч 18 мин
Backend

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

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

1 ч 29 мин
BackendMiddle

Открытое интервью на Middle Go-разработчика

Запись открытого мок-интервью на Middle Go-разработчика с разбором ответов по Go runtime, базам данных и системному дизайну. В конце — обратная связь кандидату и ответы на вопросы о карьерном переходе и подготовке к интервью.