Code.Offer.Repeat
47 subscribers
10 photos
2 files
6 links
Пишу про ML/Data Science собеседования и не только
Автор: Дмитрий Булгаков (Middle Data Scientist @ MTS Web Services)
@dm1trybu
Download Telegram
Channel created
Всем привет!

👋Знакомимся
Я Дмитрий Булгаков - Data Scientist в МТС Веб Сервисы. Занимаюсь преимущественно классическим ML и реализацией задач от бизнеса end-to-end вместе с командой.

🤔Зачем этот канал?
Когда я впервые столкнулся с собеседованием на DS позицию, то понял, что совершенно не готов к текущим требованиям (именно требованиям собесов) в большинстве БигТехов. Доставая информацию из разных источников и побывав на некотором количестве собесов, сложилась картинка, как сделать так, чтобы все-таки этим требованиям соответствовать и даже не думать о том, чтобы как-то считерить. В канале будут собраны прикольные и проверенные ресурсы для подготовки к собесам ну и конечно же собственный контент для подготовки.

🤨Кому будет полезно это все?
Для тех, кто хочет найти первую работу/перейти на новую работу на позициях
Data Scientist, MLEngineer, Data Analyst, Analyst-Developer. 

Software Engineer и Data Engineer
смогут найти тоже много полезного здесь для себя. В перспективе здесь могут появиться разборы баз данных и дизайна высоконагруженных систем.

Давайте вместе готовиться к самым сложным собесам и целиться в луну, чтобы точно оказаться среди звезд ;)

🔍Что здесь сможете найти?
- #leetcode решение алго задач (некоторые будут с видео)
- #MLbasics разные важные моменты в ML и DL, которые очень часто всплывают на собесах
- #MLSysDesign будем разбирать интересные кейсы готовых дизайнов систем машинного обучения и придумывать свои
- #guide общая информация о собесах и для собесов
- #interview обзор собеседований, которые будут на нашем пути
- #money сколько кто зарабатывает тоже обсудим :)
- #random что-то интересное из жизни и работы

Список тем to be continued…



P.S. Если у вас существуют вопросы с собесов или в целом из ML, которые интересно было бы разобрать - пишите в личку @dm1trybu
Please open Telegram to view this post
VIEW IN TELEGRAM
4💯4🤓3
Code.Offer.Repeat pinned «Всем привет! 👋Знакомимся Я Дмитрий Булгаков - Data Scientist в МТС Веб Сервисы. Занимаюсь преимущественно классическим ML и реализацией задач от бизнеса end-to-end вместе с командой. 🤔Зачем этот канал? Когда я впервые столкнулся с собеседованием на DS позицию…»
#guide
#leetcode
#interview_structure

Часть 1

Как сейчас обычно строится собес на позицию Data Scientist/MLEngineer? 💻

1) Алгоритмы и структуры данных

Обычно на этом этапе дают две задачи с leetcode. Первая из них уровня easy, а вторая уровня medium.

- Ориентируемся на длительность собеседования в 1 час.
- Первую задачку стремимся решить за 15 минут, вторую за ~40 минут. Еще закладываем 5 минут на поговорить в начале и задать вопросы в конце.
- Иногда интервьюеры могут задержаться минут на 5, но тут ряд факторов: вы реально близки к готовому решению второй задачи и у интервьюера нет горящей встречи сразу после собеседования.
- Чаще код пишут в текстовом редакторе, например, Yandex.Code, но может быть и редактор с Python интерпретатором, например, CoderPad. Так что будьте готовы запустить свой код. Чаще это даже проще, так как можно проверить работоспособность и только после сдавать решение.

Алгособеседование подразумевает не просто написание рабочего кода, а рассуждение над ходом решения и грамотное комментирование своего кода. Интервьеру важно видеть, что вы понимаете то, что пишете и можете «пояснить» за каждую строчку. Также нужно говорить и том, насколько придуманное решение оптимально и если видите, что можно оптимизировать - не стесняйтесь вслух сказать об этом. Может быть и не придется переписывать, просто на словах объясните, как сделать лучше.

Ключевой фактор оптимальности - это знание нотации O-большое относительно сложности по времени и по памяти:
O(1) O(n) O(logn) O(n^2) O(!n)

и так далее. Об этом мы еще поговорим подробнее.

Обычно на таком интервью имеется возможность задать вопрос по синтаксису языка, если вдруг что-то забыли, но по реализации алгоритма подсказок ждать не стоит :)

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

Всегда может найтись такой баг, который сложно заметить из-за того что уже «замылился глаз» на задачу, интервьюер может дать сигнал, что еще не до конца все разобрано. Если самостоятельно не получилось найти - интервьюер подскажет пример, на котором все сломается, НО тут нужно держать в голове, что между количеством подсказок и успешным прохождением алгособеса существует обратно пропорциональная зависимость :)

Дальше будем подробнее разбирать эту секцию уже на примерах решений задач.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤓65🤨3
#guide
#MLbasics
#interview_structure

Часть 2

Как сейчас обычно строится собес на позицию Data Scientist/MLEngineer? 💻

2) Проверка теоретических знаний по ML и всего, что может быть с связано с ML/DL

В первую очередь надо понимать, что недостаточно знать о существовании линейной регрессии, градиентного бустинга или рекуррентной нейронной сети. Важно понимать устройство каждой модели, которую называешь на собеседовании. Насколько глубоко проверят знания - одному лишь интервьюеру известно. Бывает так, что достаточно верхнеуровнево описать логику, но чаще всего нужно раскрывать больше деталей, какие деревья там, почему bias - variance в бустинге оптимизируется, какой критерий разбиения признака в дереве может быть, бывает и с формулами. Также и с метриками, нужно знать, как посчитать метрику вручную, чтобы уверенно объяснить ее и показать глубину на собеседовании.

Получается, что знать нужно много всего и сразу. На этом еще не все. Далеко не во всех случаях на собеседованиях ограничиваются теорией ML, к общему набору вопросов всегда «прилипают» вопросы из мат. статистики и теории вероятностей. Как же без вопросов о тестировании гипотез. А если речь заходит про PCA (уменьшение размерности признакового пространства), то здесь и линейная алгебра подключается со своим сингулярным разложением. Конечно, вряд ли попросят раскладывать матрицу на собеседовании, но понимать, как работает данный метод просто необходимо.

Необязательно помнить все разделы математики подробно, но те из них, которые так или иначе стали базой для ML - спросить могут и скорее всего спросят)

Дальше тут будут появляться ответы на самые популярные вопросы из всех разделов так называемой «базы ML», собранные с разных собеседований. 😈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍85🤓5
#guide
#MLSysDesign
#interview_structure

Часть 3

Как сейчас обычно строится собес на позицию Data Scientist/MLEngineer? 💻

3) ML System Design 😱

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

Ваша цель - показать, что:
- вы понимаете бизнес проблему и будете основывать вашу систему, отталкиваясь от потребности бизнеса, а также валидировать модель на ML метриках, которые будут привязаны к бизнес метрикам (показателям),
- вы можете подойти к решению системно - структурировать монолог и последовательно проговорить все этапы построения системы от постановки бизнес проблемы и переноса ее в техническую задачу -> до мониторинга и оценки вашей системы,
- вы способны выбрать подходящий для данной задачи Loss, модель и офлайн метрики,
- вы можете рассказать про trade-offs вашей системы, например, внедряя сложную модель будем жертвовать временем, а внедряя простую - качеством,
- вы можете поговорить про выбор онлайн метрик, оценку разработанной системы с помощью A/B и про ее мониторинг.

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

На этом этапе собеседования могут попросить погрузиться и в детали обычного System Design - то есть поговорить про нагрузку на серверы, про такие показатели системы, как latency, availability, fault tolerance и другие, про использование технологий, таких как балансировщик нагрузки, брокер сообщений Kafka, кэширование в Redis, про выбор БД для разных целей и упаковку модели в API сервис.

Если срочно нужно подготовиться к такому собесу на DS/MLE, а времени мало - лучше сосредоточиться на ML части, так как часто ей уделяют основное внимание.

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

Обычно дизайн собеседование проводят от уровня Middle и выше. 💪

Следующий пост про ML System Design будет по источникам, где вообще можно поучиться этому делу.
Please open Telegram to view this post
VIEW IN TELEGRAM
7👏5🤓4
#вопрос_дня
#MLbasics
#теорвер

На одном из собеседований в крупный зарубежный финтех была проверка знаний по теории вероятностей. Вопрос не особо сложный, но ударившись только в модели, можно забыть обо всем другом. Давайте разбираться!

Условие задачи:
Есть две коробки, в первой лежат 3 зеленых шара и 7 красных шаров, а во второй - 6 зеленых и 4 красных. Мы случайно берём шар наугад и он оказывается зелёным. Какая вероятность, что этот зеленый шар был взят из первой коробки?

Решение:
Здесь нужно расписать имеющиеся априорные вероятности и применить теорему Байеса.
1) Выписываем вероятности каждого отдельного события - взять любой шар из первой коробки, взять зеленый шар из первой коробки, взять зеленый шар из второй коробки.
2) Считаем по формуле полной вероятности общую вероятность взять зеленый шар.
3) Считаем по формуле из теоремы Байеса вероятность, что наш зеленый шар был взят из первой коробки.
Ответ: 1/3


Получается, что для решения задачи достаточно знать формулу полной вероятности и теорему Байеса, а расписав ее, остается просто взять нужные данные из условия.

Про то, как легче интерпретировать теорему Байеса поговорим в следующем посте.

Ниже картинка с расписанным решением 🥺
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4🆒4😎4👏2
👍73🔥3
#MLbasics
#теорвер

В продолжение к задачке из предыдущего поста.

Теорема Байеса — это по сути способ обновлять вероятность гипотезы, когда появляются новые данные.

Формулировки для понимания:
- Имея знания о вероятности какой-то гипотезы, мы можем с появлением новых знаний уточнять эту вероятность.
- Новые данные -> новая, более точная вероятность.
- Меняем мнение на основе новых фактов.

Короткий пример:
Ты знаешь, что дождь идёт примерно раз в неделю, значит, вероятность - 1 из 7, но вдруг небо затянуло тучами - это новая информация. Теперь вероятность дождя меняется - именно так работает теорема Байеса.


Есть крутое видео с визуализацией и геометрической интерпретацией теоремы Байеса: ссылка
6👍5🤓4
#guide
#MLbasics

Поделюсь полезными ссылками на материалы и вопросы для подготовки к теоретическим собесам в DS/MLE.

Англоязычные ресурсы:
- Подборка бесплатных и платных курсов: курсы
- Вопросы для подготовки (самые популярные): вопросы
- Вопросы посложнее (с ответами): посложнее
- Теоретические заметки: справочник
- Материалы для подготовки (+ ресурсы для Quantitative Researchers): материалы

Русскоязычные ресурсы:
- Учебник от Яндекса: учебник
- Недорогой, но полезный курс по classic ML (от преподавателей с ФКН): курс ML
- Недорогой, но полезный курс по базе DL (от преподавателей с ФКН): курс DL
- Немного базовых вопросов: вопросы
🔥43👍2🤓2
#вопрос_дня
#python

Вопрос с собеса на DL Engineer в российский банк: В чем разница между мультипоточностью и мультипроцессорностью в Python?

Начнем с базы!

Процессор (CPU) - это «железка», физическое устройство, которое выполняет вычисления. Современные процессоры состоят из нескольких ядер, каждое из которых может работать с отдельной своей задачей.

Поток (thread) - это последовательность выполнения инструкций внутри одной программы. Один процесс может иметь несколько потоков, которые делят общую память.

Идем дальше.

Мультипоточность - это запуск нескольких потоков внутри одного процесса. Но! В Python есть GIL (Global Interpreter Lock) — штука, которая не даёт реально выполнять код нескольких потоков одновременно. Поэтому многопоточность эффективна только для задач с I/O (ожидание сети, файлов, API).
Пример:
Мы обучаем модель на большом датасете изображений.
Чтобы не ждать, пока данные последовательно подгрузятся с диска, DataLoader из PyTorch может использовать num_workers > 0. В этом случае потоки параллельно читают файлы, подготавливая тензоры.

train_loader = DataLoader(dataset, batch_size=64, shuffle=True, num_workers=4)


Мультипроцессорность - это запуск нескольких процессов, каждый со своим интерпретатором Python и памятью. Здесь GIL не мешает, и это работает круто для CPU-bound задач (численные расчёты, непосредственно ML и т.д.).
Пример:
Мы запускаем несколько моделей (или несколько экспериментов с разными гиперпараметрами) одновременно. Каждый процесс работает независимо, использует своё ядро CPU и не ограничен GIL.

from multiprocessing import Process

def train_model(config):
# CPU-bound training
...

processes = []
for cfg in configs:
p = Process(
target=train_model,
args=(cfg,)
)
p.start()
processes.append(p)

for p in processes:
p.join()


Читай и запоминай, чтобы не завалить собес 👍
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥5🤓4
#guide
#MLSysDesign

Интервью по ML System Design, наверное, самый сложный этап из всех собеседований. Он сильно зависит от ожиданий интервьюера на данный грейд и может как повысить ваш статус кандидата, так и быстро понизить до джуна или стажера :)

Конечно, есть общие паттерны и подходы к проектированию - не просто так Валерий Бабушкин книжку написал: книга.

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

- Прикольное видео про system design в предотвращении банковского фрода: видео.

- Подборка видео Karpov x Валерий Бабушкин с мок собесами и разборами:
Первая часть
Вторая часть
Третья часть

Еще одно видео от Валерия по теории: видео.

DataTalks с Валерием Бабушкиным - есть полезные советы по прохождению: видео.

- Большой публичный собес от Авито: видео.

Скоро разберем одну нетривиальную задачку из дизайна, которую неожиданно дали кандидату на собесе в зарубежный финтех 😰


P.S. Если кто-то может купить за границей бумажную книжку «Machine Learning System Design» Валерия Бабушкина - напишите, буду крайне признателен)
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍5🔥4
#money 💰

Актуальные зарплаты в ML/DS на конец 2025 года в РФ

👶 Junior: ~100 – 200 k → медиана ≈ 130 k
🧑‍💻 Middle: ~150 – 350 k → медиана ≈ 220 k
🧠 Senior: ~200 – 450 k → медиана ≈ 320 k

🔥 ТОП компаний для Middle DS с медианной з/п > 300k:

- Magnit Tech
- Авито
- Cian
- Rutube


*В Москве, оклад в рублях "на руки", октябрь 2025 г.

Источник данных: https://getmatch.ru/salaries/data_science
👍5🤩5🔥4