Mobile System Design за 5 минут
Недавно собеседовал разработчика к нам в команду. У нас в компании один из этапов это System Design. Кандидат отлично себя показал на кодинг части, но абсолютно не понимал что от него хотят на System Design. Конечно, я сразу подсветил что от него ожидается, но его буквально ввело в ступор, что необходимо рисовать диаграммы и проектировать сущности в реляционной базе данных.
Именно на этой секции валятся ребята, которые по хардам отвечают на 9 из 10. Человек знает, как устроены корутины, работает GC, а потом начинается System Design и все.
Поэтому я собрал краткую шпаргалку, если собес поставили уже на завтра:
1) Сбор требований (10-15 мин)
Самая частая ошибка. Человек понял по-своему задачу и сразу начал рисовать диаграмму.
Сначала необходимо продумать требования, как будто разговариваешь с продуктом или тимлидом
Функциональные требования отвечают на вопрос: «что пользователь может сделать?» - выбери ТОП-3, не больше. Длинный список - минус, не плюс. Интервьюер оценивает умение приоритизировать
Нефункциональные: доступность, масштаб, локализация
2) Проектирование API и модели данных (10-15 мин)
Проектируем ленту постов? User, Post, UserReaction. Тут же можно продумать какой типа пагинации будет использоваться (да их несколько). Не забываем про идемпотентность
GET /v1/posts/:id -> Post
GET /v1/feed -> Post[]
3) Высокоуровневая архитектура (10-15 мин)
Вот тут основная работа. Архитектура клиента (Clean, MVI, MVVM, repository) API, рисуем сервисы, БД, показываем offline-first - подход, CDN, Message Queue, LRU-кэш
4) Углубление в реализацию (10 мин)
А вот тут ты показываешь глубину:
- нефункциональные требования - как система их выполняет?
- узкие места - как обрабатывать ошибки, ретраи, политики синхронизации с сервером после офлайна
- граничные случаи - что если во время заказа у пользователья выключился интернет? Как избежать дублирования?
📹 Видеокурс для закрепления с примерами и упражнениями
Если ты планируешь менять работу или идти на повышение в ближайшие месяцы - сейчас лучшее время подготовиться.
P.s. Используйте только эту ссылку, иначе Stepik берет конскую (почти половину) комиссию
https://stepik.org/a/262641
Post #389
840
- 👍 3
- 🔥 3
- 👨💻 3
- 🤔 1