SQLAlchemy: вопросы на собеседовании
Вопросы и ответы по SQLAlchemy: подготовка, примеры и типичные ошибки.
Проверьте себя по SQLAlchemy: 5 вопросов, ~10 минут
Вопросов: 39. Частые идут первыми, сложные возвращаются на повторение.
- Что такое SQLAlchemy и каковы его два основных компонента (Core vs ORM)?Junior· спрашивают почти всегда
- Как определить модель с помощью Declarative Base (
DeclarativeBase) в SQLAlchemy 2.0?Junior· спрашивают почти всегда· полный разбор — Jobs/Boost - Что такое
Engineв SQLAlchemy и как работает пул соединений?Senior· спрашивают почти всегда· полный разбор — Jobs/Boost - Как решить проблему N+1 запросов в SQLAlchemy с помощью
selectinloadилиjoinedload?Senior· спрашивают почти всегда - Как работает
Sessionв SQLAlchemy и что такое паттерн Unit of Work?Senior· спрашивают почти всегда· полный разбор — Jobs/Boost - Когда SQLAlchemy ускоряет разработку, а когда ORM-абстракция начинает мешать понимать базу данных?Middle· спрашивают почти всегда· полный разбор — Jobs/Boost
- В чём разница между стратегиями загрузки
lazy='select',lazy='joined'иlazy='selectin'?Senior· спрашивают почти всегда - Как сравнить SQLAlchemy с raw SQL, query builder и другими ORM по контролю, типобезопасности и производительности?Junior· спрашивают почти всегда· полный разбор — Jobs/Boost
- Как делать zero-downtime миграции с Alembic и SQLAlchemy models?Senior· спрашивают почти всегда· полный разбор — Jobs/Boost
- В чём разница между
Session.add(),Session.merge()иSession.get()?Junior - В чём разница между
expire_on_commit=Trueиexpire_on_commit=False?Middle - Что такое
mapped_column()в SQLAlchemy 2.0 и чем он отличается отColumn()?Middle· полный разбор — Jobs/Boost - В чём разница между стилем SQLAlchemy 1.x и стилем SQLAlchemy 2.0 ORM?Middle· полный разбор — Jobs/Boost
- Каковы типичные проблемы производительности в SQLAlchemy и как отлаживать медленные запросы?Senior· полный разбор — Jobs/Boost
- В чём разница между
QueryAPI (1.x) иselect()+session.execute()(2.0)?Middle· полный разбор — Jobs/Boost - Как выполнять сырые SQL-запросы в SQLAlchemy, оставаясь в рамках ORM-сессии?Junior
- Как реализовать каскадное удаление и обновление в связях SQLAlchemy?Middle· полный разбор — Jobs/Boost
- Как определять связи между моделями —
relationship(),ForeignKeyи back-references?Junior· полный разбор — Jobs/Boost - Как понять, что проблема в приложении связана с SQLAlchemy, а не с индексами, схемой, isolation level или плохим SQL?Senior
- Представьте, после изменения кода на SQLAlchemy выросло число SQL-запросов и latency. Как вы будете это доказывать и чинить?Senior· полный разбор — Jobs/Boost
- Какие ошибки делают команды, когда прячут сложность базы данных за SQLAlchemy?Middle· полный разбор — Jobs/Boost
- Какая mental model SQLAlchemy важнее всего: unit of work, change tracking, query generation, migrations или generated client?Middle
- Какие production-риски есть у SQLAlchemy: N+1, транзакции, lazy loading, connection pooling, migrations и raw queries?Senior· полный разбор — Jobs/Boost
- Как использовать
funcиз SQLAlchemy для вызова SQL-агрегатных функций?Junior· полный разбор — Jobs/Boost - Что такое метод
with_for_update()и когда его использовать (оптимистичная vs пессимистичная блокировка)?Senior· полный разбор — Jobs/Boost - Как Alembic работает совместно с SQLAlchemy для миграций базы данных?Middle· полный разбор — Jobs/Boost
- Как работает async SQLAlchemy с
AsyncSessionиasyncpgилиaiosqlite?Senior· полный разбор — Jobs/Boost - Как настроить SQLAlchemy для работы с FastAPI, включая инъекцию зависимости сессии?Senior· полный разбор — Jobs/Boost
- Как реализовать связь многие-ко-многим с помощью ассоциативной таблицы в SQLAlchemy?Middle· полный разбор — Jobs/Boost
- Как эффективно пагинировать результаты в SQLAlchemy —
offset()иlimit()vs keyset pagination?Senior· полный разбор — Jobs/Boost - Что такое пул соединений и какие настройки важны для продакшена (
pool_size,max_overflow,pool_timeout)?Senior - Что такое
scoped_sessionи зачем он используется в веб-фреймворках, таких как Flask?Middle - Как использовать
session.begin()и как работает управление транзакциями в SQLAlchemy?Senior· полный разбор — Jobs/Boost - Расскажите о случае, когда SQLAlchemy помог или помешал вам при миграциях, транзакциях, оптимизации запросов или борьбе с N+1.Middle
- Как реализовать soft deletes в SQLAlchemy?Middle
- Что такое hybrid properties в SQLAlchemy и как их реализовать?Middle· полный разбор — Jobs/Boost
- Что такое функция
inspect()в SQLAlchemy и как использовать её для интроспекции схемы?Middle· полный разбор — Jobs/Boost - Что такое
event.listenв SQLAlchemy и как используются ORM-события?Middle· полный разбор — Jobs/Boost - Как реализовать наследование таблиц в SQLAlchemy (single-table, joined-table, concrete-table)?Middle