Библиотека собеса по Python | вопросы с собеседований – Telegram
Библиотека собеса по Python | вопросы с собеседований
5.98K subscribers
703 photos
15 videos
692 links
Вопросы с собеседований по Python и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/6587aafa

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
Почему @dataclass(eq=True) без frozen по умолчанию не хэшируем?

Потому что при наличии __eq__ и изменяемости нарушается инвариант хэша; Python выставляет __hash__ = None. Нужно либо frozen=True (тогда хэш генерится), либо явно определить __hash__/использовать unsafe_hash=True на свой риск.

Библиотека собеса по Python
👍3
Что такое подгенератор (subgenerator)?

Подгенератор создается с помощью конструкции yield from внутри генератора.

Использование подгенераторов позволяет разбить генератор на несколько частей для упрощения кода и оптимизации памяти. Это полезный инструмент при работе с последовательностями.

Механизм передает значения между генераторами без сохранения всей последовательности в памяти и блокирует основной генератор до полного завершения подгенератора.


Библиотека собеса по Python
🤔4👍2
💻 Что такое миксины?

Миксин — это паттерн проектирования в объектно-ориентированном программировании, при котором в цепочку наследования добавляется вспомогательный класс с небольшой изолированной функциональностью.

Миксины не предназначены для самостоятельного использования — они добавляют дополнительные методы или свойства другим классам через множественное наследование. Их цель — повторное использование кода без создания иерархий, перегруженных логикой.

Пример миксина:
class NowMixin:
def now(self):
return datetime.datetime.utcnow()
Теперь любой класс, унаследованный от NowMixin, будет обладать методом now():
class Logger(NowMixin):
pass

logger = Logger()
print(logger.now())
🚩 Особенности:
— В названиях миксинов часто добавляют суффикс Mixin, чтобы обозначить их вспомогательную природу
— Миксин — это технически обычный класс, но используемый как «добавка» к основному поведению
— Позволяет избежать дублирования кода и сделать архитектуру гибче

Библиотека собеса по Python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52
Что такое сопрограмма (coroutine) в Python?

Сопрограмма (coroutine) — это расширенная подпрограмма, которая может приостанавливать выполнение и позже продолжать с того же места, а также поддерживает несколько точек входа.

🚩 В Python сопрограммы реализуются с помощью генераторов и, начиная с Python 3.5, через ключевые слова `async` и `await`.

🔎 Благодаря сопрограммам мы можем:
— писать асинхронный код без коллбеков
— выполнять неблокирующие операции в одном потоке
— использовать кооперативную многозадачность

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

Библиотека собеса по Python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Что такое GIL в CPython, как он влияет на многопоточность, и какие практики выбирать для CPU-bound и I/O-bound задач?

GIL — глобальная блокировка интерпретатора в CPython: одновременно байткод исполняет только один поток.

CPU-bound: потоки не масштабируются по ядрам → берите процессы (multiprocessing/процесс-пулы), векторизацию/библиотеки, которые освобождают GIL (напр. NumPy), нативные расширения или вынос в отдельные сервисы.

I/O-bound: потоки подходят (блокирующие I/O обычно отпускают GIL); альтернативно — asyncio с неблокирующими вызовами.

Важно: asyncio не ускоряет CPU-bound; смешивайте — тяжёлое CPU выносите в процессы/С, блокирующее I/O — в пул потоков; измеряйте и следите, чтобы в async-код не просачивались блокировки.

Имплементации: поведение касается CPython; в других реализациях Python механизм отличается.


Библиотека собеса по Python
👍3
Объясни, как Django управляет транзакциями: autocommit, transaction.atomic() (savepoint’ы и «broken» состояние), ATOMIC_REQUESTS, когда нужен select_for_update(), и что учитывать с CONN_MAX_AGE/PgBouncer.

По умолчанию autocommit: каждый ORM-запрос, меняющий БД, — своя транзакция. atomic() начинает транзакцию (или создаёт savepoint при вложенности); исключение помечает блок как broken → откат до ближайшего savepoint/транзакции; при выходе — commit или rollback. ATOMIC_REQUESTS=True автоматически оборачивает view, но может растягивать транзакции (долгие I/O, внешние вызовы) — применять выборочно. select_for_update() требует активной транзакции (atomic()), в Postgres можно nowait/skip_locked для борьбы с блокировками. Изоляция — та, что у БД (обычно READ COMMITTED). Соединения: CONN_MAX_AGE удерживает их открытыми; в проде обычно PgBouncer (session/transaction mode), следи за совместимостью с server-side курсорами и длительными транзакциями.

Библиотека собеса по Python
👍1
Как и для чего используется %s?

%s
— это Спецификатор формата и он используется для форматирования строк.
Он позволяет вставлять значения других типов (числа, объекты и т. д.) в строковые выражения, автоматически преобразуя их к строковому представлению.

%s заменяется на строковое представление переданного значения в процессе форматирования. Это удобный способ интерполяции строк.
Помимо простой интерполяции, %s полезен для оформления вывода данных в консоль, логгирования, составления SQL-запросов с подстановкой значений и других задач работы со строками.


Библиотека собеса по Python
👍1
Вы разрабатываете высоконагруженный сервис на FastAPI. При нагрузочном тестировании видно, что время отклика сильно растёт, хотя CPU и память используются не полностью. Какие могут быть причины и как вы будете решать проблему?

Чаще всего проблема в блокирующем коде (синхронные запросы к БД, внешним API или тяжёлые вычисления), который “забивает” event loop. Нужно вынести такие операции в ThreadPoolExecutor/ProcessPoolExecutor или заменить их на асинхронные аналоги (например, httpx.AsyncClient, databases, async-драйверы для SQL/NoSQL). Также стоит проверить конфигурацию Uvicorn/Gunicorn (число воркеров, workers-per-core) и настроить connection pooling.

Библиотека собеса по Python
👍2
System Design интервью для AI-сервисов

Как спроектировать агента, который не «съест» весь бюджет и не упадёт под нагрузкой? Это ключевой вопрос 2026 года. Ответы — в нашем обновлённом курсе

«Разработка AI-агентов».
Ключевые темы:

🔹 Экономика. Роутинг моделей, кэширование, лимиты.

🔹 Надёжность. Human-in-the-loop, runbooks, восстановление состояний.

🔹 Интеграция. Встраивание AI в существующий Python-бэкенд.

Стартуй сейчас!
Не жди потока, материалы доступны сразу.

🎟 Промокод Agent — скидка 10 000 ₽ (до 28 февраля).

👉 Прокачать System Design
1
Вы запускаете высоконагруженный Python-сервис на asyncio. Со временем отклик начинает расти, хотя CPU и память загружены слабо. В чём может быть причина и как подойти к решению?

Обычно это значит, что внутри event loop выполняется блокирующий код (синхронные запросы к БД, тяжёлые вычисления, блокирующие I/O). Их нужно вынести в отдельные процессы/пулы потоков (ProcessPoolExecutor, ThreadPoolExecutor) или заменить на асинхронные аналоги библиотек.

Библиотека собеса по Python
👍2
Как FastAPI обрабатывает зависимости с Depends, и как происходит их разрешение в контексте асинхронных и синхронных функций?

FastAPI строит граф зависимостей рекурсивно при старте приложения. При обработке запроса оно вызывает зависимости в порядке topological sort. Асинхронные зависимости вызываются с await, синхронные — через обычный вызов. FastAPI автоматически определяет тип зависимости по сигнатуре. Повторно используемые зависимости кэшируются внутри одного запроса. Исключения в зависимостях прерывают цепочку и оборачиваются в HTTP-ответ.

Библиотека собеса по Python
👍1
Что спросят на собеседовании AI-инженера в 2026 году?

«Как написать промпт» — этот вопрос уже никто не задаёт. На сеньорских собесах теперь спрашивают: как защитить агента от бесконечного цикла, как настроить time-travel в LangGraph и как парсить кривые таблицы для RAG.

Мы полностью обновили наш курс по AI-агентам. Это мощный инженерный гайд, который закроет все пробелы в System Design LLM-приложений и подготовит вас к сложным продакшн-задачам.

Что вы заберёте в свой арсенал:

🔹 хардкорный RAG: продвинутые подходы к извлечению данных и улучшению поисковых запросов;
🔹 оркестрация: human-in-the-loop, восстановление состояний и runbooks;
🔹 LLMOps: тестирование, оценка качества, логирование и выявление регрессий;
🔹 экономика ИИ: жёсткий контроль токенов, кэш и переключение производительности;
🔹 легальный деплой: как разворачивать агентов строго по 152-ФЗ.

До 28 февраля действует скидка 10 000 рублей по промокоду Agent.

Участвуйте в акции «3 курса по цене 1» и получайте ещё два направления бесплатно.

Прокачать навыки для Senior AI Engineer
К чему может быть применен декоратор?

Декораторы можно применять к:

— Обычным функциям, определенным с помощью def.
— Методам классов.
— Статическим методам и методам класса внутри классов.
— Lambda функциям.
— Методам встроенных типов в Python (например, к методам списков, словарей).


Библиотека собеса по Python
👍21
💼 Что спросят про AI-агентов на Python-собеседовании в 2026 году?

Просто знать LangChain уже мало. Работодатели ищут тех, кто понимает архитектуру LangGraph, умеет оптимизировать токены и знаком с 152-ФЗ. Мы обновили наш курс, чтобы вы могли уверенно отвечать на вопросы про промышленный RAG и трассировку ошибок.

📚 В программе для профи:

— промышленный RAG: как обосновать выбор методов извлечения данных;
LangGraph: понимание механизмов time-travel и восстановления состояний;
— экономика агентов: стратегии снижения затрат на инференс моделей;
— юриспруденция: как работать с персональными данными в рамках законодательства РФ.

Начните подготовку к карьере AI-инженера уже сегодня — вводные материалы доступны сразу.

Специальные условия до 28 февраля:

— введите промокод Agent для получения скидки 10 000 рублей**;
— участвуйте в **акции «3 курса по цене 1» — два курса в подарок.

👉 Получить доступ к курсу и подаркам
Как обеспечить строгую согласованность кэша при записи в Django/DRF под высокой нагрузкой?

Короткий ответ: Делайте запись в БД в транзакции, фиксируйте событие в outbox и только после коммита инвалидируйте/перестраивайте кэш (write-through), используя версионирование ключей. Защищайтесь от stampede через короткие TTL + jitter и распределённые локи в Redis. Для чтения с реплик учитывайте лаг и маршрутизируйте горячие чтения на мастер или используйте read-your-writes токены/версии.

Библиотека собеса по Python
В чём разница между is и == в Python, и когда использовать is?

is проверяет тождество (это один и тот же объект), == — равенство значений (через __eq__). Используйте is только для None, булевых (True/False) и собственных «сентинелов». Для чисел/строк/списков — ==; на совпадение is из-за интернирования полагаться нельзя.

Библиотека собеса по Python
👾1
Каковы способы настройки функциональности интерфейса администратора Django?

Существует несколько способов настройки функциональности интерфейса администратора Django. Вы можете использовать форму добавления/изменения, которая автоматически генерируется Django, вы можете добавлять модули JavaScript с помощью параметра js. Этот параметр в основном представляет собой список URL-адресов, указывающих на модули JavaScript, которые должны быть включены в ваш проект в теге <noscript>. Вы также можете написать представления для администратора, если хотите. Хотите глубже изучить основы Python? Добро пожаловать на курс: https://proglib.academy/python

Библиотека собеса по Python
Какова амортизированная сложность push_back у динамического массива при удвоении ёмкости и почему?

O(1) амортизированно. Редкие дорогостоящие копирования «распределяются» на множество дешёвых вставок; потенциал/агрегатный анализ показывает, что суммарная стоимость m операций ≤ 3m. Кстати, у нас сейчас действует 40% скидка на курс Алгоритмы и структуры данных.

Библиотека собеса по Python
За год мы провели три потока курса по ИИ-агентам, а теперь запускаем масштабное обновление!

В новом, четвёртом потоке мы учли все пожелания студентов, добавили большой блок про AgentOps и сместили фокус с базовых концепций на суровый инжиниринг. Рассказать про GIL и декораторы на собеседовании легко, а вот сделать так, чтобы Python-агент не падал в проде и не галлюцинировал — задача со звёздочкой.

В программе:

— практика с первого занятия: Jupyter-ноутбуки с автопроверкой;
— оркестрация в LangGraph: human-in-the-loop и механизм time-travel;
— продвинутый RAG для продакшена и парсинг сложных документов;
— контроль экономики агентов: маршрутизация и кеширование запросов;
— развёртывание локальных опенсорс-моделей с соблюдением 152-ФЗ.

В честь старта продаж действует спецпредложение: 3 курса по цене 1 (два дополнительных курса в подарок).

Доступ к материалам для предварительной подготовки откроется сразу после оплаты.

По промокоду Agent забирайте скидку 10 000 ₽ (89 000 ₽ вместо 99 000 ₽). Успейте занять место до 28 февраля!

👉 Присоединиться к четвёртому потоку и вывести агентов в прод
В чем разница между локальными и глобальными переменными в SQL?

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

Библиотека собеса по Python
👍3
Как избежать «висячих» задач и утечек при отмене в asyncio?

Используйте TaskGroup и asyncio.timeout, всегда await-ьте созданные задачи; при отмене ловите CancelledError, делайте cleanup в finally, закрывайте ресурсы (aclose/async with), а shield применяйте только к коротким критическим секциям.

Библиотека собеса по Python
👍31