Библиотека собеса по Python | вопросы с собеседований
6.03K subscribers
670 photos
14 videos
519 links
Вопросы с собеседований по Python и ответы на них.

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

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

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
Объясните, как в Python осуществляется управление памятью.

В Python объекты и структуры данных data structures находятся в закрытой динамически выделяемой области private heap, которая управляется менеджером памяти Python. Он делегирует часть работы программам распределения ресурсов allocators, закрепленным за конкретными объектами, и одновременно с этим следит, чтобы они не выходили за пределы динамически выделяемой области.

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


Библиотека собеса по Python
3
🔥 Сегодня последний день скидки!

На недавнем вебинаре «ИИ-агенты: новая фаза развития AI» мы показали, как агенты уже меняют работу Data Scientists и инженеров.

Что тебя ждёт на курсе:

⚡️ создашь своего ИИ-агента с нуля
⚡️ соберёшь RAG-систему
⚡️ научишься адаптировать LLM под реальные данные бизнеса

До конца этого дня цена на курс 57 000 ₽. Уже завтра будет 69 000 ₽. Успевай записаться (используй промокод datarascals).

🔗 Записаться на курс
1👍1
Последние часы со скидкой!

Мы уже закрыли вебинар «ИИ-агенты: новая фаза развития AI», но запись всё ещё доступна.

А дальше остаётся только практика. На курсе «ИИ-агенты для DS-специалистов» ты научишься разрабатывать агентов, собирать RAG-системы и адаптировать LLM под бизнес.

Сегодня цена ещё 57.000 ₽ с промокодом datarascals.
Завтра — 69.000 ₽.

👉 Успеть оплатить до полуночи
👍2🥱1
🤖 Как работают менеджеры контекста в Python, и в каких случаях их полезно использовать?

Менеджеры контекста используются для управления ресурсами, такими как файлы, сетевые подключения или блокировки, с автоматическим освобождением этих ресурсов по завершении работы. Основное их применение — в тех случаях, когда требуется гарантированное освобождение ресурсов, даже в случае возникновения ошибок. Менеджеры контекста создаются с помощью ключевого слова with, которое автоматически вызывает методы enter и exit у объекта.

Пример использования ⚙️
# Пример менеджера контекста для работы с файлами
with open('example.txt', 'w') as file:
file.write('Hello, world!')

# Файл автоматически закроется после выхода из блока 'with', даже если возникнет ошибка

Библиотека собеса по Python
👍3
🤖 Курс «ИИ-агенты для DS-специалистов»

Последняя возможность в этом году освоить ИИ-агентов — курс стартует уже 3 октября! Первый вебинар пройдёт в день старта, а подробности вебинара можно найти на сайте.

📚 Бонус: при оплате до 30 сентября вы получите дополнительный лонгрид для подготовки к курсу. Это отличный способ подойти к занятиям уже с базой.

🔥 А ещё после прохождения курса у вас будет достаточно знаний, чтобы участвовать в хакатоне с призовым фондом 1 125 000 ₽.

🔗 Записаться на курс и узнать подробности
👍1
Как проверить файл .py на синтаксические ошибки без его выполнения?

Для проверки файла .py на синтаксические ошибки без его запуска можно воспользоваться утилитой py_compile.

Можно использовать командную строку или терминал, чтобы проверить файл .py на наличие синтаксических ошибок, не выполняя его. Для этого применяется флаг -m с модулем py_compile.

Откройте командную строку или терминал и перейдите в папку, где находится ваш файл .py. Имя файла, который вы хотите проверить, обозначено как yourfile.py:

python -m py_compile yourfile.py

Библиотека собеса по Python
👍5
🤖 Курс «ИИ-агенты для DS-специалистов»

Последняя возможность в этом году освоить ИИ-агентов с Proglib— старт живых вебинаров на курсе уже 3 октября!

Уже 24 студента изучают 5 лонгридов подготовительного модуля, чтобы сформировать базу к старту живых вебинаров с Никитой Зелинским.

📚 Бонус: при оплате до 30 сентября вы получите дополнительный лонгрид для подготовки к курсу. Это отличный способ подойти к занятиям уже с базой.

🔥 А ещё после прохождения курса у вас будет достаточно знаний, чтобы участвовать в хакатоне с призовым фондом 1 125 000 ₽.

🔗 Записаться на курс и узнать подробности
Как Python решает, что вернуть при obj.attr? Укажи роль data/non-data дескрипторов, __getattribute__, __getattr__ и MRO.

Сначала вызывается type(obj).__getattribute__ (если переопределён — он рулит). Далее порядок:

1. Ищем data-descriptor на классе по C3 MRO (есть __set__/__delete__) → вызываем его __get__.
2. Иначе смотрим obj.__dict__.
3. Иначе ищем на классе/MRO: если non-data descriptor (функция, property без __set__ и т.п.) — вызываем __get__, иначе возвращаем значение.
4. Если не нашли — вызывается __getattr__. Итого приоритет: data-descriptor > instance dict > non-data/class attr, поиск по классам — по __mro__ (C3).


Библиотека собеса по Python
👍5
Объясните, как устроен импорт в Python: роль sys.modules (кэш), цепочка sys.meta_path/finders/ModuleSpec/loaders, что происходит при циклических зависимостях, и почему importlib.reload() не «обновляет» ссылки в других модулях.

При import сначала проверяется sys.modules; если модуля нет, по sys.meta_path ищут spec, создают объект модуля, сразу кладут его в sys.modules (для разрыва циклов) и затем loader.exec_module() исполняет код. В циклическом импорте второй участник видит частично инициализированный модуль (атрибутов ещё нет) → AttributeError/тонкие баги. Помогает отложить импорт внутрь функций/блоков, импортировать модуль целиком вместо from X import Y. reload() переисполнить код в том же объекте модуля: старые ссылки в других модулях остаются на прежние объекты, состояние/сайд-эффекты не откатываются — безопасно только при продуманном, идемпотентном коде и контроле точек связывания. Для кастомных источников добавляют свои finders/ loaders в sys.meta_path; namespace-пакеты работают по PEP 420 без __init__.py.

Библиотека собеса по Python
👍21
👾 AI-агенты — настоящее, о котором все говорят!

Уже 3 октября стартует второй поток нашего нового курса «AI-агенты для DS-специалистов».

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

На обучении вы соберёте полноценные LLM-системы с учётом особенностей доменных областей, получите hands-on навыки RAG, Crew-AI / Autogen / LangGraph и агентов.

🎓 В рамках курса вы научитесь:

1️⃣ адаптировать LLM под разные предметные области и данные
2️⃣ собирать свою RAG-систему: от ретривера и реранкера до генератора и оценки качества
3️⃣ строить AI-агентов с нуля — на основе сценариев, функций и взаимодействия с внешней средой

Научитесь применять похожие подходы в разных доменных областях, получите фундамент для уверенного прохождения NLP system design интервью и перехода на следующий грейд.

🗓️ Завтра первый вебинар, успевайте залететь в ряды ИИ-первопроходцев 👈🏻
Как сделать идемпотентное создание записи при гонке (двойной запрос) в Django?

Ввести уникальный бизнес-ключ (UniqueConstraint), обернуть в transaction.atomic(), использовать get_or_create() либо create() с перехватом IntegrityError и затем get(). Не делать предварительных exists(). При зависимостях — лочить родителя select_for_update().

Библиотека собеса по Python
👍3
Напишите программу для вставки пробела между символами всех элементов массива NumPy

Решение:
import numpy as np

# Create Sample NumPy Array
arr = np.array(['i', 'love', 'NumPy', 'AND', 'interviewbit'], dtype=str)

transformed_arr = np.char.join(" ", arr)

print("Transformed Array: ")
print(transformed_arr)


Библиотека собеса по Python
👍3
🚀 Курс «ИИ-агенты для DS-специалистов» уже стартовал

Первый вебинар успешно прошёл, участники уже начали разбираться, как использовать ИИ-агентов в реальных проектах.

Но всё самое интересное только начинается!

🔥 Впереди 4 мощных занятия — с практикой, инсайтами и разбором кейсов от экспертов.

💸 Сейчас действует специальная цена → 69.000 ₽ вместо 79.000 ₽.

Осталось всего 4 места.

Не упустите шанс прокачаться в том, что будет определять будущее индустрии.

👉 Забронировать место на курсе
Чем отличаются методы __str__() от __repr__() в Python и когда их принято использовать?

Методы __str__() и __repr__() в Python имеют разные цели и используются в различных контекстах.
Метод __str__() предназначен для создания понятного и удобного представления объекта, которое будет полезно конечному пользователю. В то время как __repr__() создает более формальное строковое представление, которое должно быть точным и однозначным, что позволяет воссоздать объект.
__repr__() часто используется в процессе отладки и разработки, так как его вывод должен быть максимально информативным. В отличие от него, __str__() ориентирован на предоставление более дружелюбного и менее детализированного представления объекта. Если метод __str__() не реализован, Python автоматически использует __repr__() в качестве альтернативы.


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