Вернуться в видеотекуТестовое собеседование Java разработчика #27 - Зуфар Сунагатов
Тестовое Java-интервью: рассказ о банковском backend-проекте, алгоритмическая задача на BST и проектирование масштабируемого мессенджера. Запись показывает ход рассуждений кандидата и уточняющие вопросы интервьюера.
- Направление
- Backend
- Формат
- Техническое собеседование
- Длительность
- 1 ч 36 мин
Коротко о видео
Это тестовое интервью с 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 и балансировщики.