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

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

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

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
Что такое генераторы в Python и в каких случаях их стоит использовать вместо списков?

Генераторы — это объекты, которые «лениво» отдают значения по одному через yield или генераторные выражения. Они экономят память и ускоряют обработку больших данных, так как не хранят всю коллекцию целиком. Используются, когда нужно итерироваться по большим наборам данных или потокам, где не требуется хранить всё в памяти.

Библиотека собеса по Python
👍61
Ваш Python-сервис использует asyncio и под нагрузкой работает стабильно, но при длительном тесте вы замечаете утечку памяти. Garbage Collector не освобождает объекты, хотя ссылки на них вроде бы удалены. Как будете искать и устранять проблему?

Проверю циклические ссылки и висящие таски, которые не завершаются. Использую tracemalloc, objgraph, gc.get_objects() для анализа живых объектов. Часто причиной бывает забытый asyncio.Task без await или глобальные кэши. Решение — правильно завершать корутины, использовать weakref, ограничивать размер кэшей (например, LRUCache) и при необходимости контролировать GC-паузы.

Библиотека собеса по Python
❤‍🔥2👍2
🔥 Последняя неделя перед стартом курса по AI-агентам

Старт курса уже 15го числа! Если вы планировали вписаться — сейчас ПОСЛЕДНИЙ шанс забронировать место

На курсе:
разложим LLM по косточкам: токенизация, SFT, PEFT, инференс
— соберём RAG и научимся оценивать его адекватно
— построим настоящую мультиагентную систему — архитектуру, которая умеет расти
— разберём CoPilot, сломаем через prompt injection (спасибо Максу)
— и наконец, посмотрим, как это работает в MCP и реальных кейсах

📍 Это 5 живых вебинаров + раздатка + домашки + чат с преподавателями

И главное — возможность реально разобраться, как проектировать системы на LLM, а не просто «поиграться с API»

Промокод на 5.000₽: LASTCALL

👉 Курс здесь
Async-сервис читает сообщения из Kafka и для каждого делает asyncio.create_task(process(msg)). Под пиковыми нагрузками растут задержки и RSS памяти, при этом CPU невысокий. В чём причина и как это исправить?

“Fire-and-forget” порождает неограниченное число задач, накапливается бэклог и объекты удерживаются в памяти до завершения тасков. Введите backpressure: ограничьте параллелизм через Semaphore/bounded Queue, батчируйте и await’ьте завершение (например, через пул воркеров или лимитированный gather), используйте pause/resume у Kafka-клиента, таймауты/отмену подвисших задач и корректные finally для освобождения ресурсов.

Библиотека собеса по Python
👍2
Что такое функциональное программирование?

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

Основные принципы функционального программирования:

Чистота функций: функции не должны иметь побочных эффектов и зависеть только от своих аргументов.

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

Рекурсия вместо циклов: в функциональном программировании циклы заменены на рекурсивные вызовы функций.

Высшего порядка функции: функции могут принимать на вход и возвращать другие функции.

Ленивые вычисления: вычисления откладываются до тех пор, пока результат не потребуется.


Библиотека собеса по Python
👍41
👀 Что такое Duck typing?

🦆Duck typing — это концепция в программировании, характерная для языков с динамической типизацией, таких как Python. Основная идея duck typing заключается в том, что тип объекта определяется его поведением (методами и свойствами), а не через явно заданный интерфейс или базовый класс.

🐍 В Python duck typing часто иллюстрируется фразой: «Если что-то выглядит как утка, плавает как утка и крякает как утка, то, вероятно, это и есть утка».

Библиотека собеса по Python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
В чём различие между __getattribute__ и __getattr__, и когда вызывается каждый?

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

Библиотека собеса по Python
👍1
VK проводит Weekend Offer для бэкенд-разработчиков и ML-инженеров. Это отличная возможность получить офер за 2 дня и не проходить много этапов.

Ищут бэкендеров со знанием Java, Go, Python или C++.

И MLщиков, с навыками в Classic ML, RecSys, NLP/LLM, CV, Speech.

Важный момент: ищут коллег с опытом коммерческой разработки от трех лет.

Совпадает? Тогда у вас есть все шансы получить приглашение на работу за 2 дня: технические собеседования 4 октября, а финалы, знакомство с командами и офер 5 октября.

Отправляйте заявку до 2 октября и станьте частью VK! Подробнее — на сайте.
👍1
FastAPI + SQLAlchemy 2.0 (async). Под нагрузкой растёт latency, пул соединений к БД забит, запросы «висят». Как диагностировать и починить без тупого увеличения пула?

Включить метрики/логирование пула (в т.ч. pool_size, overflow, время ожидания), найти долгие запросы (slow query log/EXPLAIN) и утечки сессий. Гарантировать жизненный цикл через контекст: async with AsyncSession() as s: .../sessionmaker, закрывать курсоры. Настроить pool_pre_ping/pool_recycle, таймауты (connect/statement). Ввести backpressure: лимитировать параллелизм (Semaphore/очередь), кратковременно ретраить. Оптимизировать SQL/индексы; при необходимости — кэш/батчи/денормализация.

Библиотека собеса по Python
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
📅 24 сентября в 19:00 МСК — бесплатный вебинар с Максимом Шаланкиным.

Тема: «ИИ-агенты: новая фаза развития искусственного интеллекта».

🔹 Почему все говорят про ИИ-агентов и куда вливаются миллиарды инвестиций.
🔹 Чем они отличаются от ChatGPT и обычных ботов.
🔹 Как работает цикл агента: восприятие → планирование → действие → обучение.
🔹 Живое демо простого агента.
🔹 Потенциал для бизнеса: автоматизация процессов и ROI до 80%.

Не придёшь — будешь потом рассказывать, что «агенты — это как чат-боты», и ловить косые взгляды от коллег 😏

👉 Регистрируйтесь через форму на лендинге
Какие отличия между модулем, пакетом и библиотекой?

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

Пакет — это коллекция модулей, объединенных в одной папке для обеспечения единой функциональности. Пакеты импортируются так же, как и модули. Обычно они содержат файл __init__.py, который сообщает интерпретатору Python, что папка является пакетом.

Библиотека — это совокупность пакетов.


Библиотека собеса по Python
👍5🔥1
⚡️ Бесплатный вебинар — ИИ-агенты: новая фаза развития AI

24 сентября в 19:00 МСК состоится бесплатный вебинар с Максимом Шаланкиным — Data Science Team Lead в финтех-команде MWS, а познакомиться с ним ближе можно в его тг-канале.

Тема:
«ИИ-агенты: новая фаза развития искусственного интеллекта».


На вебинаре разберёмся, почему агенты — это следующий шаг после ChatGPT, чем они отличаются от обычных моделей и как уже приносят бизнесу ROI до 80%. А дальше я покажу, как эта тема ложится в наш курс по ИИ-агентам, который разработан под руководством Никиты Зелинского.

Подробности рассказываем в гс выше — включай, чтобы не пропустить.
Почему NumPy предпочтительнее Matlab, Octave, Idl или Yorick?

NumPy — высокопроизводительная библиотека с открытым исходным кодом, которая обеспечивает сложные математические и научные вычислительные возможности. Она поддерживает следующее:

⚡️Мощные функции для выполнения сложных математических операций с многомерными матрицами и массивами. Операции с ndarrays NumPy примерно на 50% быстрее по сравнению с операциями с встроенными списками с использованием циклов. Эта эффективность очень полезна, когда массивы содержат миллионы элементов
⚡️Предоставляет синтаксис индексации для легкого доступа к частям данных в большом массиве
⚡️Предоставляет встроенные функции, которые помогают легко выполнять операции, связанные с линейной алгеброй и статистикой
⚡️Для выполнения сложных вычислений с использованием NumPy требуется всего несколько строк кода


Библиотека собеса по Python
🔥3👍1
CPU-bound пайплайн распараллелен через multiprocessing, но под нагрузкой стал работать медленнее: рост RSS, высокий overhead и низкая утилизация CPU. Как диагностировать и починить?

Померить накладные расходы на IPC/пиклинг (профилировщики, замеры времени map/submit). Укрупнить задачи (batch/chunksize), передавать большие данные через shared memory (multiprocessing.shared_memory, NumPy shared arrays / mmap) вместо копий, инициализировать тяжёлые объекты один раз в initializer воркера. Ограничить число процессов до числа ядер, избегать возврата больших результатов (писать в общий sink).

Библиотека собеса по Python
3
В FastAPI-сервисе каждые ~60 сек появляются p95/p99 всплески латентности. Профилирование показывает короткие стопы event loop во время циклических сборок мусора CPython. Как диагностировать и сгладить проблему, не «просто отключая GC»?

Включить телеметрию GC (callbacks, gc.get_stats()/get_threshold()) и пламеграфы (py-spy) вокруг пауз; найти источники циклов (крупные графы объектов, замыкания/кеши) через tracemalloc/objgraph. Снизить аллокации и циклы: __slots__, иммутабельные структуры, orjson, реюз буферов. Настроить GC: поднять пороги gc.set_threshold(...), вынести gc.collect() в фоновую периодику/idle-хуки, для hot-path — локально отключать циклический GC на время обработки и снова включать. Проверить, что паузы ушли и p99 сгладился.

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