tg-me.com/iosdev/843
Last Update:
Опыт собеседований System Design и возможный путь обсуждения
📖 Во время собеседования по System Design испытуемого попросили разработать мобильное приложение.
Фокус и упор был конкретно на архитектуру мобильного приложения, а затем интервьюер переходил к многочисленным деталям.
Если один из раундов содержит system design, важно не пропустить следующие базовые вещи (мне кажется, и для интервьюера тоже):
1️⃣ Вы не можете спроектировать всё приложение за 20 минут. Задайте уточняющие вопросы, на какой части архитектуры нужно сделать акцент. В дальнейшем вопросы будут задавать уже вам.
Стоит уточнить условия для возможной нагрузки, безопасности, потенциальном расширении кодовой базы (и привлечении коллег в будущем).
2️⃣ Начните с базового прототипа. Здесь важно правильно разделить архитектуру по слоям (какой класс за что будет отвечать), можно от самого верхнего уровня и спускаться ниже.
3️⃣ Масштабируемость. Во время собеседования по системному дизайну для инженеров, проектирующих серверную часть, нужно знать о таких концепциях, как фермы серверов и сети с балансировщиками нагрузки и уровнями кэширования. При проектировании архитектуры приложения нам нужно думать о схожих концепциях и идеях.
4️⃣ Безопасность. Это огромная, иногда важнейшая часть приложения, и даже если мы не специалисты в области криптографии, мы должны обладать базовым набором навыков, которые помогут защитить пользователя (и нас тоже).
5️⃣ Кэширование. Существует множество различных механизмов и идей кэширования. Например, изображения обычно кэшируются в памяти. Приложение для обмена сообщениями более эффективно извлекает изображения из памяти, а не загружает их каждый раз (телеграм не исключение).
6️⃣ Автономная работа приложения. Её необходимость и доступность конечно же, будут связаны с предыдущим пунктом.
Вектор развития диалога может пойти как в глубину, так и в ширину в зависимости от требуемых знаний.
Это лишь один из концептов и сценариев, по которому можно побеседовать, но в целом это важный навык, и на мой взгляд — для позиций выше мидла основополагающий.