Подборка объединяет вопросы, отмеченные на этапах интервью в Сбер. Здесь можно понять структуру технической проверки и заранее повторить связанные темы. В подборке чаще встречаются темы: database, sql, backend.
В CPython подсчёт ссылок отвечает за освобождение многих объектов, а циклический GC обнаруживает недостижимые циклы контейнеров. Внутренний allocator управляет повторным использованием памяти.
Кратко назовите последнее место и фактическую причину перерыва без лишних личных подробностей. Затем объясните, какую работу ищете сейчас и когда готовы начать.
Перечислите фактические компоненты LLM-бота и роль каждого: API модели, оркестрация, хранение истории, retrieval и интерфейс. LangChain или LangGraph не обязательны для любого бота.
Назовите фактическую гарантию и её границы: at-most-once, at-least-once или более сильную семантику в конкретной транзакционной системе. Доставка сообщения и однократный бизнес-эффект — разные вещи.
Основные риски — обрыв передачи, повреждение или частичная запись, недостаток места, права доступа и утечка данных. Отдельно проверьте повторяемость операции и подтверждение результата.
Асинхронность особенно полезна для I/O-bound задач: сетевых запросов, обращений к БД и ожидания событий. Она позволяет совмещать ожидания, а не автоматически параллелить вычисления.
Расскажите об агенте через задачу, доступные инструменты, состояние, ограничения действий и оценку результата. Важно показать отличие управляемого процесса от бесконтрольного цикла вызовов LLM.
Опишите, как отделяли конфигурацию от кода: безопасные значения по умолчанию, параметры окружения, секреты и проверка обязательных настроек при старте. Укажите реальный стек проекта.
Health checks позволяют системе понять, жив ли процесс и готов ли он принимать запросы. Liveness и readiness решают разные задачи и не должны проверять одно и то же без разбора.
Python поддерживает несколько парадигм; стиль выбирают под задачу. Опишите, где используете функции, объекты и декларативные преобразования, а не приверженность одному подходу во всех случаях.
Короткий неблокирующий код можно вызвать напрямую. Блокирующее I/O выносят через asyncio.to_thread или executor, а тяжёлые CPU-вычисления часто — в отдельные процессы.
Offset — позиция записи внутри partition Kafka. У каждой consumer group есть отдельно сохранённая позиция чтения; она не является глобальным номером для всего topic.