17 вопросов
Практика
Спроектируй масштабируемую платформу социальных медиа (похожую на Instagram), которая поддерживает основные функции: обмен фотографиями, генерацию ленты в реальном времени, отношения между пользователями, метрики вовлечённости и обнаружение контента для миллиардов пользователей. Обсуди архитектурные компоненты, стратегии хранения данных, компромиссы между производительностью системы и использованием ресурсов, а также подходы к обработке масштаба.
Спроектируй масштабируемую платформу для отправки сообщений в реальном времени, похожую на WhatsApp, которая поддерживает одновременно множество пользователей, надежную доставку сообщений и распределенную инфраструктуру.
Спроектируй масштабируемую систему ленты социальной сети, которая поддерживает публикацию твитов, подписку на пользователей и генерацию персонализированных временных шкал. Какие компромиссы существуют между предварительным вычислением лент во время записи и сборкой лент во время чтения, и как бы ты оптимизировал систему для разных типов пользователей?
Спроектируй масштабируемую платформу потокового видео, похожую на Netflix, которая поддерживает глобальную доставку контента, адаптивную потоковую передачу и персонализированные рекомендации. Твой дизайн должен решить следующие задачи: обработка видео при загрузке, транскодирование в несколько разрешений и кодеки, распределение по CDN по всему миру, потоковая передача в реальном времени с адаптивной скоростью передачи данных, персонализация для пользователей, механизмы защиты контента и управление пиковыми нагрузками.
Спроектируй масштабируемую платформу для видео, похожую на YouTube, которая поддерживает пользовательский контент, включая компоненты для загрузки и обработки видео, модерацию контента, взаимодействие пользователей, монетизацию для авторов, прямые трансляции, персонализированные рекомендации и глобальное распределение. Как бы ты спроектировал эту систему, чтобы она обрабатывала сотни часов загружаемого видео в минуту?
Спроектируй масштабируемый сервис уведомлений, который поддерживает несколько каналов доставки (push-уведомления, email, SMS и in-app сообщения), реализует управление предпочтениями пользователей и rate limiting, гарантирует надежную доставку сообщений с механизмами повторных попыток и обеспечивает расширяемость для добавления новых каналов в будущем. Система должна также включать управление шаблонами, планируемую доставку, отслеживание аналитики (такие как показатели открытий и кликов) и возможности пакетной обработки.
Как бы ты спроектировал масштабируемую систему автодополнения, которая выдает поисковые подсказки с латентностью менее 100ms, поддерживает ранжирование в реальном времени по релевантности, персонализацию и работает на распределенной инфраструктуре?
Спроектируй распределённую систему очередей сообщений, похожую на Apache Kafka, решив следующие архитектурные компоненты: организация кластера брокеров, стратегия партиционирования топиков для оптимизации пропускной способности, координация групп консьюмеров для параллельной обработки сообщений, механизмы репликации данных для отказоустойчивости и долговечности, управление offset'ами для возможности повторного воспроизведения сообщений, гарантии упорядочивания сообщений для каждой партиции, гарантии семантики доставки (at-least-once, at-most-once и exactly-once), политики хранения и очистки сообщений, а также методы оптимизации производительности для работы с высокообъёмными операциями записи.
Спроектируй масштабируемую платформу электронной коммерции со следующими требованиями: управление каталогом товаров, расширенный поиск и фильтрация, функциональность корзины, обработка заказов, интеграция платежного шлюза, управление инвентарем в реальном времени, система отзывов пользователей, механизм персонализированных рекомендаций, отслеживание заказов и логистика доставки, а также функции поддержки клиентов. Рассмотри архитектурные вызовы управления конкурентным доступом к инвентарю во время высоконагруженных событий, обеспечение надежности платежной системы и масштабирование на несколько микросервисов.
Спроектируй масштабируемую платформу для потокового воспроизведения музыки, похожую на Spotify, которая поддерживает воспроизведение аудио на нескольких уровнях качества, управление плейлистами пользователя, персонализированные рекомендации, функцию поиска, автономное прослушивание, функции социального обмена, панели аналитики для художников, а также управление правами по регионам и системы отслеживания выплат роялти.
Спроектируй масштабируемую платформу для бронирования жилья, похожую на Airbnb, учитывая следующие ключевые компоненты: управление каталогом объектов недвижимости, функциональность геопространственного поиска, управление календарем доступности, движок динамического ценообразования, система бронирования с контролем параллелизма, обработка платежей и расчеты между хозяевами и гостями, отзывы и рейтинги пользователей, система коммуникации между хозяевами и гостями, а также механизмы доверия и безопасности.
Спроектируй масштабируемую систему бронирования авиабилетов, которая обрабатывает одновременные запросы пользователей от нескольких авиакомпаний, управляет инвентарем мест без перебронирования, реализует правила динамического ценообразования, безопасно обрабатывает платежи и интегрируется с API третьих сторон авиакомпаний, поддерживая весь цикл бронирования от поиска до выдачи билетов и отмены.
Спроектируй высокочастотную платформу биржи, которая поддерживает сопоставление ордеров в реальном времени, несколько типов ордеров и соответствие нормативным требованиям с требованиями к задержке на уровне микросекунд.
Спроектируй масштабируемую платформу форума со следующими основными функциями: посты и потокованные комментарии, организованные в древовидную структуру, алгоритмы ранжирования (hot, top, new, controversial), управление сообществами/сабреддитами, системы репутации пользователей, модерация контента, полнотекстовый поиск, real-time уведомления и способность обрабатывать внезапные всплески трафика на вирусном контенте.
Спроектируй real-time collaborative онлайн-редактор кода, который поддерживает несколько языков программирования, выполнение кода и интеграцию с системами контроля версий.
Как бы ты спроектировал масштабируемую платформу аналитики и метрик, способную принимать миллиарды событий в день, обрабатывать данные как в реальном времени, так и в пакетном режиме, эффективно хранить временные ряды метрик, поддерживать гибкие запросы и дашборды, реализовать политики хранения данных и срабатывать оповещения на основе настроенных пороговых значений?
Спроектируй масштабируемую систему обработки платежей, которая: - Работает с транзакциями от нескольких платежных провайдеров - Соблюдает ACID compliance - Предотвращает дублирование платежей через idempotency - Отвечает стандартам безопасности PCI-DSS - Управляет возвратами и конвертацией валют - Реализует двойную запись в бухгалтерском учёте для сверки лежера - Включает механизмы обнаружения мошенничества - Достигает высокой доступности