System Design | Вопросы на собеседовании
73 subscribers
9 links
Download Telegram
Тема: Основы сетей

Какая стратегия повторных вызовов снижает риск перегрузить восстанавливающиеся сервисы?

A. Экспоненциальный backoff
B. Немедленный повтор без паузы
C. Фиксированные интервалы
D. Без повторов

Ответ: A

Экспоненциальный backoff увеличивает паузу между повторами и разгружает сервис, который восстанавливается после сбоя. Jitter распределяет время повторного вызова у разных клиентов и снижает риск синхронного наплыва, когда все обращаются к сервису в один момент времени и мешают ему восстановиться.
Тема: Кэширование

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

A. LFU
B. LRU
C. FIFO
D. TTL

Ответ: B

LRU (Least Recently Used) вытесняет элемент, к которому дольше всего не обращались. Политика отслеживает порядок обращений и удаляет наименее недавно использованный элемент. Ее часто используют по умолчанию, потому что она хорошо подходит для нагрузок, где недавно использованные данные с высокой вероятностью понадобятся снова.
Тема: Масштабирование чтения

В чем ключевая польза объединения одинаковых запросов при работе с горячими ключами?

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

Ответ: B

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

После хеширования ключа в позицию 42 на хеш-кольце как найти его базу данных?

A. Использовать 42 % number_of_databases
B. Идти против часовой стрелки до первой базы данных
C. Идти по часовой стрелке по кольцу до первого узла базы данных
D. Выбрать базу данных, ближайшую к 42

Ответ: C

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

Что из этого является веской причиной шардировать базу данных размером 5 ТБ?

A. Размер данных превышает лимиты одного экземпляра
B. Нагрузка на запись превышает возможности одного экземпляра
C. Вы хотите использовать микросервисы
D. У вас больше 100 таблиц

Ответ: B

5 ТБ заметно меньше лимита хранения современных баз данных в 64 TiB. Но если нагрузка на запись превышает возможности одного экземпляра, обычно 10-20 тысяч записей в секунду, шардирование ради масштабирования записи оправдано. Размер данных, архитектурный стиль и количество таблиц при таком масштабе сами по себе не являются причиной.
Тема: API Gateway

Какова основная функция API Gateway?

A. Хранение данных и надежная запись
B. Маршрутизация запросов к бэкенд-сервисам
C. Рендеринг пользовательского интерфейса и client-side hydration
D. Оптимизация запросов к базе данных

Ответ: B

Основная функция API Gateway - маршрутизация запросов: определить, какой бэкенд-сервис должен обработать каждый входящий запрос. Он также может выполнять middleware-задачи, но именно маршрутизация является главной причиной использовать API Gateway.
1
Тема: Основы сетей

Какое преимущество CDN (сетей доставки контента) является главным?

A. Снижение задержки
B. Усиление безопасности
C. Повышение надежности
D. Снижение затрат

Ответ: A

CDN в первую очередь снижают задержку: контент кэшируется на edge-узлах ближе к пользователю. Есть и другие плюсы, но основная цель - уменьшить расстояние на которое передаются данные и ускорить ответ.
1
Тема: PostgreSQL

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

GIN-индексы PostgreSQL могут эффективно обрабатывать и полнотекстовый поиск, и запросы на поиск по элементам в JSONB.

Ответ:     Верно

GIN (Generalized Inverted Index) в PostgreSQL работает как предметный указатель в конце книги: хранит соответствие значений их расположению. Поэтому он хорошо подходит и для полнотекстового поиска, где слова сопоставляются с документами, и для JSONB-запросов, где ключи и значения JSON сопоставляются со строками.
1👍1
Тема: Масштабирование записи

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

A. Улучшить производительность чтения
B. Снижать объем записи на каждом этапе
C. Повысить надежность данных между распределенными репликами и резервными узлами
D. Упростить код приложения

Ответ: B

Иерархическая агрегация обрабатывает данные поэтапно, уменьшая объем на каждом шаге. Ее используют для больших потоков данных, где нужны агрегированные представления, а не отдельные события.
👍1
Тема: API Gateway

Где находятся два уровня балансировки нагрузки в типичной архитектуре API Gateway?

A. Между базами данных и между кэшами
B. Перед экземплярами gateway и внутри gateway для бэкенд сервисов
C. Только на региональном уровне между географически распределенными дата-центрами
D. Только внутри отдельных бэкенд сервисов

Ответ: B

Обычно есть два уровня. Первый - балансировщик перед экземплярами API Gateway, который распределяет входящие клиентские запросы по нескольким репликам gateway. Второй - сам gateway, который балансирует исходящие запросы между экземплярами каждого бэкенд-сервиса.
👍2🔥1
Тема: Моделирование данных

Какие три ключевых фактора определяют решения при проектировании схемы?

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

Ответ: B

Объем данных определяет, где данные физически могут храниться. Паттерны доступа определяют большинство проектных решений. Требования к согласованности определяют, насколько тесно данные могут быть связаны между собой. Эти три фактора направляют все решения при проектировании схемы.
👍1
Тема: PostgreSQL

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

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

Ответ: C

Горизонтальное шардирование распределяет данные по нескольким экземплярам PostgreSQL на основе ключа шардирования, например user_id. В отличие от встроенного партиционирования таблиц в PostgreSQL, которое делит данные внутри одного экземпляра, шардирование требует внешней логики для маршрутизации запросов в нужный экземпляр.
🔥2
Тема: Cassandra

Что определяет ключ партиционирования в Cassandra?

A. Порядок сортировки строк внутри таблицы
B. К какому разделу и узлу относится строка
C. Стратегию репликации для пространства ключей (keyspace)
D. Уровень согласованности для чтения из этого раздела

Ответ: B

Ключ партиционирования состоит из одной или нескольких колонок и определяет, в какой раздел попадет строка. Это критично для распределения данных по узлам кластера с помощью согласованного хеширования.
2
Тема: Индексирование баз данных

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

Порядок колонок в составном индексе не влияет на производительность запросов.

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

Порядок колонок в составных индексах критически важен. Индекс по (user_id, created_at) может эффективно обрабатывать запросы, которые фильтруют только по user_id или по обеим колонкам, но не может эффективно обрабатывать запросы, которые фильтруют только по created_at. База данных может использовать индекс только по префиксам слева направо.

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

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