Конфиденциальность пользователей в настоящее время является важной темой для большинства технологических компаний.

На Facebook вы, возможно, заметили, что вы можете установить разные уровни конфиденциальности для публикуемых вами сообщений, чтобы они были видны только определенному набору пользователей, например общедоступным, друзьям, друзьям друзей и т. д.

Ключевая особенность

Схема реализации конфиденциальности может быть довольно сложной, поэтому мы ограничимся несколькими основными функциями, о которых можно рассказать за 45-минутное интервью. В этом вопросе вам будет предложено разработать серверную часть системы со следующими ключевыми функциями:

  1. Разрешить пользователю указывать различные уровни конфиденциальности для публикации, чтобы она была видна только определенному набору пользователей на Facebook.
  2. Чтобы не усложнять обсуждение, реализуйте два уровня конфиденциальности: «Общий» и «Друзья».
  3. Более сложные уровни, такие как «Друзья друзей» и «Пользовательские группы», можно обсудить ближе к концу интервью, если останется время.

Подробная структура

Вы можете использовать следующую структуру, чтобы лучше ответить на вопрос о дизайне настроек конфиденциальности Facebook в интервью. Это поможет вам сохранить концентрацию и лучше ответить на него.

  1. Основные характеристики
    — как обсуждалось выше
  2. Цели проектирования
    — Минимальная задержка
    — Высокая согласованность
    — Допуск к разделам
    — Мы будем терпеть более низкую доступность в интересах высокой согласованности (теорема CAP)
    — Чтение vs. , Напишите тяжелый
  3. Масштабная оценка
    — число активных пользователей в день (DAU)
    — количество запросов в секунду для чтения
    — количество запросов в секунду для записи
    — данные, генерируемые каждый день и за 10 лет (использование хранилища)
    — приблизительное необходимое количество серверов
  4. API REST
    — /setPrivacyLevel (API записи)
    — /canView (API чтения)
  5. Высокоуровневый дизайн
    — Обсудите различные уровни конфиденциальности и структуру данных для их определения.
    — Объясните, как система будет определять, может ли публикация отображаться для определенного пользователя или нет.
    — Как создать хранилище ключей и значений для сохранения данных о друзьях пользователей.
  6. Проектирование базы данных (уровень данных)
    — Дизайн схемы
    — SQL или No-SQL
    — Сегментирование: сегментирование на основе хэшей и согласованное хеширование
    — Репликация (для отказоустойчивости)< br /> — Кворум: непротиворечивость чтения + записи
  7. Уровень приложения
    — несколько серверов без сохранения состояния с балансировщиком нагрузки (циклический перебор)
  8. Кэширование для быстрого извлечения
     — Политика исключения (LRU)
  9. Подробная схема архитектуры

Необязательный

Если позволяет время, вы также можете обсудить следующее ближе к концу интервью:

  1. Сложные уровни конфиденциальности
    — Друзья друзей
    — Пользовательские группы
  2. Безопасность, например, ACL (список контроля доступа)

Подготовительный материал к этому вопросу

Узнайте больше об основных функциях, целях проектирования, оценках масштаба, REST API, высокоуровневом проектировании, подробной архитектурной схеме и структуре, чтобы эффективно подготовиться и ответить на этот главный вопрос, заданный в интервью по системному проектированию на Facebook.

⬇️ Подробные заметки о настройках конфиденциальности дизайна на Facebook

Интервью по дизайну системы Facebook

Если вы не читали нашу статью о главных вопросах на собеседовании по проектированию систем Facebook, мы рекомендуем прочитать ее, нажав на ссылку ниже:



Взлом поведенческого интервью Facebook

В случае, если вы не читали нашу статью «Лучшие вопросы о поведенческих интервью на Facebook», мы рекомендуем прочитать ее, нажав на ссылку ниже:



Полезные ссылки

Безлимитный план Educative.io [💰 скидка 10% для первых 100 пользователей]
Членство на TryExponent.com [💰 Ограниченное по времени предложение 10%]

👩‍💻 Лучший курс собеседования по проектированию систем
🚀 Полный курс собеседования SWE [💰 Предложение 10% ограничено по времени]
🙋‍♀️ Руководство по проведению собеседования [💰 Специальная скидка]
📚 Рекомендуемая книга для подготовки к собеседованию (на Amazon)

Чтобы быть в курсе новых публикаций, подпишитесь и следите за нами!

🎥 Youtube: youtube.com/TheInterviewSage
📸 Instagram: instagram.com/TheInterviewSage
🏠 Facebook: facebook.com/TheInterviewSage
👩‍💼 LinkedIn: linkedin. com/in/TheInterviewSage
🐦 Twitter: twitter.com/InterviewSage

Эта статья является частью серии интервью по системному проектированию на Facebook. Итак, подпишитесь на наш канал YouTube, чтобы получать уведомления, когда будет опубликовано наше следующее видео из этой серии. Спасибо за прочтение!



Полное раскрытие информации и отказ от ответственности