Работали ли вы с чатами и мессенджерами
Что проверяют
Вопрос отсеивает тех, кто видел чат только как список сообщений. Мессенджер это самая нагруженная часть мобильного приложения: живое соединение, локальное хранилище, оффлайн, пуши и бесконечная лента. Интервьюер выясняет, какие из этих подсистем вы трогали руками и понимаете ли, где они ломаются.
Как отвечать
Раскладывайте опыт по слоям, а не по названиям сервисов:
- транспорт: постоянное соединение через веб-сокет для активного экрана и системные пуши для доставки, когда процесс убит. Пуш это сигнал, а не источник данных, тело сообщения дотягивается отдельным запросом;
- хранение: локальная база через Room как единственный источник правды, интерфейс подписан на поток из неё, сеть только пополняет таблицу. Так чат открывается мгновенно и переживает потерю связи;
- отправка: идентификатор сообщения генерируется на клиенте, статусы отправки, доставки и прочтения хранятся рядом, неотправленное лежит в очереди с повторами через WorkManager;
- лента: постраничная догрузка вверх, стабильные ключи элементов, иначе список прыгает при каждом входящем;
- порядок и дубликаты: сортировка по серверной метке времени, а не по часам устройства, они у пользователей врут.
Если опыта с чатом не было, скажите прямо и разберите задачу вслух: что положили бы в базу, как догнали бы пропущенные сообщения после долгого оффлайна.
Где спотыкаются
Отвечают названием готового сервиса. Фраза про подключённый бэкенд для чатов не закрывает ни одного вопроса про архитектуру: следом спросят про порядок сообщений и дедупликацию, и разговор закончится.
Вторая ошибка: заученный рассказ с процентами роста продуктивности команды. Числа, которые нельзя объяснить, звучат шаблоном, а на мобильном собеседовании ценят другое: размер кэша, время до первого экрана, поведение на плохой сети.
Третья: забывают про восстановление после оффлайна. Сценарий с телефоном, пролежавшим два часа в самолёте, это самый частый уточняющий вопрос, и ответ про догрузку по курсору сразу отличает опытного кандидата.