Библиотека собеса по Python | вопросы с собеседований
6.14K subscribers
605 photos
9 videos
310 links
Вопросы с собеседований по Python и ответы на них.

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

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

Для обратной связи: @proglibrary_feeedback_bot
加入频道
📚 13 ресурсов, чтобы выучить математику с нуля — подборка, которую просили

Хочешь прокачаться в математике для Data Science, ML или просто чтобы понимать, что происходит в формулах. Лови список лучших источников, которые собрали на Proglib.

➡️ Что внутри:
• Книги: от Пойи и Перельмана до Хофштадтера
• Советы: как учить, с чего начать, как не сдаться
• Математика для Data Science: разбор тем и формул
• Ссылки на форумы и задачи
• Как не бояться, если всё кажется сложным
• Что читать, если ты гуманитарий и страдал от школьной алгебры

✍️ Простой язык, много примеров и ноль академического занудства.

🔵 Для полного понимания Архитектуры, забирайте наш курс → «Архитектуры и шаблоны проектирования»

👉 Читай статью тут
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое сопрограмма (coroutine) в Python?

Сопрограмма (coroutine) — это расширенная подпрограмма, которая может приостанавливать выполнение и позже продолжать с того же места, а также поддерживает несколько точек входа.

🚩 В Python сопрограммы реализуются с помощью генераторов и, начиная с Python 3.5, через ключевые слова `async` и `await`.

🔎 Благодаря сопрограммам мы можем:
— писать асинхронный код без коллбеков
— выполнять неблокирующие операции в одном потоке
— использовать кооперативную многозадачность

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

Библиотека собеса по Python
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
🙈 Что скрывает дисперсия: разгадка секрета точных ML-моделей

Представьте, что вы строите модель, которая прекрасно работает на тренировочных данных, но стоит подать ей новые примеры... и всё рушится. Знакомо? За этим почти всегда скрывается неправильное обращение с дисперсией.

🧐 Но что, если есть простая формула, способная:

• Мгновенно определить, насколько «разбросаны» ваши данные

• Значительно улучшить точность ваших ML-моделей

• Помочь обнаружить аномалии, которые вы раньше не замечали

В нашем вебинаре мы раскрываем все секреты дисперсии — без сложных терминов и занудных объяснений. Вы узнаете, почему дисперсия — как соль: без нее все пресно, а с переизбытком — несъедобно.

Хотите узнать, как находить идеальный баланс в своих моделях, причем тут Random Forest и много другого о Data Science?

➡️Тогда смотрите бесплатный вебинар от Proglib: https://proglib.io/w/1ae24822
Please open Telegram to view this post
VIEW IN TELEGRAM
💻 Что такое миксины?

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

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

Пример миксина:
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
🖼 ТОП-5 структур данных для обработки изображений

Хотите разобраться, как обрабатывать изображения в компьютерном зрении или графике?

Всё начинается с правильных структур данных. Они помогают хранить и анализировать пиксели, их связи и расположение.

👉 В этой статье — подборка топ решений и советы, как их использовать.

Библиотека питониста
Please open Telegram to view this post
VIEW IN TELEGRAM
🔎 Как Python ищет модули при импорте?

Когда в коде используется import, Python ищет модуль в директориях, указанных в списке sys.path. Этот список — обычный список Python, содержащий пути к папкам, где интерпретатор будет искать модули.

🔎 По умолчанию sys.path включает:
1. Директорию, из которой запущен скрипт
2. Пути из переменной окружения PYTHONPATH (если она установлена)
3. Стандартные директории установки Python
4. Иногда — архивы .zip, если они находятся в пути

Python идёт по списку сверху вниз и использует первый найденный модуль с совпадающим именем.

🔎 Дополнительно:
sys.path можно изменять вручную в коде
— Для локальной приоритизации модулей — кладите их рядом со скриптом
— Виртуальные окружения добавляют свои пути автоматически

Библиотека собеса по Python
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Нужно посчитать 100 уравнений. Стоит ли использовать треды?

Нет, треды в этой задаче не подойдут, так как нет ввода-вывода.

Использование потоков приведет к лишним затратам времени на переключение контекста. Для сложных математических вычислений лучше использовать многопроцессорность, либо использовать фреймворк для распределённых задач, например, Celery, или подключать вычисления через C-библиотеки для повышения производительности.

Библиотека собеса по Python
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
🙂 Раскрываем секрет собственных векторов: математическое оружие на собеседовании

Что объединяет успешный собес и продвинутый анализ данных? Оба требуют способности выделять главное из информационного шума!

В мире данных этот суперскилл называется методом главных компонент (PCA) — это как рентген для ваших данных, который мгновенно показывает всю суть, отбрасывая неважные детали.

Например, мы проанализировали 453 акции компаний из списка S&P 500 и выяснили, что всего одна главная компонента объясняет 38% всей динамики рынка. Как такое возможно?

😘 Расскажем на воркшопе «Математика машинного обучения на практике» 21 апреля!

Вы будете работать с реальными данными, научитесь выявлять скрытые закономерности и применять эти инсайты в своих проектах.

Стоимость: 3990 ₽

Не беспокойтесь, если теоретическая база пока хромает — вы можете заранее посмотреть запись нашего вебинара по основам по ссылке ниже.

➡️ Забронировать место на воркшопе: https://proglib.io/w/f0157e5f
Please open Telegram to view this post
VIEW IN TELEGRAM
💭 Что такое интроспекция в Python?

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

🧩 Это мощный инструмент, встроенный в Python (а также доступный в других языках, например Java, PHP, Ruby). Он позволяет, например:

— Проверить тип объекта с помощью type()
— Проверить, к какому классу принадлежит объект — isinstance(obj, Class)
— Получить список доступных атрибутов и методов — dir(obj)
— Изучить содержимое объекта — через __dict__

Пример:
class Foo:
def __init__(self, val):
self.x = val
def bar(self):
return self.x

obj = Foo(5)
print(dir(obj))


Результат:
['__class__', '__dict__', ..., 'bar', 'x']


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

Библиотека собеса по Python
Please open Telegram to view this post
VIEW IN TELEGRAM
🌐 Что такое Middleware в Django?

Middleware — это специальный компонент, который обрабатывает входящие запросы и/или исходящие ответы в веб-приложении. Он используется для выполнения общих задач до или после того, как запрос попадёт в обработчик (view).

Например, можно:
Добавить заголовки в ответ
Проверить авторизацию
Логировать обращения
Обработать ошибки

🚩Как устроен Middleware на уровне кода

Обычно middleware реализует два метода:
process_request(request) — вызывается до view-функции
process_response(request, response) — вызывается после выполнения view

Каждый метод должен вернуть объект запроса/ответа для продолжения цепочки обработки, либо вызвать исключение, чтобы прервать выполнение.

🚩 Как подключить middleware

В Django — через настройку MIDDLEWARE:
MIDDLEWARE = [
'myproject.middleware.CustomMiddleware',
...
]


Библиотека собеса по Python
Please open Telegram to view this post
VIEW IN TELEGRAM
От многомерности к сути: чему нас учит PCA

На собеседовании важно уметь выделить главное — свои сильные стороны, мышление и ценности. Это помогает справляться со стрессом, неожиданными вопросами и субъективной оценкой.

В машинном обучении есть похожий подход — PCA (метод главных компонент). Он сокращает размерность данных, устраняя шум и второстепенные детали, и помогает сфокусироваться на самом важном.

В новой статье мы разберём:
• Как работает PCA
• Зачем он нужен
• Как применять его на практике — например, для анализа доходностей акций S&P 500

🐸 Подробнее: https://proglib.io/sh/uXsDlt75MY

Библиотека питониста
Please open Telegram to view this post
VIEW IN TELEGRAM
🔗 Что такое code coupling (связанность модулей) и почему это важно?

Связанность модулей (или coupling) — это термин, который описывает степень зависимости между различными частями программной системы. Чем меньше зависимость между модулями, тем легче поддерживать, тестировать и расширять систему.

➡️ Почему это важно

1️⃣ Низкая связность (Low Coupling):
— Модули взаимодействуют через четкие интерфейсы, минимизируя зависимости
— Изменения в одном модуле не требуют изменений в других
— Это облегчает поддержку и развитие системы

2️⃣ Высокая связность (High Coupling):
— Модули сильно зависят друг от друга
— Изменения в одном модуле потребуют изменений в других
— Такая система сложна в поддержке и тестировании

➡️ Пример из жизни

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

➡️ Стремитесь к слабой связности, чтобы ваши системы были более устойчивыми, масштабируемыми и удобными в поддержке.

Библиотека собеса по Python
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Приручи алгоритмы: из формул в код за один воркшоп

Готовы превратить сложную теорию машинного обучения в практические навыки? Тогда приходите на наш воркшоп, который пройдет 21 апреля.

Что вас ждет на воркшопе:
🟢 Работа с реальными данными — никаких учебных датасетов, только то, что встречается в настоящих проектах.

🟢Снижение размерности с PCA — научитесь выделять главное из информационного шума.

🟢Случайный лес vs градиентный бустинг — разберемся, в чём ключевое различие и когда какой алгоритм эффективнее.

🟢Мастерство гиперпараметров — освоите тонкую настройку моделей для максимальной точности.

На нашем воркшопе вы не просто слушаете — вы делаете сами! Вы будете писать код на Python, применять популярные библиотеки и сразу видеть результат своей работы.

А самое ценное: каждый участник получит персональный code review от Марии Горденко — инженера-программиста, старшего преподавателя НИУ ВШЭ, руководителя магистратуры от ГК Самолет и Альфа-Банка.

Когда: 21 апреля
💸Стоимость: всего 3990₽

Только сегодня, до конца дня: 10 мест по промокоду kulich → 2 990 ₽.

➡️ Записаться на воркшоп: https://proglib.io/w/f0157e5f
Что такое жадные алгоритмы и в каких случаях они применяются?

Жадные алгоритмы — это приближённые алгоритмы, которые на каждом шаге выбирают локально наилучшее решение в надежде, что оно приведёт к глобально оптимальному результату.

Когда используются:
👉 Когда точное решение задачи требует слишком много времени
👉 Когда высокая точность не критична
👉 Когда нужно простое и быстрое решение

Преимущества:
👉 Простая логика
👉 Быстрая реализация
👉 Высокая скорость работы
👉 Часто дают достаточно близкий к оптимальному результат

Недостатки:
👉 Не всегда гарантируют глобальный оптимум
👉 Подход работает не для всех задач (зависит от свойства задачи — например, задачи с оптимальным подструктурированием)

Примеры:
📍 Алгоритм Крускала и Прима (минимальное остовное дерево)
📍 Алгоритм Дейкстры (поиск кратчайшего пути)
📍 Сдача минимальным количеством монет

Библиотека собеса по Python
Please open Telegram to view this post
VIEW IN TELEGRAM
🆚 Зачем нужен паттерн Фасад и чем он отличается от Адаптера?

Используется для создания простого и понятного интерфейса поверх сложной или запутанной подсистемы.

🚩 Зачем нужен:

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

🚩 Пример из Python:
Работа с архивами — модули gzip, tarfile, zipfile имеют разный интерфейс. Чтобы скрыть различия, можно сделать единый фасад-класс, который всё упростит.

🚩 Фасад ≠ Адаптер
— Фасад упрощает работу с подсистемой
— Адаптер делает несовместимые интерфейсы совместимыми

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

Библиотека собеса по Python
Please open Telegram to view this post
VIEW IN TELEGRAM
Зачем дата-сайентисту дисперсия

Дисперсия — ключевой статистический показатель, который помогает оценить изменчивость данных. Для дата-сайентистов она критична при:

👉 Оценке и интерпретации результатов моделей
👉 Понимании поведения алгоритмов машинного обучения
👉 Снижении ошибок при построении предсказаний

В этой статье разберём, как правильно использовать дисперсию в Data Science и как она влияет на работу алгоритмов, например, в модели Random Forest.

👉 Читайте, чтобы понять, как измерять и учитывать дисперсию: https://proglib.io/sh/GDKYJQdAI2

Библиотека дата-сайентиста
Please open Telegram to view this post
VIEW IN TELEGRAM
🪞 Что такое отображение (mapping)?

Отображение — это тип контейнера, в котором элементы хранятся в виде пар ключ–значение. Такой объект предоставляет доступ к значениям по ключу, а не по индексу, как в списках. В Python отображения реализуют интерфейсы абстрактных базовых классов collections.abc.Mapping (для неизменяемых) и collections.abc.MutableMapping (для изменяемых).

К основным методам отображения относятся:
get()безопасное получение значения по ключу
items(), keys(), values()для перебора элементов, ключей и значений соответственно
update(), pop(), setdefault() и др. — для изменяемых отображений

Примеры отображений в Python:
dictстандартный словарь
defaultdictсловарь с значениями по умолчанию
OrderedDictсохраняет порядок добавления элементов (до Python 3.7)
Counterсловарь для подсчёта элементов

Библиотека собеса по Python
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Завтра запускаем ML-ракету: последние места на борту

Уже завтра, 21 апреля, состоится наш воркшоп «Математика машинного обучения на практике», где теория ML превращается в практические навыки.

Что вас ждет:
📍 Работа с реальными данными — табличные датасеты и изображения
📍 Снижение размерности через PCA — научитесь отделять важное от второстепенного
📍 Обучение моделей — Random Forest и градиентный бустинг в действии
📍 Разбор метрик и гиперпараметров — как настроить модель на максимальную эффективность
📍 Написание кода на Python — прямо как реальных проектах
📍 Персональный code review от эксперта — бесценный фидбек для вашего роста
📍 Доступ в закрытый чат участников — нетворкинг и обмен опытом

Кто проводит воркшоп:

Мария Горденко — инженер-программист, старший преподаватель НИУ ВШЭ и Proglib Academy, руководитель магистратуры от ГК Самолет и Альфа-Банка.

Стоимость участия: 3990₽
Когда: завтра, 21 апреля

👉 Забронировать место на воркшопе: https://proglib.io/w/f0157e5f
Please open Telegram to view this post
VIEW IN TELEGRAM
🔑 Что возвращает метод items() в Python?

Метод items() у словаря в Python возвращает специальный объект представленияdict_items. Этот объект содержит все пары ключ–значение, которые находятся в словаре на момент вызова метода. Главное, что стоит понимать — это не копия данных, а динамическое отображение текущего состояния словаря.

➡️ То есть, если после вызова items() словарь изменится (например, будут добавлены новые элементы или удалены существующие), это сразу отразится и на объекте items().

Пример:
d = {'a': 1, 'b': 2}
pairs = d.items()
print(pairs) # dict_items([('a', 1), ('b', 2)])

d['c'] = 3
print(pairs) # dict_items([('a', 1), ('b', 2), ('c', 3)])


Это поведение делает items() очень удобным для просмотра и итерации по словарю, но важно помнить об осторожности при изменении словаря во время обхода — это может вызвать RuntimeError, так как структура данных меняется в процессе итерации.

Также объекты, возвращаемые items(), поддерживают несколько стандартных операций:
➡️ iter(d.items())можно получить итератор по парам ключ-значение
➡️ len(d.items())вернёт общее число пар в словаре
➡️ (k, v) in d.items()позволяет проверить, содержится ли конкретная пара ключ-значение в словаре

🌸 В Python 2.7 аналогичную функцию выполняет метод viewitems(), но начиная с Python 3, items() уже по умолчанию возвращает объект-представление.

Библиотека собеса по Python
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉🐙🐱 20 лет Git: все такой же необычный, все такой же великолепный

Легендарному Git стукнуло 20! Вспоминаем, как проект, который Линус Торвальдс называл «тупым менеджером контента», стал незаменимым инструментом для всех, кто хоть раз писал код или даже просто хранил файлы.

Погружаемся в историю, эволюцию и влияние Git на индустрию разработки.

➡️ Читать статью

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM