52 вопроса по SQLAlchemy с технических собеседований
52 вопроса1634 компании353 технологии
Что проверяют на интервью
Как устроена подборка
На странице собраны вопросы по SQLAlchemy — от проверки базовых принципов до практического применения и архитектурных решений. В подборке чаще встречаются темы: database, sql, sqlalchemy.
Ответ должен опираться на ваш реальный опыт в названной компании: ORM или Core, синхронный либо асинхронный доступ, типичные запросы и управление транзакциями. По вопросу нельзя установить чужие обязанности.
Пессимистичная защита использует SELECT ... FOR UPDATE через with_for_update() внутри транзакции. Оптимистичная — условное обновление по версии, в ORM это можно настроить через version_id_col.
Используйте SQLAlchemy func и over(), задав partition_by, order_by и при необходимости рамку окна. Для фильтрации по вычисленному номеру строки обычно нужен подзапрос или CTE.
В коде синхронный Redis блокирует async-обработчик, запросы к БД выполняются по одному ID, а отсутствие продукта приводит к ошибке. Нужны валидация входа, пакетное чтение и контролируемый кеш.
Data Mapper отделяет хранение объектов от их поведения; в SQLAlchemy этим занимается ORM и Session. Active Record связывает объект записи с методами сохранения и поиска, как у моделей Django.
При создании класса ORM анализирует объявленные поля и формирует метаданные отображения. Django делает это через ModelBase; в SQLAlchemy механизм зависит от выбранного declarative API и версии.
Transient — новый объект вне Session; Pending — добавлен и ждёт INSERT; Persistent — связан с Session и строкой БД; Detached — имеет идентичность, но больше не связан с Session.
Identity Map хранит соответствие ORM-идентичности и Python-объекта внутри Session. При загрузке той же строки SQLAlchemy использует уже присутствующий экземпляр, а не создаёт независимую копию.
Identity Map хранит соответствие идентичности строки и Python-объекта внутри Session. При повторной загрузке той же ORM-сущности SQLAlchemy переиспользует уже известный экземпляр.
Unit of Work отслеживает новые, изменённые и удалённые ORM-объекты и отправляет их изменения при flush. commit завершает транзакцию, но SQL может выполняться значительно раньше.
Django ORM тесно интегрирована с моделями, миграциями и остальным Django. SQLAlchemy — самостоятельный SQL toolkit и ORM с явной Session и моделью Unit of Work.