Библиотека собеса по Python | вопросы с собеседований
6K subscribers
716 photos
15 videos
783 links
Вопросы с собеседований по Python и ответы на них.

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

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

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
Когда выбирать typing.Protocol вместо ABC и какие есть ограничения?

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

Библиотека собеса по Python
🌚1
Что такое 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
Почему многопоточность в Python не всегда ускоряет выполнение CPU-bound задач?

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

Библиотека собеса по Python
🗓 14 мая в 19:00 (Мск) встречаемся в онлайне.

Тема: Почему AI-продукты на базе LLM ломаются и как сделать, чтобы работало.

В кружке выше Эмиль Сатаев рассказал, какие именно проблемы с LLM в проде будем разбирать.

Что в программе:
- Разберем реальные кейсы стартапов и ограничения LLM.
- Обсудим рабочие архитектуры: RAG, human-in-the-loop, контроль качества.
- Ответим на ваши вопросы и разберем кейсы участников.


🎁 Бонусы: в конце вебинара подарим промокод на скидку 10.000 ₽ на курсы и разыграем подписки на полезные AI-сервисы.

👉 Зарегистрироваться на вебинар
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое MQ?

MQ (Message Queue) — очередь сообщений, это паттерн asynchronous messaging, который позволяет обмениваться сообщениями между распределенными компонентами приложения.

Основные преимущества использования MQ:

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

MQ широко используется для интеграции распределенных систем, построения микросервисных архитектур.
Популярные реализации MQ: RabbitMQ, Kafka, ActiveMQ.


Библиотека собеса по Python
👍4
Зачем нужен select_related и чем он отличается от prefetch_related в Django?

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


Библиотека собеса по Python
👍2
🔥 Знакомьтесь с экспертом Proglib.academy: Эмиль Сатаев

Эмиль — эксперт с 8-летним опытом в разработке, который специализируется на внедрении LLM и агентных подходов в реальные коммерческие сервисы. Он точно знает, как проектировать архитектуру так, чтобы ИИ-функции работали стабильно в связке с внешними системами.

🏃‍♀️ Уже 14 мая Эмиль проведет открытый вебинар!

Обсудим самую «больную» тему: «Почему AI-продукты на базе LLM ломаются и как сделать, чтобы работало».

🗓 Когда: 14 мая в 19:00 (Мск)

Почему Эмиля стоит послушать:

🟣 8+ лет в разработке (Backend и Frontend)
Прошел путь от фулстека до Backend Platform Developer в SMIT.Studio.


🟣 Международный исследовательский опыт
Работал исследователем в Институте ИИ НИУ ВШЭ и в Национальном университете Сингапура (NUS).


🟣 Преподаватель-практик
Ведет семинары в НИУ ВШЭ, в том числе по проектированию и разработке агентских систем.


🟣 Мастер интеграции AI в Backend
Его главная суперсила — умение правильно встраивать LLM через API, выстраивать workflow и агентную логику в сложных распределенных системах.


🔗 Зарегистрироваться на вебинар
Please open Telegram to view this post
VIEW IN TELEGRAM
Что делает функция statvfs?

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

Библиотека собеса по Python
Как делать атомарную запись и надёжную фиксацию файла при сбоях и конкурирующих записях?

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

Библиотека собеса по Python
Как просмотреть все элементы в модели django?

ModelName.objects.all()

Библиотека собеса по 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?

Убедитесь, что файл 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
Для чего нужен модуль operator?

Модуль operator предоставляет функции, которые соответствуют встроенным операторам языка.
Например, функции add(), sub(), mul() и другие реализуют арифметические операторы +, -, *.

Основные причины использования модуля operator:

— Возможность передавать функции в качестве аргументов или возвращаемых значений других функций. Например, в sorted(), min(), max() и др.

— Оптимизация производительности за счет использования функций вместо выражений. Функции заранее компилируются.

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

— Дополнительные возможности, например, operator.itemgetter() и operator.attrgetter() для извлечения элементов из объектов.


Библиотека собеса по 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
🔥3
Что такое сигналы Django?

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


Библиотека собеса по Python
Как реализовано управление памятью во Flask?

В Flask распределение памяти управляется модулем управления памятью Flask Python. Кроме того, в Flask есть встроенный сборщик мусора, который перерабатывает всю неиспользуемую память, освобождая место в куче. Ответственность за отслеживание всего этого лежит на интерпретаторе Python. Однако пользователи могут использовать основной API для доступа к некоторым инструментам.

Библиотека собеса по Python
👏1
В чём различие между __getattribute__ и __getattr__, и когда вызывается каждый?

Короткий ответ: __getattribute__ вызывается при каждом обращении к атрибуту; __getattr__ — только если атрибут не найден обычным способом. Внутри __getattribute__ нужно делегировать в super().__getattribute__, иначе будет бесконечная рекурсия.

Библиотека собеса по Python
⚡️ Главные ИИ-новости недели: от громкого трансфера Карпати до бесплатного ChatGPT для целой страны

1.
Андрей Карпати перешел в Anthropic.

2. Anthropic впервые обогнала OpenAI по бизнес-адопции: 34.4% и 32.3% соответственно. (см. 2)

3. Codex теперь доступен в мобильном приложении ChatGPT

4. xAI запустила Grok Build — CLI-агент для кодинга с субагентами, plan-режимом, headless и ACP. Пока бета, только для SuperGrok Heavy. (см. 4)

5. Cursor выпустил модель Composer 2.5 (на основе Kimi K2.5): стоит в 10 раз дешевле и работает на уровне Opus 4.7. (см. 5)

6. Google релизнула модель Gemini 3.5 Flash

Модель Gemini 3.5 Flash, которая обходит Gemini 3.1 Pro на агентских и кодинговых бенчмарках при 4-кратной скорости вывода. Вместе с ней появился персональный агент Gemini Spark, работающий круглосуточно, а 3.5 Pro ожидается в следующем месяце. (см. 6)

7. Alibaba выпустила Qwen 3.7 Max Preview (заняла 13 место в Text Arena) и Plus Preview (16 место в Vision Arena). (см. 7)

8. Moonshot AI выпустила Kimi WebBridge

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

9. Мальта договорилась с OpenAI и раздает всем своим гражданам годовую подписку ChatGPT Plus

📬 Понравился дайджест? Это лишь 20% от того, что мы отправляем нашим подписчикам каждую субботу.

👉 Подписаться на еженедельную ИИ-рассылку