Подготовка к интервью

Банк вопросов с собеседований

Разбирайте реальные вопросы, сверяйтесь с подробными ответами и готовьтесь по технологиям и компаниям.

3013 вопросов 1634 компании 353 технологии

Усильте резюме перед собеседованием

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

Анализ резюме
Сбросить

Каталог

Результаты поиска

Найдено: 3013
System Design

Мы кэшируем данные популярного сериала. В момент выхода новой серии миллион пользователей одновременно запрашивают эти данные, а TTL кэша истекает. Что произойдёт с базой данных и как защитить систему от этой проблемы?

Возникнет cache stampede: множество одновременных промахов отправит одинаковые запросы в базу. Нужны объединение обновлений, выдача допустимо устаревшего значения и ограничение нагрузки на источник.

Читать ответ
Теория

Как ускорить фильтрацию аналитических данных по дням без индексов, предварительно подготовив таблицу средствами PostgreSQL?

Разбейте таблицу на диапазонные партиции по дате, чтобы partition pruning исключал ненужные дни. Это уменьшает объём чтения даже без индекса внутри каждой партиции.

Читать ответ
Теория

Какие типы индексов PostgreSQL вы знаете и применяли? Что означает B в B-tree?

В PostgreSQL есть B-tree, Hash, GiST, SP-GiST, GIN и BRIN. B-tree — сбалансированное многопутевое дерево; букву B часто связывают с balanced, но это не обязательная официальная расшифровка.

Читать ответ
Теория

Представьте, что нужно добавить поддержку новой СУБД, например StarRocks, в генератор DDL, где уже есть реализации для PostgreSQL, ClickHouse и Greenplum. Что будете делать?

Добавлю отдельный диалект генерации через существующий контракт и проверю различия типов, ключей, распределения и поддерживаемых DDL-операций. StarRocks нельзя считать просто PostgreSQL с другим именем.

Читать ответ
Теория

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

Подключитесь клиентом СУБД через опубликованный порт либо запустите клиент внутри контейнера. Сначала проверьте окружение, базу и права; для просмотра предпочтительна read-only роль.

Читать ответ
Теория

Чем паттерн Data Mapper в SQLAlchemy концептуально отличается от Active Record в Django ORM?

Data Mapper отделяет хранение объектов от их поведения; в SQLAlchemy этим занимается ORM и Session. Active Record связывает объект записи с методами сохранения и поиска, как у моделей Django.

Читать ответ
Теория

Что делать, если SQL-запрос уже оптимизирован, но всё равно остаётся тяжёлым?

Если стоимость определяется самим объёмом работы, меняйте способ получения результата: предрасчёт, агрегаты, кеш, асинхронное выполнение или ограничение объёма. Начните с требований к свежести.

Читать ответ
Теория

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

Разделите задержку на ожидание пула, установление соединения, сеть, выполнение SQL и обработку результата. Сопоставьте тайминги приложения и базы по одному запросу.

Читать ответ
System Design

LeetCode #? — Клиент жалуется на медленный endpoint с аналитикой продаж: сложный SQL с множеством JOIN и вычислениями может выполняться более минуты. Допускается задержка актуальности данных на 5–10 минут. Какое самое простое решение вы предложите?

При допустимой задержке 5–10 минут самое простое решение — заранее вычислять результат и отдавать готовый кеш или отчётную таблицу. Тяжёлый SQL не должен выполняться на каждый пользовательский запрос.

Читать ответ
Теория

Какие способы оптимизации SELECT-запросов в PostgreSQL вы знаете, помимо индексов?

Сократите объём работы запроса: выбирайте нужные колонки, фильтруйте и агрегируйте раньше, устраняйте лишние JOIN и N+1. Проверяйте план, статистику, блокировки и выход сортировок на диск.

Читать ответ
Теория

Существует ли балансировка базы данных по идентификаторам записей, или это относится к шардированию либо партиционированию?

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

Читать ответ