Вопросы с собеседований
Вопросы на собеседовании: System design
Масштабирование, согласованность, микросервисы, API, наблюдаемость, выкатка и безопасность — вопросы архитектурных секций.
77вопросов
12Junior
60Middle
5Senior
Масштабирование
7- Чем горизонтальное масштабирование отличается от вертикального?Junior
- Как масштабировать чтение базы данных под высокой нагрузкой?Middle
- Какую задачу решает consistent hashing по сравнению с обычным hash(key) % N?Middle
- Почему для горизонтального масштабирования сервис делают stateless?Middle
- Сервис планируют масштабировать горизонтально. Какие его свойства придётся устранить, чтобы инстансы можно было свободно добавлять и снимать?Middle
- Сервис работает на двадцати инстансах. Добавление ещё десяти не уменьшает время ответа. Как вы будете искать причину и что предпримете?Middle
- Данные шардированы по хешу от идентификатора клиента. Несколько крупных клиентов дают около 80% нагрузки, и она приходится на один шард. Что здесь поможет?Senior
CAP и согласованность
7- Что описывают три буквы в CAP?Junior
- Что утверждает CAP-теорема?Middle
- Что описывает eventual consistency?Middle
- В системе с N репликами при каком условии чтение гарантированно увидит последнюю подтверждённую запись?Middle
- Какие промежуточные гарантии находятся между строгой и итоговой согласованностью?Middle
- Пользователь публикует комментарий и должен сразу видеть его в ленте, а остальным допустима задержка в несколько секунд. Какие гарантии согласованности вы заложите и как это реализуете?Middle
- Почему условие R + W > N само по себе не даёт линеаризуемости?Senior
Кэширование и CDN
7- Зачем нужно кэширование и какие у него главные риски?Junior
- Что делает CDN?Middle
- Чем write-through отличается от write-back при кэшировании записи?Middle
- Почему инвалидацию кэша считают одной из самых сложных задач и что помогает на практике?Middle
- Популярный ключ истекает, и сотни параллельных запросов одновременно уходят в базу за одним значением. Какие приёмы защищают от этого?Middle
- Каталог товаров: 95% запросов — чтение, описания меняются редко, но изменение цены должно быть видно пользователям в течение минуты. Как вы спроектируете кэширование?Middle
- После обновления строки приложение записывает новое значение в кэш. Изредка в кэше навсегда остаётся устаревшее значение. Что происходит и как правильно?Senior
Надёжность и идемпотентность
7- Что означает идемпотентность операции?Junior
- Как сделать обработку запросов надёжной при сбоях и повторах?Middle
- В каких состояниях бывает circuit breaker и как он между ними переходит?Middle
- Нагрузка превысила возможности сервиса. Какие приёмы позволяют деградировать управляемо, а не упасть целиком?Middle
- Внешний платёжный провайдер начал отвечать за 30 секунд вместо 200 миллисекунд. Через минуту сервис перестал отвечать вообще, включая страницы, не связанные с оплатой. Что произошло?Middle
- В цепочке из трёх сервисов каждый повторяет неудачный вызов до трёх раз. Нижний сервис кратковременно деградировал. Чем это закончится?Middle
- Почему для надёжной публикации события после изменения данных применяют transactional outbox, а не двухфазный коммит?Senior
Монолит и микросервисы
8- Что такое микросервисная архитектура?Junior
- Что такое гексагональная архитектура (порты и адаптеры) и чем она отличается от слоистой?Middle
- Что в первую очередь покупает переход от монолита к микросервисам?Middle
- По какому принципу правильнее проводить границы между сервисами?Middle
- Какие признаки указывают на распределённый монолит?Middle
- Пользовательский сценарий последовательно вызывает пять сервисов, доступность каждого 99,9%. Какова примерная доступность сценария и что из этого следует?Middle
- Почему действует правило «одна база данных на сервис»?Middle
- Стартап начинает новый продукт и спрашивает: сразу микросервисы или монолит? Что вы порекомендуете и почему?Middle
Проектирование API
7- Что означает буква R в аббревиатуре REST применительно к проектированию API?Junior
- Какие HTTP-методы идемпотентны?Middle
- Клиент отправил POST для создания заказа, не дождался ответа из-за таймаута и повторил запрос. Как правильно не допустить второго заказа?Middle
- Лента с бесконечной прокруткой использует LIMIT 20 OFFSET N. С ростом N страницы отдаются всё медленнее, а пользователи жалуются на дубли. В чём причина и что делать?Middle
- Какие изменения REST API обратно совместимы для существующих клиентов?Middle
- Какой вопрос лучше всего определяет выбор между синхронным вызовом и событием через брокер?Middle
- Как гарантировать, что изменение вашего API не сломает потребителей, которых вы не контролируете?Middle
CQRS и Event Sourcing
7- Что разделяет подход CQRS?Junior
- Что означает CQRS?Middle
- Как соотносятся CQRS и Event Sourcing?Middle
- Что относится к обязательной технической механике Event Sourcing?Middle
- После перехода на отдельное хранилище для чтения пользователи жалуются: сохранённое изменение не сразу видно в списке. Как правильно к этому отнестись?Middle
- Какие требования предъявляются к проекции, строящей модель чтения из потока событий?Middle
- Когда Event Sourcing и полный CQRS применять не стоит, и что делать вместо этого?Senior
Наблюдаемость и SLO
8- Как правильно логировать в бэкенд-сервисе?Junior
- Какие три сигнала составляют основу наблюдаемости?Junior
- Чем наблюдаемость (observability) отличается от мониторинга?Middle
- Команда добавила в метрику задержки метку с идентификатором пользователя, чтобы «удобнее расследовать инциденты». Что произойдёт?Middle
- Что верно про измерение времени ответа сервиса?Middle
- Что такое error budget и зачем он нужен?Middle
- Дежурных будят алерты «загрузка CPU выше 90%», которые в большинстве случаев ни к чему не приводят. Как правильно перестроить алертинг?Middle
- В цепочке из пяти сервисов у пользователей выросло время ответа. Как вы будете искать причину и что для этого должно быть построено заранее?Middle
Выкатка и миграции
6- Что такое rolling update при выкатке новой версии?Junior
- Во время rolling update в проде одновременно работают старая и новая версии сервиса. Какое требование из этого следует?Middle
- Нужно переименовать колонку name в full_name без простоя при rolling-выкатке. Какая последовательность верна?Middle
- Что верно про feature flags?Middle
- Чем canary-выкатка принципиально отличается от blue-green?Middle
- Как вы спланируете выкатку изменения, затрагивающего и код, и схему базы, чтобы её можно было безопасно откатить?Middle
Безопасность приложения
7- Чем аутентификация отличается от авторизации?Junior
- Эндпоинт GET /orders/{id} проверяет, что пользователь аутентифицирован, и возвращает заказ по идентификатору. Что здесь не так?Middle
- Что верно про использование JWT для аутентификации?Middle
- Чем bcrypt и argon2 принципиально отличаются от SHA-256 применительно к хранению паролей?Middle
- Разработчик случайно закоммитил ключ доступа к платёжному провайдеру и через час удалил его следующим коммитом. Что нужно сделать?Middle
- Что относится к рискам цепочки поставок ПО (Software Supply Chain Failures, A03 в OWASP Top 10:2025)?Middle
- Какие меры безопасности вы заложите при проектировании публичного REST API с личным кабинетом пользователя?Middle
Оценка нагрузки
6- Сервис обрабатывает около 8 640 000 запросов в сутки. Каков примерно средний QPS?Junior
- Сервисом пользуются 10 млн активных пользователей в сутки, каждый совершает около 20 целевых действий. Какой примерно QPS в пике при коэффициенте пиковости 3?Middle
- Какие порядки величин стоит держать в голове при оценке на салфетке?Middle
- Сервис принимает 100 млн сообщений в сутки по 1 КБ. Сколько примерно места потребуется за год и какой множитель забывают чаще всего?Middle
- Сервер приложений загружен на 30% по CPU, но задержки растут, а пул соединений к базе занят полностью. Что даст добавление ещё нескольких серверов приложений?Middle
- Вас просят спроектировать ленту новостей. С чего вы начнёте оценку и какие вопросы зададите до выбора архитектуры?Middle
Партнёр платформы
Разбор собеседования
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.