System Design | Вопросы на собеседовании
209 subscribers
48 links
Download Telegram
Тема: Kafka

Верно ли следующее утверждение?

Retention в Kafka можно настроить по времени: хранить сообщения N дней, по размеру: хранить до N байт на раздел, или сразу по обоим ограничениям.

Ответ:     Верно

Retention темы управляется настройками `retention.ms` для времени и `retention.bytes` для размера. Когда достигается любой из лимитов, старые части журнала удаляются. По умолчанию Kafka хранит данные 7 дней без ограничения по размеру, но оба параметра можно настраивать отдельно для каждой темы.

Почитать подробнее

Насколько хорошо ты знаешь System Design?
Пройди полный тест абсолютно бесплатно: @nowinterviewbot
3
Тема: Многошаговые процессы

В Temporal какое ключевое требование относится к workflow, а какое - к activity?

A. И то, и другое должно быть быстрым
B. Workflows должны быть детерминированными, activities - идемпотентными
C. И то, и другое должно быть идемпотентным
D. Activities должны быть детерминированными, workflows - идемпотентными

Ответ: B

Workflows должны быть детерминированными: одинаковые входные данные и история должны производить одинаковые результаты. Это нужно для восстановления через повторное воспроизведение. Activities должны быть идемпотентными, то есть их можно вызывать несколько раз с тем же результатом, но после успешного выполнения они не будут повторяться.

Почитать подробнее

Насколько хорошо ты знаешь System Design?
Пройди полный тест абсолютно бесплатно: @nowinterviewbot
👍3
Тема: Управление длительными задачами

Как предотвратить дублирование работы, когда пользователь несколько раз нажимает "Сгенерировать отчет"?

A. Ограничение частоты запросов на API-шлюзе
B. Ключи идемпотентности
C. Балансировка нагрузки
D. Кэширование

Ответ: B

Ключи идемпотентности, которые объединяют идентификатор пользователя, действие и временную метку, гарантируют, что одинаковые операции вернут существующий идентификатор задачи, а не создадут дублирующую задачу.

Почитать подробнее

Насколько хорошо ты знаешь System Design?
Пройди полный тест абсолютно бесплатно: @nowinterviewbot
👍1
Тема: Kafka

Какой из вариантов не является реальным способом бороться с горячими разделами в Kafka?

A. Убрать ключ, чтобы сообщения распределялись по разделам round-robin
B. Добавить случайный salt к ключам, чтобы распределить связанные сообщения по разделам
C. Использовать составной ключ, например entityId + bucket, чтобы разбить горячий ключ
D. Kafka автоматически обнаруживает горячий раздел и делит его на большее число разделов

Ответ: D

Kafka не умеет сама делить или ребалансировать горячий раздел: число разделов фиксируется после настройки, а перенос данных требует ручного переназначения. Рабочие способы - распределять нагрузку, убирая ключ или добавляя salt к ключам, либо использовать составной ключ, чтобы трафик попадал в несколько разделов.

Почитать подробнее

Насколько хорошо ты знаешь System Design?
Пройди полный тест абсолютно бесплатно: @nowinterviewbot
1💯1
Разыгрываем месячную premium-подписку на NowInterview.

Подписка дает полный доступ к платформе: всем премиум-статьям и задачам с интерактивной практикой.

Принять участие в розыгрыше просто:

1. Подпишитесь на телеграм-каналы @system_design, @nowinterview, @systemdesignquiz
2. Подпишитесь на youtube-канал NowInterview
3. Отправьте команду /free в боте @nowinterviewbot.
4. Победитель будет выбран случайным образом вечером в воскресенье.
🔥2
Тема: Основы сетей

Какой тип балансировщика маршрутизирует трафик по порту TCP/UDP и IP-адресу, не анализируя содержимое прикладного уровня?

A. Уровень 4
B. Уровень 7
C. Оба типа
D. Ни один из типов

Ответ: A

Балансировщики уровня 4 работают на транспортном уровне: решение принимают по IP и портам TCP/UDP, не заглядывая в payload приложения. Балансировщики уровня 7 смотрят на HTTP-заголовки, URL и другие данные приложения, чтобы маршрутизировать точнее.

Почитать подробнее

Насколько хорошо ты знаешь System Design?
Пройди полный тест абсолютно бесплатно: @nowinterviewbot
👍1💯1
Тема: Flink

Для чего в первую очередь предназначен Apache Flink?

A. Пакетная обработка больших наборов данных используя конвейеры в стиле MapReduce
B. Потоковая обработка непрерывных данных с хранением состояния
C. Отдача статического веб-контента
D. Управление транзакциями базы данных

Ответ: B

Flink - dataflow-движок, специально созданный для потоковой обработки с хранением состояния. Он позволяет обрабатывать непрерывные потоки данных и сохранять состояние между событиями.

Почитать подробнее

Насколько хорошо ты знаешь System Design?
Пройди полный тест абсолютно бесплатно: @nowinterviewbot
👍2
Тема: Цифры, которые нужно знать

Что часто заставляет инженеров переусложнять системы при проектировании?

A. Использование устаревших ограничений железа
B. Следование лучшим практикам безопасности
C. Правильно настроенный мониторинг
D. Чистый код

Ответ: A

Когда инженеры опираются на представления о железе из 2015-2020 годов, они сильно недооценивают современные возможности. В результате появляются неоправданно сложные распределенные решения там, где хватило бы простой архитектуры.

Почитать подробнее

Насколько хорошо ты знаешь System Design?
Пройди полный тест абсолютно бесплатно: @nowinterviewbot
🔥1
Тема: Кэширование

Верно ли следующее утверждение?

Write-through кэширование дает настоящую атомарную согласованность между кэшем и базой данных: либо оба обновления фиксируются, либо оба откатываются.

Ответ: Неверно

Write-through записывает и в кэш, и в базу данных, но это две разные системы без распределенной транзакции. Запись в базу может пройти, а запись в кэш - нет, или наоборот, и данные разойдутся. По сравнению с cache-aside write-through уменьшает окно рассогласования, но не убирает его полностью без механизма распределенных транзакций.

Почитать подробнее

Насколько хорошо ты знаешь System Design?
Пройди полный тест абсолютно бесплатно: @nowinterviewbot
👍2
Тема: Elasticsearch

Как связаны Elasticsearch и Apache Lucene?

A. Elasticsearch и Lucene - конкурирующие поисковые движки
B. Elasticsearch - распределенный слой поверх Lucene
C. Lucene - распределенная оболочка вокруг Elasticsearch
D. Elasticsearch заменил Lucene и не использует его код

Ответ: B

Elasticsearch - распределенный слой управления: координация кластера, API, шардирование и обновление почти в реальном времени. Apache Lucene - встроенная библиотека, которая выполняет само индексирование и поиск на каждом шарде.

Почитать подробнее

Насколько хорошо ты знаешь System Design?
Пройди полный тест абсолютно бесплатно: @nowinterviewbot
Тема: Работа с большими файлами

В чем главная сложность синхронизации состояния при прямых загрузках?

A. Высокая сетевая задержка между клиентом и объектным хранилищем
B. Поддержание синхронизации метаданных базы данных с хранилищем объектов
C. Недостаточная емкость хранилища между зонами доступности
D. Сложные требования к аутентификации

Ответ: B

Поскольку загрузки обходят ваши серверы, метаданные в базе данных могут разойтись с тем, что реально есть в хранилище объектов. Поэтому нужны уведомления о событиях и сверка состояния.

Почитать подробнее

Насколько хорошо ты знаешь System Design?
Пройди полный тест абсолютно бесплатно: @nowinterviewbot
🔥1
Тема: Индексирование баз данных

Верно ли следующее утверждение?

R-trees гибче, чем Quadtrees, потому что используют пересекающиеся прямоугольники вместо фиксированного деления на сетку.

Ответ:     Верно

R-trees подстраивают ограничивающие прямоугольники под фактическое распределение данных, и эти прямоугольники могут пересекаться. Quadtrees жестко делят пространство на равные квадранты. Такая гибкость позволяет R-trees эффективно индексировать и точки, и сложные формы в одной структуре.

Почитать подробнее

Насколько хорошо ты знаешь System Design?
Пройди полный тест абсолютно бесплатно: @nowinterviewbot
2
Тема: Многошаговые процессы

Для чего используют версионирование workflow?

A. Оптимизация производительности
B. Обновление логики workflow без нарушения работы уже запущенных workflow
C. Резервное копирование данных и восстановление после аварии
D. Балансировка нагрузки

Ответ: B

Версионирование workflow позволяет отдельно развертывать новые версии кода workflow: старые workflow продолжают выполняться на старой версии, а новые используют новую версию.

Почитать подробнее

Насколько хорошо ты знаешь System Design?
Пройди полный тест абсолютно бесплатно: @nowinterviewbot
Тема: DynamoDB

Как DynamoDB реализует чтение со строгой согласованностью?

A. Читает из всех реплик одновременно и принимает решение кворумом
B. Направляет чтение на ведущий узел раздела
C. Использует распределенные блокировки на всех узлах
D. Кэширует все данные в памяти

Ответ: B

Чтение со строгой согласованностью направляется прямо на ведущий узел раздела. Он убеждается, что располагает самыми свежими данными, прежде чем ответить. Такое чтение потребляет больше единиц емкости чтения и может иметь большую задержку.

Почитать подробнее

Насколько хорошо ты знаешь System Design?
Пройди полный тест абсолютно бесплатно: @nowinterviewbot
🔥1
Тема: Масштабирование чтения

Верно ли следующее утверждение?

Синхронная репликация обеспечивает согласованность, но добавляет задержку, а асинхронная репликация быстрее, но может отдавать устаревшие данные.

Ответ:     Верно

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

Почитать подробнее

Насколько хорошо ты знаешь System Design?
Пройди полный тест абсолютно бесплатно: @nowinterviewbot
👍1
Тема: Flink

Верно ли следующее утверждение?

Гарантии Flink \"exactly-once\" автоматически распространяются на все внешние системы, такие как базы данных и API.

Ответ: Неверно

Flink гарантирует семантику \"exactly-once\" для операций с внутренним состоянием, но внешние системы все равно могут увидеть повторные записи во время восстановления после отказа. Для сквозной обработки exactly-once нужны идемпотентные операции или транзакционное поведение.

Почитать подробнее

Насколько хорошо ты знаешь System Design?
Пройди полный тест абсолютно бесплатно: @nowinterviewbot
Тема: Многошаговые процессы

Верно ли следующее утверждение?

Идемпотентность activities предотвращает проблемы, когда движки workflow повторяют неудачные activities.

Ответ:     Верно

Идемпотентные activities можно вызывать несколько раз с одинаковыми входными данными, и они дадут тот же результат. Это предотвращает проблемы вроде двойного списания денег или дублирующихся писем, когда движок workflow повторяет activities.

Почитать подробнее

Насколько хорошо ты знаешь System Design?
Пройди полный тест абсолютно бесплатно: @nowinterviewbot
👍3
Тема: Шардирование

Какой подход устраняет необходимость в распределенных транзакциях между шардами?

A. Использовать двухфазный коммит для каждой операции записи между шардами
B. Спроектировать данные так, чтобы связанные сущности жили на одном шарде
C. Принять постоянную рассогласованность данных
D. Опрашивать все шарды для каждой транзакции

Ответ: B

Если шардировать по user_id и хранить все данные пользователя на его шарде, например баланс, историю и профиль, межшардовые транзакции не понадобятся. Все записи для пользователя будут операциями в одном шарде: они быстрые и атомарные без распределенной координации.

Почитать подробнее

Насколько хорошо ты знаешь System Design?
Пройди полный тест абсолютно бесплатно: @nowinterviewbot
👍2💯1
Тема: Обновления в реальном времени

Какой подход к обновлению клиента требует наибольших накладных расходов на установку соединения, но дает двусторонний обмен сообщениями?

A. Простой polling
B. Long polling
C. WebSocket
D. Server-Sent Events

Ответ: C

WebSocket требует процедуру апгрейда соединения и постоянного TCP-состояния, но позволяет обмениваться сообщениями в обе стороны с низкой задержкой.

Почитать подробнее

Насколько хорошо ты знаешь System Design?
Пройди полный тест абсолютно бесплатно: @nowinterviewbot
🏆2
Тема: Масштабирование чтения

Денормализацию используют, чтобы ускорить чтение. Что из перечисленного не является ее минусом?

A. Она использует больше места в хранилище, потому что данные дублируются
B. Записи становятся сложнее, потому что одни и те же данные нужно обновлять в нескольких местах
C. Чтение становится медленнее
D. Копии данных могут рассинхронизироваться

Ответ: C

Денормализация ускоряет чтение, а не замедляет его. В этом весь смысл. Реальные минусы: больше места в хранилище из-за дублирования данных, более сложная запись из-за обновления данных в нескольких местах и риск нарушения согласованности, если обновление не попадет во все копии. Мы обмениваем простоту записи и объем хранилища на более быстрое чтение.

Почитать подробнее

Насколько хорошо ты знаешь System Design?
Пройди полный тест абсолютно бесплатно: @nowinterviewbot