🔗 Коротко о задачах по Python на собеседования
Задачи делятся по направлению: — алгоритмы, библиотеки для data (Pandas/Numpy), быстрые вопросы по языку, SQL/базы, системный дизайн, тестирование
Важно не только дать правильный ответ, но и объяснить идею, оценить сложность, покрыть краевые случаи и — если уместно — предложить оптимизации
🎲 Алгоритмы
Что проверяют? Знание базовых структур, умение мыслить о сложности, оптимизировать решение
Частые примеры: - RLE-сжатие строки: “aaabbbc” -> “3a3b1c” - Двоичный (binary) поиск, найти левую/правую границу, работать с монотонными функциями - Сортировки и их свойства (stability, in-place, сложность) - Поиск подстрок, KMP, двухуказательный подход, скользящее окно - Задачи на графы (BFS/DFS), кратчайший путь (Dijkstra), связные компоненты
🐼 Pandas / Numpy
Что проверяют? Знакомство с ключевыми операциями, умение эффективно работать с таблицами/векторами
Примеры вопросов: - Как объединить таблицы? (merge/join, how=‘left’/‘inner’) - Аналог CASE WHEN: np.where, pd.cut, .apply (если нужно), map - Группировки и агрегации: groupby + agg, transform - Векторизация вместо apply для ускорения - Приведение типов: astype, to_datetime - Как заменить пустые значения в столбце? (fillna) Полезно знать сложность операций и память, уметь профилировать (memory_usage, .info())
💡 OOP и проектирование кода
Что проверяют? Умение моделировать предметную область, шаблоны проектирования
Примеры: - Спроектировать класс-кеш с LRU - Объяснить SOLID-подходы на примере - Важно показать понятие инкапсуляции, интерфейсов и тестируемости
⚙️ Тестирование и отладка
Что проверяют? Умение писать unit-тесты, думать о граничных случаях
Примеры: - Написать тесты для функции сортировки/валидации - Найти баг в коротком фрагменте кода (debugging) - Полезно: упоминать edge-cases, и писать assert/pytest примеры
🧨 Вот пример задачи, которую могут дать на собесе дата аналитика:
Дан DataFrame orders с колонками: user_id, order_date (datetime), amount (float) Напишите код, который:
1) Добавит колонку cohort_month — месяц первой покупки пользователя (strftime(‘%Y-%m’)). 2) Посчитает для каждого пользователя retention: % пользователей из когорты, совершивших покупку в N-м месяце после первой. 3) Выведет таблицу retention matrix (строки — когорты, столбцы — месяцы после, значения — %).
Ставьте лайк, если понравился пост :)