ru
Feedback
Библиотека собеса по Python | вопросы с собеседований

Библиотека собеса по Python | вопросы с собеседований

Открыть в Telegram

Вопросы с собеседований по Python и ответы на них. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/6587aafa Для обратной связи: @proglibrary_feeedback_bot

Больше
5 996
Подписчики
-224 часа
-47 дней
-2730 день
Архив постов
Как реализовано управление памятью во Flask? В Flask распределение памяти управляется модулем управления памятью Flask Python. Кроме того, в Flask есть встроенный сборщик мусора, который перерабатывает всю неиспользуемую память, освобождая место в куче. Ответственность за отслеживание всего этого лежит на интерпретаторе Python. Однако пользователи могут использовать основной API для доступа к некоторым инструментам. Библиотека собеса по Python

Что такое сигналы Django? При каждом изменении модели нам может потребоваться инициировать определённые действия. Django предлагает элегантный способ обработки этих изменений с помощью сигналов. Сигналы — это утилиты, позволяющие связывать события с действиями. Мы можем реализовать их, разработав функцию, которая будет запускаться при вызове сигнала. Библиотека собеса по Python

Как работает дескрипторный протокол? Дескриптор — объект, реализующий __get__, __set__ или __delete__. Если такой объект присвоен атрибуту класса, доступ через экземпляр идёт через эти методы. Два типа: — Data-дескриптор (__set__/__delete__) — приоритет над __dict__ экземпляра. — Non-data (только __get__) — перекрывается __dict__ экземпляра. Порядок поиска атрибута: data-дескрипторы класса → __dict__ экземпляра → non-data и обычные атрибуты класса → __getattr__. На дескрипторах построены property, classmethod, staticmethod, cached_property, привязка методов к экземпляру и поля в dataclasses.
class Positive:
    def __set_name__(self, owner, name):
        self.name = f'_{name}'
    def __get__(self, obj, objtype=None):
        return getattr(obj, self.name)
    def __set__(self, obj, value):
        if value <= 0:
            raise ValueError("must be positive")
        setattr(obj, self.name, value)

class Account:
    balance = Positive()
Позволяет переиспользовать логику доступа к атрибутам без метаклассов и дублирования property. Библиотека собеса по Python

Для чего нужен модуль operator? Модуль operator предоставляет функции, которые соответствуют встроенным операторам языка. Например, функции add(), sub(), mul() и другие реализуют арифметические операторы +, -, *. Основные причины использования модуля operator: — Возможность передавать функции в качестве аргументов или возвращаемых значений других функций. Например, в sorted(), min(), max() и др. — Оптимизация производительности за счет использования функций вместо выражений. Функции заранее компилируются. — Удобство использования при работе с изменяемыми операторами. Можно легко передать нужный оператор в функцию. — Дополнительные возможности, например, operator.itemgetter() и operator.attrgetter() для извлечения элементов из объектов. Библиотека собеса по Python

Как настроить статические файлы в Django? Убедитесь, что файл django.contrib.staticfiles добавлен в ваш INSTALLED_APPS. В файле настроек определите STATIC_URL, например: STATIC_URL = '/static/' В шаблонах Django используйте статический тег шаблона для создания URL-адреса для заданного относительного пути с использованием настроенного STATICFILES_STORAGE. {% load static %} <img src="{% static 'my_sample/abcxy.jpg' %}" alt="ABC image"> Сохраните статические файлы в папке static в вашем приложении. Например, my_sample/static/my_sample/abcxy.jpg Библиотека собеса по Python

Как вы спроектируете высоконагруженный API на Django/DRF с P99 < 50 мс при 10k rps, строгой согласованностью кэша при записи и нулевым простоем при деплоях? ASGI-стек (Uvicorn+Gunicorn), асинхронные вьюхи только для I/O; БД: pgbouncer, целевые индексы/covering, устранение N+1 (select_related/prefetch_related), атомарные операции через F() и при необходимости SELECT … FOR UPDATE, критичные места — raw SQL; чтение через реплики с роутерами, для ускорения — CQRS: read-модель (материализованные представления/Redis). Кэш как cache-aside в Redis с версионированием ключей; инвалидация не сигналами, а outbox-паттерном: запись события в таблицу → Celery-консюмер инвалидирует/перестраивает кэш; для публичных GET — ETag/Last-Modified и CDN. Миграции без простоя по схеме expand→migrate data→contract, индексы CONCURRENTLY, деплой blue/green; задачи — Celery/RQ, идемпотентность через ключи, ретраи с backoff. Наблюдаемость: APM, slow query log, профилинг N+1, метрики p95/p99; безопасность: строгие SECURE_*, CSRF, rate limiting в DRF/Reverse-proxy; логи — stdout. Библиотека собеса по Python

Как просмотреть все элементы в модели django? ModelName.objects.all() Библиотека собеса по Python

Что такое глубокая и поверхностная копии? Для чего они нужны? ⚫️ Поверхностная копия создаёт новый объект, который содержит ссылки на внутренние объекты из оригинала. Если вы измените внутренние объекты оригинала, эти изменения отразятся и в поверхностной копии. Поверхностное копирование полезно, когда вы хотите создать новый экземпляр коллекции, но сохранить элементы коллекции неизменными. Это copy.copy(x). ⚫️ Глубокая копия, напротив, создаёт новый объект и рекурсивно копирует все внутренние объекты, найденные в оригинале. В результате, внутренние объекты глубокой копии являются полностью независимыми от оригинальных объектов. Это полезно, когда нужно, чтобы исходный объект и его копия были полностью изолированы друг от друга. Это copy.deepcopy(x). Библиотека собеса по Python

Как делать атомарную запись и надёжную фиксацию файла при сбоях и конкурирующих записях? Пишите во временный файл в том же каталоге, flush() → os.fsync(tmp) → os.replace(tmp, target) (атомарный rename), затем os.fsync(dir). Для множественных писателей используйте файловый lock (fcntl/msvcrt/portalocker) или координацию через очередь/БД; не перезаписывайте «на месте». Библиотека собеса по Python

Что делает функция statvfs? Функция statvfs() используется для получения информации о файловой системе, содержащей указанный путь. Она возвращает объект класса os.statvfs_result, атрибуты которого представляют информацию о файловой системе. Библиотека собеса по Python

🔥 Знакомьтесь с экспертом Proglib.academy: Эмиль Сатаев Эмиль — эксперт с 8-летним опытом в разработке, который специализиру
🔥 Знакомьтесь с экспертом Proglib.academy: Эмиль Сатаев Эмиль — эксперт с 8-летним опытом в разработке, который специализируется на внедрении LLM и агентных подходов в реальные коммерческие сервисы. Он точно знает, как проектировать архитектуру так, чтобы ИИ-функции работали стабильно в связке с внешними системами. 🏃‍♀️ Уже 14 мая Эмиль проведет открытый вебинар! Обсудим самую «больную» тему: «Почему AI-продукты на базе LLM ломаются и как сделать, чтобы работало». 🗓 Когда: 14 мая в 19:00 (Мск) Почему Эмиля стоит послушать: 🟣 8+ лет в разработке (Backend и Frontend)
Прошел путь от фулстека до Backend Platform Developer в SMIT.Studio.
🟣 Международный исследовательский опыт
Работал исследователем в Институте ИИ НИУ ВШЭ и в Национальном университете Сингапура (NUS).
🟣 Преподаватель-практик
Ведет семинары в НИУ ВШЭ, в том числе по проектированию и разработке агентских систем.
🟣 Мастер интеграции AI в Backend
Его главная суперсила — умение правильно встраивать LLM через API, выстраивать workflow и агентную логику в сложных распределенных системах.
🔗 Зарегистрироваться на вебинар

Зачем нужен select_related и чем он отличается от prefetch_related в Django? select_related делает SQL JOIN и грузит связанные объекты сразу. prefetch_related делает отдельный запрос и связывает их в Python. Первый — для ForeignKey/OneToOne, второй — для ManyToMany/Reverse FK. Библиотека собеса по Python

Что такое MQ? MQ (Message Queue) — очередь сообщений, это паттерн asynchronous messaging, который позволяет обмениваться сообщениями между распределенными компонентами приложения. Основные преимущества использования MQ: Асинхронность — отправитель и получатель не зависят друг от друга. Отказоустойчивость — сообщения не теряются при сбоях. Масштабируемость — легко добавлять новых производителей и потребителей. Сглаживание пиковой нагрузки — очередь позволяет буферизовать сообщения. MQ широко используется для интеграции распределенных систем, построения микросервисных архитектур. Популярные реализации MQ: RabbitMQ, Kafka, ActiveMQ. Библиотека собеса по Python

🗓 14 мая в 19:00 (Мск) встречаемся в онлайне. Тема: Почему AI-продукты на базе LLM ломаются и как сделать, чтобы работало. В кружке выше Эмиль Сатаев рассказал, какие именно проблемы с LLM в проде будем разбирать. Что в программе:
- Разберем реальные кейсы стартапов и ограничения LLM. - Обсудим рабочие архитектуры: RAG, human-in-the-loop, контроль качества. - Ответим на ваши вопросы и разберем кейсы участников.
🎁 Бонусы: в конце вебинара подарим промокод на скидку 10.000 ₽ на курсы и разыграем подписки на полезные AI-сервисы. 👉 Зарегистрироваться на вебинар

Почему многопоточность в Python не всегда ускоряет выполнение CPU-bound задач? Из-за GIL одновременно выполняется только один поток байткода, поэтому для CPU-bound задач лучше использовать multiprocessing или выносить вычисления в нативный код. Библиотека собеса по Python

Что такое old-style и new-style классы и в чем их различия? — Old-style классы наследуются напрямую от класса type, тогда как new-style классы имеют наследование от класса object. — New-style классы предлагают дополнительные функции, такие как дескрипторы, свойства и слоты, которые недоступны в old-style классах. — В new-style классах метод __init__ вызывается при наследовании, в отличие от old-style классов. — New-style классы являются предпочтительными, так как они полностью поддерживают принципы объектно-ориентированного программирования. Большинство библиотек требуют именно их использование. Рекомендуется применять new-style классы, унаследованные от object, поскольку они обладают расширенными возможностями и лучше интегрируются с другими объектами. Библиотека собеса по Python

Когда выбирать typing.Protocol вместо ABC и какие есть ограничения? Protocol — для структурной типизации («утиная» совместимость) без наследования: достаточно совпадения сигнатур. Работает на уровне тайпчекера; для рантайм-проверок нужен @runtime_checkable и только isinstance/issubclass. Не хранит состояние и не навязывает реализацию — идеален для плагинных интерфейсов. Библиотека собеса по Python

🦾 Почему ваши AI-продукты на базе LLM ломаются (и как это чинить)? Выкатили ИИ-фичу в прод, а она галлюцинирует, падает или
🦾 Почему ваши AI-продукты на базе LLM ломаются (и как это чинить)? Выкатили ИИ-фичу в прод, а она галлюцинирует, падает или выдает мусор? Приглашаем на открытый вебинар, где разберем реальную боль внедрения LLM-агентов и научимся делать так, чтобы «всё работало». 🗓 Когда: 14 мая в 19:00 МСК ⏱️ Формат: 60 минут мяса + 30 минут ответов на ваши вопросы 🧑🏻‍💻 Кто вещает: Эмиль Сатаев — Backend Platform Developer (8+ лет в разработке). Человек, который своими руками внедряет LLM и агентные системы в реальные коммерческие сервисы. 🎁 Главный бонус для онлайна: Только участникам прямого эфира подарим уникальный промокод на скидку 10.000 ₽ на большой курс AgentOps. 👉 Занять место на вебинаре

В продакшене Python-сервис со временем начинает замедляться, хотя нагрузка остаётся стабильной. Мониторинг показывает рост памяти (memory leak). Как вы будете искать и устранять причину? Использовать профайлеры (tracemalloc, objgraph, memory_profiler) для отслеживания утечек, проверить циклические ссылки и висящие ссылки на объекты (особенно в кэше или глобальных структурах), оптимизировать работу с коллекциями и сторонними библиотеками. Библиотека собеса по Python