Библиотека собеса по 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
Что представляют собой генераторы в Python, как функционирует метод send() в этих генераторах и каким образом его можно применять для управления их поведением?

Генераторы в Python представляют собой функции, которые применяют оператор yield для возврата значений и временной приостановки выполнения. С помощью метода send() можно отправлять данные обратно в генератор, которые затем могут быть использованы при следующем возобновлении его работы. Это делает генераторы двусторонними, позволяя не только получать значения, но и передавать данные внутрь.

Библиотека собеса по Python
👍4
Какова роль параметров _value и __value?

_value — одинарное подчеркивание в начале имени указывает на то, что этот параметр не предназначен для использования за пределами функции. Это всего лишь соглашение, а не строгое правило языка.

__value — двойное подчеркивание обозначает, что это имя зарезервировано Python для специальных целей, таких как init для конструктора класса. Такие параметры могут выполнять дополнительные функции.

Библиотека собеса по Python
Вопрос с собеса: Как реализовать память агента?

Если вы просто подаёте историю сообщений в контекст — вы джун. Сеньор использует State Management.

В LangGraph это реализовано архитектурно:

— управляемый поток (ветвления, возвраты, итерации);
state как типизированная память процесса;
— безопасность (лимиты шагов).

Разберитесь, как это работает, на нашем курсе. Поток уже стартовал.

Записаться на курс

Смотреть вводную лекцию
Что означают параметры _value и __value?

_value: одиночное подчеркивание в начале имени указывает на то, что этот параметр не предназначен для использования за пределами функции. Это всего лишь соглашение, а не ограничение языка.

__value: двойное подчеркивание в начале имени обозначает, что это имя зарезервировано Python для специальных целей, таких как init для конструктора класса. Такие параметры могут выполнять дополнительные функции.

Библиотека собеса по Python
Что такое замыкание?

Замыкание (closure) — это функция, которая запоминает значения переменных из области видимости, в которой она была создана, и может получить к ним доступ, даже если она будет вызвана за пределами этой области видимости.

Ключевым моментом является то, что замыкание запоминает ссылки на переменные, а не сами значения. Это позволяет обращаться к актуальным значениям переменных даже после того, как функция, создавшая замыкание, завершила работу.

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

В Python замыкания реализуются элегантно и просто с помощью вложенных функций. Это мощный механизм, позволяющий писать короткий и чистый код.


Библиотека собеса по Python
👍41
Как управлять состоянием в асинхронном Python?

Если речь про AI-агентов, то правильный ответ в 2026 — LangGraph.

Вас спросят:

— Как избежать бесконечных циклов в агенте? (Ответ: recursion_limit).
— Как хранить историю диалога между перезапусками? (Ответ: Checkpointers).
— Как реализовать ветвление логики? (Ответ: Conditional Edges).

Разберитесь в теме сейчас, чтобы уверенно отвечать на собесах.

Записаться на курс

База для подготовки: Смотрите вводный урок бесплатно.
Можно ли объявлять функцию внутри другой функции? Где она будет видна?

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

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

Вложенные функции могут быть полезны, когда нужно реализовать вспомогательную логику, связанную только с работой родительской функции.


Библиотека собеса по Python
Как решить проблему конфликта зависимостей?

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

Эту проблему можно решить с помощью менеджера пакетов pipenv, который автоматически устанавливает версии таким образом, чтобы они не конфликтовали друг с другом.
Вместо requirements.txt pipenv предоставляет файл pipenv с версиями пакетов.

При этом один из недостатков pipenv состоит в том, что создание файла pipenv занимает очень много времени.

Для проверки наличия конфликта зависимостей у пакета можно использовать команду pip check.


Библиотека собеса по Python
👍4❤‍🔥1
В чем разница между модулем, пакетом и библиотекой?

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

Пакет — это набор модулей, которые сгруппированы вместе внутри папки для обеспечения согласованной функциональности. Пакеты могут быть импортированы точно так же, как модули. Обычно в них есть init.pyfile, который указывает интерпретатору Python обрабатывать их.

Библиотека — это набор пакетов.


Библиотека собеса по Python
👍4
мКак вычислить среднее значение, медиану, моду, дисперсию, стандартное отклонение и различные квантильные диапазоны в Pandas?

✔️ DataFrame.mean(): среднее
✔️ DataFrame.median(): медиана
✔️ DataFrame.mode(): мода
✔️ DataFrame.var(): дисперсия
✔️ DataFrame.std(): стандартное отклонение
✔️ DataFrame.quantile(): для расчета квантильного диапазона, используя значение диапазона в качестве параметра


Библиотека собеса по Python
👍5
Как отвечать на вопросы про LLM-разработку?

Спрос на Python-разработчиков, умеющих работать с агентами, растёт. Курс «Разработка ИИ-агентов» — это способ быстро освоить актуальный стек.

Что изучим на практике:

LangFlow и AutoGen;
— протоколы MCP и A2A;
— интеграцию векторных баз данных;
— безопасность и оптимизацию агентов.

Первая лекция уже доступна. Посмотрите её, чтобы понимать тренды и увереннее чувствовать себя на интервью.

Записаться

Смотреть лекцию
Чем «data»-дескриптор отличается от «non-data», как это влияет на порядок поиска атрибута, и почему @property — это тоже дескриптор?

В Python любой объект с __get__ — дескриптор.

Non-data дескриптор: имеет только __get__. Проигрывает записи в obj.__dict__.
@property — именно non-data дескриптор.

Data дескриптор: имеет __set__ и/или __delete__. Имеет приоритет над obj.__dict__, блокируя прямую подмену.

Порядок разрешения атрибутов (__getattribute__): data-denoscriptor → obj.__dict__ → non-data denoscriptor/атрибут класса → __getattr__.

Пишите свой data-дескриптор для переиспользуемой логики: валидация, типизация, lazy/кэш, связка с внешними ресурсами.


Библиотека собеса по Python
2👍1
Вопрос с собеседования: «Как реализовать память в LLM-приложении?»

Если в 2026 году вы ответите «просто передам всю историю переписки», вы не пройдёте. Контекстное окно всё ещё стоит денег, а RAG стал стандартом.

На курсе мы разбираем профессиональные паттерны: Summary Memory, Vector Store Memory, Entity Memory. Мы учим строить архитектуру, которая эффективна и масштабируема. Это то, что отличает джуна от сильного разработчика.

Что прокачаем:

— Работу с асинхронностью в Python (для стриминга токенов).
— Проектирование сложных пайплайнов на LangGraph.
— Интеграцию агентов с внешними API и базами данных.

Узнать подробности курса
Какой метод использовался до оператора in для проверки наличия ключа в словаре?

До появления оператора in в Python, чтобы проверить, содержит ли словарь определенный ключ, использовался метод словаря has_key().

Этот метод принимал в качестве аргумента проверяемый ключ и возвращал логическое значение - True, если ключ присутствовал в словаре, и False - если нет.

В Python 2.5 появился более понятный и краткий оператор in, поэтому сейчас рекомендуется использовать именно его, а has_key() считается устаревшим.


Библиотека собеса по Python
👍6
Почему @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