Тема: PostgreSQL
Какой тип пространственного индекса использует расширение PostGIS в PostgreSQL для эффективных геопространственных запросов?
A. B-tree индексы с оптимизацией сканирования по диапазонам
B. Hash-индексы для точного пространственного поиска
C. GIST-индексы с реализацией R-tree
D. GIN-индексы
Ответ: C
PostGIS использует GIST (Generalized Search Tree) индексы, внутри которых применяется R-tree индексирование. R-tree специально спроектированы для геометрических данных и эффективно обрабатывают пространственные запросы, например "найти все точки в радиусе X километров", без проверки каждой строки.
Какой тип пространственного индекса использует расширение PostGIS в PostgreSQL для эффективных геопространственных запросов?
A. B-tree индексы с оптимизацией сканирования по диапазонам
B. Hash-индексы для точного пространственного поиска
C. GIST-индексы с реализацией R-tree
D. GIN-индексы
Ответ: C
PostGIS использует GIST (Generalized Search Tree) индексы, внутри которых применяется R-tree индексирование. R-tree специально спроектированы для геометрических данных и эффективно обрабатывают пространственные запросы, например "найти все точки в радиусе X километров", без проверки каждой строки.
Тема: Индексирование баз данных
Какую технику оптимизации LSM-деревья используют, чтобы улучшить производительность чтения?
A. Кэширование всех данных в памяти, чтобы полностью избежать чтений с диска
B. Фильтры Блума, чтобы пропускать нерелевантные файлы
C. Сжатие всех данных
D. Использование хеш-индексов вместо LSM-деревьев
Ответ: B
Фильтры Блума - это вероятностные структуры данных, которые быстро определяют, что ключа точно нет в конкретной SSTable. Благодаря этому LSM-деревья могут пропускать проверку большинства файлов при чтении. Это значительно уменьшает необходимое количество чтений с диска.
Какую технику оптимизации LSM-деревья используют, чтобы улучшить производительность чтения?
A. Кэширование всех данных в памяти, чтобы полностью избежать чтений с диска
B. Фильтры Блума, чтобы пропускать нерелевантные файлы
C. Сжатие всех данных
D. Использование хеш-индексов вместо LSM-деревьев
Ответ: B
Фильтры Блума - это вероятностные структуры данных, которые быстро определяют, что ключа точно нет в конкретной SSTable. Благодаря этому LSM-деревья могут пропускать проверку большинства файлов при чтении. Это значительно уменьшает необходимое количество чтений с диска.
Тема: Шардирование
Верно ли следующее утверждение?
Простое хеш-шардирование по модулю, например hash(key) % N shards, позволяет легко добавлять и удалять шарды без значительного перемещения данных.
Ответ: Неверно
Простое хеширование по модулю требует масштабного перераспределения данных при изменении числа шардов. Переход с hash(key) % 4 на hash(key) % 5 меняет шард для большей части записей, поэтому приходится переносить почти все данные. Согласованное хеширование - другой подход: он уменьшает проблему, перемещая данные только с затронутых шардов.
Верно ли следующее утверждение?
Простое хеш-шардирование по модулю, например hash(key) % N shards, позволяет легко добавлять и удалять шарды без значительного перемещения данных.
Ответ: Неверно
Простое хеширование по модулю требует масштабного перераспределения данных при изменении числа шардов. Переход с hash(key) % 4 на hash(key) % 5 меняет шард для большей части записей, поэтому приходится переносить почти все данные. Согласованное хеширование - другой подход: он уменьшает проблему, перемещая данные только с затронутых шардов.
Тема: Цифры, которые нужно знать
Что обычно не становится первым узким местом в современных серверах приложений?
A. Объем памяти
B. Загрузка CPU
C. Пропускная способность сети
D. Задержка ответа
Ответ: A
Для современных серверов приложений 64-512 ГБ RAM уже обычный диапазон, поэтому объем памяти редко становится первым ограничением. Чаще узким местом становится загрузка CPU, еще до того как система упрется в память, сеть или задержку.
Что обычно не становится первым узким местом в современных серверах приложений?
A. Объем памяти
B. Загрузка CPU
C. Пропускная способность сети
D. Задержка ответа
Ответ: A
Для современных серверов приложений 64-512 ГБ RAM уже обычный диапазон, поэтому объем памяти редко становится первым ограничением. Чаще узким местом становится загрузка CPU, еще до того как система упрется в память, сеть или задержку.
Тема: CAP теорема
Верно ли следующее утверждение?
Для операции бронирования места в системе покупки билетов согласованность важнее доступности.
Ответ: Верно
Операция бронирования места должна быть согласованной, чтобы предотвратить двойное бронирование. Лучше отклонить запрос на бронирование во время сетевого разделения, чем продать одно и то же место дважды. При этом просмотр доступных событий может отдавать приоритет доступности и использовать согласованность в конечном счете.
Верно ли следующее утверждение?
Для операции бронирования места в системе покупки билетов согласованность важнее доступности.
Ответ: Верно
Операция бронирования места должна быть согласованной, чтобы предотвратить двойное бронирование. Лучше отклонить запрос на бронирование во время сетевого разделения, чем продать одно и то же место дважды. При этом просмотр доступных событий может отдавать приоритет доступности и использовать согласованность в конечном счете.
Тема: API Gateway
Что является примером управляемого сервиса API Gateway?
A. Kong
B. Express Gateway
C. AWS API Gateway
D. Tyk
Ответ: C
AWS API Gateway - полностью управляемый сервис от облачного провайдера. Kong, Express Gateway и Tyk - open-source решения, которые требуют больше настройки и управления.
Что является примером управляемого сервиса API Gateway?
A. Kong
B. Express Gateway
C. AWS API Gateway
D. Tyk
Ответ: C
AWS API Gateway - полностью управляемый сервис от облачного провайдера. Kong, Express Gateway и Tyk - open-source решения, которые требуют больше настройки и управления.
Тема: Основы сетей
Какая стратегия повторных вызовов снижает риск перегрузить восстанавливающиеся сервисы?
A. Экспоненциальный backoff
B. Немедленный повтор без паузы
C. Фиксированные интервалы
D. Без повторов
Ответ: A
Экспоненциальный backoff увеличивает паузу между повторами и разгружает сервис, который восстанавливается после сбоя. Jitter распределяет время повторного вызова у разных клиентов и снижает риск синхронного наплыва, когда все обращаются к сервису в один момент времени и мешают ему восстановиться.
Какая стратегия повторных вызовов снижает риск перегрузить восстанавливающиеся сервисы?
A. Экспоненциальный backoff
B. Немедленный повтор без паузы
C. Фиксированные интервалы
D. Без повторов
Ответ: A
Экспоненциальный backoff увеличивает паузу между повторами и разгружает сервис, который восстанавливается после сбоя. Jitter распределяет время повторного вызова у разных клиентов и снижает риск синхронного наплыва, когда все обращаются к сервису в один момент времени и мешают ему восстановиться.
Тема: Кэширование
Какая политика вытеснения удаляет элемент, к которому дольше всего не обращались?
A. LFU
B. LRU
C. FIFO
D. TTL
Ответ: B
LRU (Least Recently Used) вытесняет элемент, к которому дольше всего не обращались. Политика отслеживает порядок обращений и удаляет наименее недавно использованный элемент. Ее часто используют по умолчанию, потому что она хорошо подходит для нагрузок, где недавно использованные данные с высокой вероятностью понадобятся снова.
Какая политика вытеснения удаляет элемент, к которому дольше всего не обращались?
A. LFU
B. LRU
C. FIFO
D. TTL
Ответ: B
LRU (Least Recently Used) вытесняет элемент, к которому дольше всего не обращались. Политика отслеживает порядок обращений и удаляет наименее недавно использованный элемент. Ее часто используют по умолчанию, потому что она хорошо подходит для нагрузок, где недавно использованные данные с высокой вероятностью понадобятся снова.
Тема: Масштабирование чтения
В чем ключевая польза объединения одинаковых запросов при работе с горячими ключами?
A. Снижает использование памяти в кэшах за счет удаления дублей сохраненных записей между узлами
B. Ограничивает нагрузку на серверную часть до N запросов, по одному на сервер
C. Улучшает долю попаданий в кэш
D. Устраняет необходимость в сбросе кэша
Ответ: B
Объединение одинаковых запросов гарантирует, что даже если миллионы пользователей одновременно хотят одни и те же данные, серверная часть получит только N запросов: по одному на каждый сервер приложения, выполняющий объединение.
В чем ключевая польза объединения одинаковых запросов при работе с горячими ключами?
A. Снижает использование памяти в кэшах за счет удаления дублей сохраненных записей между узлами
B. Ограничивает нагрузку на серверную часть до N запросов, по одному на сервер
C. Улучшает долю попаданий в кэш
D. Устраняет необходимость в сбросе кэша
Ответ: B
Объединение одинаковых запросов гарантирует, что даже если миллионы пользователей одновременно хотят одни и те же данные, серверная часть получит только N запросов: по одному на каждый сервер приложения, выполняющий объединение.
Тема: Cогласованное хеширование
После хеширования ключа в позицию 42 на хеш-кольце как найти его базу данных?
A. Использовать 42 % number_of_databases
B. Идти против часовой стрелки до первой базы данных
C. Идти по часовой стрелке по кольцу до первого узла базы данных
D. Выбрать базу данных, ближайшую к 42
Ответ: 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 тысяч записей в секунду, шардирование ради масштабирования записи оправдано. Размер данных, архитектурный стиль и количество таблиц при таком масштабе сами по себе не являются причиной.
Что из этого является веской причиной шардировать базу данных размером 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.
Какова основная функция API Gateway?
A. Хранение данных и надежная запись
B. Маршрутизация запросов к бэкенд-сервисам
C. Рендеринг пользовательского интерфейса и client-side hydration
D. Оптимизация запросов к базе данных
Ответ: B
Основная функция API Gateway - маршрутизация запросов: определить, какой бэкенд-сервис должен обработать каждый входящий запрос. Он также может выполнять middleware-задачи, но именно маршрутизация является главной причиной использовать API Gateway.
❤1
Тема: Основы сетей
Какое преимущество CDN (сетей доставки контента) является главным?
A. Снижение задержки
B. Усиление безопасности
C. Повышение надежности
D. Снижение затрат
Ответ: A
CDN в первую очередь снижают задержку: контент кэшируется на edge-узлах ближе к пользователю. Есть и другие плюсы, но основная цель - уменьшить расстояние на которое передаются данные и ускорить ответ.
Какое преимущество CDN (сетей доставки контента) является главным?
A. Снижение задержки
B. Усиление безопасности
C. Повышение надежности
D. Снижение затрат
Ответ: A
CDN в первую очередь снижают задержку: контент кэшируется на edge-узлах ближе к пользователю. Есть и другие плюсы, но основная цель - уменьшить расстояние на которое передаются данные и ускорить ответ.
❤1
Тема: PostgreSQL
Верно ли следующее утверждение?
GIN-индексы PostgreSQL могут эффективно обрабатывать и полнотекстовый поиск, и запросы на поиск по элементам в JSONB.
Ответ: Верно
GIN (Generalized Inverted Index) в PostgreSQL работает как предметный указатель в конце книги: хранит соответствие значений их расположению. Поэтому он хорошо подходит и для полнотекстового поиска, где слова сопоставляются с документами, и для JSONB-запросов, где ключи и значения JSON сопоставляются со строками.
Верно ли следующее утверждение?
GIN-индексы PostgreSQL могут эффективно обрабатывать и полнотекстовый поиск, и запросы на поиск по элементам в JSONB.
Ответ: Верно
GIN (Generalized Inverted Index) в PostgreSQL работает как предметный указатель в конце книги: хранит соответствие значений их расположению. Поэтому он хорошо подходит и для полнотекстового поиска, где слова сопоставляются с документами, и для JSONB-запросов, где ключи и значения JSON сопоставляются со строками.
❤1👍1
Тема: Масштабирование записи
Какова основная цель иерархической агрегации при масштабировании записи?
A. Улучшить производительность чтения
B. Снижать объем записи на каждом этапе
C. Повысить надежность данных между распределенными репликами и резервными узлами
D. Упростить код приложения
Ответ: B
Иерархическая агрегация обрабатывает данные поэтапно, уменьшая объем на каждом шаге. Ее используют для больших потоков данных, где нужны агрегированные представления, а не отдельные события.
Какова основная цель иерархической агрегации при масштабировании записи?
A. Улучшить производительность чтения
B. Снижать объем записи на каждом этапе
C. Повысить надежность данных между распределенными репликами и резервными узлами
D. Упростить код приложения
Ответ: B
Иерархическая агрегация обрабатывает данные поэтапно, уменьшая объем на каждом шаге. Ее используют для больших потоков данных, где нужны агрегированные представления, а не отдельные события.
👍1
Тема: API Gateway
Где находятся два уровня балансировки нагрузки в типичной архитектуре API Gateway?
A. Между базами данных и между кэшами
B. Перед экземплярами gateway и внутри gateway для бэкенд сервисов
C. Только на региональном уровне между географически распределенными дата-центрами
D. Только внутри отдельных бэкенд сервисов
Ответ: B
Обычно есть два уровня. Первый - балансировщик перед экземплярами API Gateway, который распределяет входящие клиентские запросы по нескольким репликам gateway. Второй - сам gateway, который балансирует исходящие запросы между экземплярами каждого бэкенд-сервиса.
Где находятся два уровня балансировки нагрузки в типичной архитектуре API Gateway?
A. Между базами данных и между кэшами
B. Перед экземплярами gateway и внутри gateway для бэкенд сервисов
C. Только на региональном уровне между географически распределенными дата-центрами
D. Только внутри отдельных бэкенд сервисов
Обычно есть два уровня. Первый - балансировщик перед экземплярами API Gateway, который распределяет входящие клиентские запросы по нескольким репликам gateway. Второй - сам gateway, который балансирует исходящие запросы между экземплярами каждого бэкенд-сервиса.
👍2🔥1
Тема: Моделирование данных
Какие три ключевых фактора определяют решения при проектировании схемы?
A. Производительность, безопасность и поддерживаемость
B. Объем данных, паттерны доступа и согласованность
C. Стоимость, сложность и потенциал горизонтального масштабирования
D. Скорость, надежность и гибкость
Ответ: B
Объем данных определяет, где данные физически могут храниться. Паттерны доступа определяют большинство проектных решений. Требования к согласованности определяют, насколько тесно данные могут быть связаны между собой. Эти три фактора направляют все решения при проектировании схемы.
Какие три ключевых фактора определяют решения при проектировании схемы?
A. Производительность, безопасность и поддерживаемость
B. Объем данных, паттерны доступа и согласованность
C. Стоимость, сложность и потенциал горизонтального масштабирования
D. Скорость, надежность и гибкость
Объем данных определяет, где данные физически могут храниться. Паттерны доступа определяют большинство проектных решений. Требования к согласованности определяют, насколько тесно данные могут быть связаны между собой. Эти три фактора направляют все решения при проектировании схемы.
👍1
Тема: PostgreSQL
Какая стратегия масштабирования PostgreSQL распределяет данные по нескольким экземплярам PostgreSQL на основе выбранной колонки?
A. Партиционирование таблиц внутри одного экземпляра базы данных
B. Реплики для чтения
C. Горизонтальное шардирование
D. Пул соединений
Ответ: C
Горизонтальное шардирование распределяет данные по нескольким экземплярам PostgreSQL на основе ключа шардирования, например user_id. В отличие от встроенного партиционирования таблиц в PostgreSQL, которое делит данные внутри одного экземпляра, шардирование требует внешней логики для маршрутизации запросов в нужный экземпляр.
Какая стратегия масштабирования PostgreSQL распределяет данные по нескольким экземплярам PostgreSQL на основе выбранной колонки?
A. Партиционирование таблиц внутри одного экземпляра базы данных
B. Реплики для чтения
C. Горизонтальное шардирование
D. Пул соединений
Горизонтальное шардирование распределяет данные по нескольким экземплярам PostgreSQL на основе ключа шардирования, например user_id. В отличие от встроенного партиционирования таблиц в PostgreSQL, которое делит данные внутри одного экземпляра, шардирование требует внешней логики для маршрутизации запросов в нужный экземпляр.
🔥2
Тема: Cassandra
Что определяет ключ партиционирования в Cassandra?
A. Порядок сортировки строк внутри таблицы
B. К какому разделу и узлу относится строка
C. Стратегию репликации для пространства ключей (keyspace)
D. Уровень согласованности для чтения из этого раздела
Ответ: B
Ключ партиционирования состоит из одной или нескольких колонок и определяет, в какой раздел попадет строка. Это критично для распределения данных по узлам кластера с помощью согласованного хеширования.
Что определяет ключ партиционирования в Cassandra?
A. Порядок сортировки строк внутри таблицы
B. К какому разделу и узлу относится строка
C. Стратегию репликации для пространства ключей (keyspace)
D. Уровень согласованности для чтения из этого раздела
Ключ партиционирования состоит из одной или нескольких колонок и определяет, в какой раздел попадет строка. Это критично для распределения данных по узлам кластера с помощью согласованного хеширования.
❤2
Тема: Индексирование баз данных
Верно ли следующее утверждение?
Порядок колонок в составном индексе не влияет на производительность запросов.
Ответ: Неверно
Порядок колонок в составных индексах критически важен. Индекс по (user_id, created_at) может эффективно обрабатывать запросы, которые фильтруют только по user_id или по обеим колонкам, но не может эффективно обрабатывать запросы, которые фильтруют только по created_at. База данных может использовать индекс только по префиксам слева направо.
Почитать подробнее
Насколько хорошо ты знаешь System Design?
Пройди полный тест абсолютно бесплатно: @nowinterviewbot
Верно ли следующее утверждение?
Порядок колонок в составном индексе не влияет на производительность запросов.
Почитать подробнее
Насколько хорошо ты знаешь System Design?
Пройди полный тест абсолютно бесплатно: @nowinterviewbot
❤1🔥1