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

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

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

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

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

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

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

Каталог

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

Найдено: 3013
Поведенческий

Были ли кейсы, когда понимали, что с ORM лучше перейти на raw SQL?

Приведите реальный случай, где SQL делал запрос яснее или эффективнее: сложная агрегация, оконные функции, CTE или массовая операция. Переход оправдывают планом и поддерживаемостью, а не неприязнью к ORM.

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

Объясните различия и совместимость строчных блокировок PostgreSQL: SELECT ... FOR UPDATE, FOR NO KEY UPDATE, FOR SHARE и FOR KEY SHARE. Чем они отличаются от оптимистичной блокировки?

FOR UPDATE конфликтует со всеми четырьмя режимами. NO KEY UPDATE допускает KEY SHARE; SHARE допускает SHARE и KEY SHARE; KEY SHARE блокирует UPDATE, но совместим с остальными названными режимами.

Читать ответ
Поведенческий

Насколько вам комфортно работать с PostgreSQL и чистым SQL вместо ORM, например SQLAlchemy?

Опишите уровень владения SQL на реальных задачах: join, агрегации, транзакции, планы и индексы. Уточните, где использовали ORM, а где осознанно переходили к чистому SQL.

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

В чём разница между индексами BRIN и B-Tree в PostgreSQL? Для каких типов таблиц, например логов и временных рядов, BRIN даст значительную экономию дискового пространства и превзойдёт B-Tree по скорости создания?

B-Tree индексирует значения с точным поиском по упорядоченной структуре, а BRIN хранит сводки по диапазонам страниц. BRIN особенно полезен на огромных таблицах с корреляцией значения и физического порядка данных.

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

Что такое Cache Penetration, Cache Avalanche и Cache Warmup? Как спроектировать слой кэширования для интернет-магазина так, чтобы во время ночной распродажи, когда миллионы пользователей одновременно запрашивают новые товары, база данных не вышла из строя из-за промахов кэша?

Penetration — промахи по отсутствующим данным, avalanche — массовое истечение или потеря кеша, warmup — его предварительное заполнение. Для распродажи нужны прогрев и защита БД от лавины промахов.

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

Как обеспечить запуск базы данных до запуска скрипта, если настройки хранятся в БД?

Нужны минимальные стартовые настройки вне БД: адрес, способ авторизации и параметры подключения. Затем процесс должен дождаться готовности БД, а не только факта запуска её контейнера или службы.

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

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

Сначала оценю блокировки, объём переписываемых данных и влияние на живую нагрузку. Затем выберу безопасный поэтапный план, окно выполнения, наблюдаемые ограничения и способ остановки или отката.

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

Как работает механизм Write-Ahead Logging (WAL) в реляционных базах данных? Что произойдет с данными в памяти, если сервер физически отключится от питания в момент фиксации (COMMIT) транзакции?

При WAL журнал изменений должен попасть на устойчивый носитель раньше соответствующих страниц данных. После отключения питания содержимое RAM теряется, но зафиксированные изменения восстанавливаются по журналу.

Читать ответ
Поведенческий

Работали ли вы с SQLAlchemy?

Ответьте, где и для чего использовали SQLAlchemy: Core или ORM, синхронный или асинхронный доступ, какие БД и объёмы задач. Затем приведите конкретный пример работы с запросами и транзакциями.

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

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

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

Читать ответ
Лайвкодинг

Вы хорошо объяснили природу гонки и важность атомарности. Расскажите, как бы вы реализовали атомарное изменение баланса в Python без использования базы данных?

В одном процессе можно защитить проверку и изменение баланса общим Lock. Важно блокировать весь read-check-write, а не только присваивание; все обращения к состоянию должны соблюдать тот же протокол.

Читать ответ