Дашборд с виджетами
Вопрос
Спроектируй дашборд: десяток виджетов, у каждого свои данные и период обновления.
Веди разговор вслух, как на секции. Начинать с решения - главная ошибка: первые полторы минуты только вопросы.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
уточнил число виджетов, частоту обновления и настраивается ли раскладка
каждый виджет грузит свои данные сам - независимые границы загрузки и ошибок
один упавший виджет не должен ронять дашборд: границы ошибок по виджетам
общие фильтры (период, проект) - в адресе, один источник правды
дедупликация запросов, если виджеты просят одно и то же
обновление по расписанию и пауза, когда вкладка не активна
скелетоны фиксированного размера, чтобы раскладка не прыгала
тяжёлые графики - ленивой загрузкой, не в основном бандле
Что могут спросить следом
- Как сделать настраиваемую раскладку и где её хранить?
- Что если бэкенд умеет отдать всё одним запросом - что выберешь?
- Как не перегрузить сервер при обновлении раз в пять секунд?
Разбор
Ключевое решение - виджет владеет своими данными. Тогда дашборд не ждёт самый медленный запрос: каждый показывает свой скелетон и появляется сам. Это же даёт границы ошибок по виджетам - один упал, остальные работают. Белый экран из-за одного графика на секции засчитывают в минус.
Общие фильтры - период, проект - в адресной строке: один источник правды, ссылка воспроизводится, «назад» работает.
Если несколько виджетов просят одни и те же данные, дедупликация по ключу запроса обязательна - иначе при открытии уходит десять одинаковых запросов.
Автообновление ставим на паузу, когда вкладка скрыта (visibilitychange): иначе
фоновая вкладка сутками долбит сервер.
Скелетоны - фиксированного размера: прыгающая раскладка на дашборде особенно заметна. Библиотеки графиков тяжёлые, поэтому грузим их лениво, вместе с виджетом.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.