Как устроен найм в ML
Карта найма в ML: семь ролей и чем они отличаются, чего ждут от junior, middle и senior, из каких этапов состоит собеседование и какие уроки курса готовят к каждому, сколько времени нужно на подготовку, где искать работу и стажировки и как оценить компанию со своей стороны.
Зачем это нужно
Заголовок раздела «Зачем это нужно»За ступени 0–10 вы прошли путь от первой строки на Python до своей LLM, а в модулях 11.1 и 11.2 поработали «как на работе» и научились проектировать ML-системы. Найм — отдельная игра со своими правилами. Сильный инженер, который их не знает, проигрывает более слабому, который готовился. Он не может за две минуты рассказать о проекте, неделю делает тестовое задание или молчит на алгоритмической секции, хотя задачу знает.
Хорошая новость: правила почти везде похожи. Порядок и число секций у каждой компании свои, но набор блоков общий: скрининг, алгоритмы, теория ML, ML coding, проектирование ML-систем, поведенческое интервью, иногда тестовое задание. Этот урок — карта: какие бывают роли, чего ждут на каждом уровне, что проверяет каждый этап и какие уроки курса к нему готовят. Остальные уроки модуля разбирают этапы по одному.
Собеседование — не экзамен, а выборка из вашей будущей работы. За час интервьюер пытается понять, каким вы будете коллегой через полгода: как думаете вслух, что делаете, когда не знаете ответа, как проверяете себя. Поэтому подготовка — это не заучивание ответов. Вы тренируете те же навыки, что нужны на работе, только в условиях ограниченного времени.
Роли: кто чем занимается
Заголовок раздела «Роли: кто чем занимается»Названия ML-ролей не стандартизованы. «ML-инженером» одна компания называет того, кого другая зовёт data scientist, а «AI-инженер» может и писать промпты, и обучать модели. Поэтому в вакансии читайте обязанности, а не заголовок. Ниже — семь типичных ролей в том виде, в каком их чаще всего описывают.
| Роль | Чем занимается | Главные навыки | Что из курса ближе всего |
|---|---|---|---|
| ML-инженер | Доводит модель до продукта: данные, обучение, оценка, сервинг, мониторинг | Python, классический ML и DL, PyTorch, SQL, инженерная культура | ступени 2–3 и 7, модули 11.1–11.2 |
| LLM/AI-инженер приложений | Строит продукт поверх готовых LLM: промпты, RAG, агенты, эвалы, стоимость | API моделей, RAG, агенты, оценка качества, бэкенд | ступень 8, модуль 7.3, разбор 11.2.2 |
| Research engineerresearch engineer (инженер-исследователь)EN research engineerИнженер в исследовательской команде: реализует и масштабирует идеи исследователей — большие запуски обучения, распределённые вычисления, воспроизведение статей, инфраструктура экспериментов. Пишет больше кода, чем исследователь, и меньше продуктового кода, чем ML-инженер. | Реализует и масштабирует идеи исследователей: большие запуски, распределённое обучение, воспроизведение статей | глубокий PyTorch, распределённое обучение, отладка обучения | ступени 4–6, модуль 5.4, урок 11.4.1 |
| Исследователь (research scientist) | Ставит гипотезы, придумывает методы, публикует статьи | математика, постановка экспериментов, письмо | урок 9.2.2, 11.4.1; обычно ждут публикаций |
| Data scientist | Отвечает на вопросы бизнеса с помощью данных: анализ, A/B-тесты, прогнозные модели | статистика, SQL, pandas, бустинг, умение объяснить вывод | ступени 1–2, урок 1.3.4, 11.1.3 |
| MLOpsMLOpsEN MLOps (machine learning operations)Практики и инфраструктура, которые доводят модель до продакшена и держат её там: конвейеры данных и обучения, версии моделей, CI/CD, сервинг, мониторинг, откат. MLOps-инженер отвечает за эту платформу, а не за качество конкретной модели.-инженер | Платформа, на которой живут модели: конвейеры, CI/CD, версии, сервинг, мониторинг | Docker, Kubernetes, CI/CD, наблюдаемость | уроки 8.4.3, 11.1.4, разбор 11.2.5 |
| Инженер по инференсу | Скорость и стоимость генерации: движки, квантование, батчинг, ядра | vLLM и SGLang, квантование, CUDA и Triton, профилирование | модули 7.1–7.2 и 5.7 |
Как выбрать роль? Посмотрите, что вам больше всего нравилось в курсе. Если увлекли ступень 8 и разбор ассистента поддержки, ваш путь — LLM-инженер приложений. Если нравилось чинить обучение, считать FLOPs и гонять DDP на четырёх картах, смотрите на ML-инженера или research engineer. Если в радость были замеры скорости из модулей 7.1 и 7.2, подойдёт инференс.
Выберите одну основную роль и одну запасную. Алгоритмы, теория и ML coding у всех ролей общие, поэтому подготовка к двум соседним ролям почти совпадает. Различаются проектная секция и вопросы о проектах.
Об исследователе — честно. В сильных лабораториях на эту роль обычно ждут публикаций или учёной степени. Путь туда из курса чаще лежит через research engineer: воспроизведение статей (урок 11.4.1), открытый код и первые собственные эксперименты.
Уровни: junior, middle, senior
Заголовок раздела «Уровни: junior, middle, senior»Грейдгрейд (уровень должности)EN job level (seniority level)Ступень в лестнице должностей компании: junior → middle → senior → lead и выше. От грейда зависят ожидания (масштаб задач и самостоятельность), набор секций собеседования и вилка зарплаты. Названия и число ступеней в каждой компании свои. определяет масштаб задач и самостоятельность. Названия и число ступеней у каждой компании свои, но смысл похож.
| Уровень | Масштаб | Пример задачи | Что проверяют сильнее |
|---|---|---|---|
| Стажёр, junior | Задача с понятной постановкой, под присмотром наставника | «Обучи классификатор обращений по готовой разметке и сравни с бейзлайном» | базу: алгоритмы, теорию ML, ML coding; умение учиться |
| Middle | Задача целиком: от уточнения до продакшена и метрик, без присмотра | «Сделай поиск по базе знаний для поддержки и выведи его в прод» | плюс проектирование ML-систем и реальные проекты в деталях |
| Senior | Направление: выбирает, что делать, видит риски, растит других | «Реши, нужна ли нам своя модель или хватит API, и спланируй квартал» | плюс глубокий system design, компромиссы, лидерство в поведенческих вопросах |
Выше senior идут lead, staff, principal: больше влияния на команду и компанию, меньше собственного кода.
Где вы после курса. По LLM вы знаете больше типичного junior: обучали трансформер, писали GRPO и квантование. Но грейд — это не объём знаний, а опыт самостоятельной работы: в команде, на продакшене, с чужим кодом и сроками. Модуль 11.1 и выпускной проект дали этому опыту заменитель, но не сам опыт. Реалистичная цель для первой работы в ML — стажировка или junior с сильным портфолио. Если до курса вы работали разработчиком, аналитиком или инженером, цельтесь в middle в смежной роли, где прежний опыт засчитают. Не занижайте себя до «я ничего не умею» и не завышайте до senior. Интервьюер быстро увидит расхождение, и это хуже, чем честно названный уровень.
Этапы собеседования
Заголовок раздела «Этапы собеседования»flowchart LR A["Отклик:<br/>резюме или<br/>рекомендация"] --> B["Скрининг<br/>20–30 мин"] B --> TECH subgraph TECH["Технические секции, по 45–60 мин"] direction TB T1["Алгоритмы"] T2["Теория ML и LLM"] T3["ML coding"] T4["ML system design"] end TECH --> D["Поведенческое<br/>интервью"] D --> E["Финал:<br/>разговор с командой"] E --> F["Оффер"] B -.->|"иногда вместо<br/>части секций"| H["Тестовое<br/>задание"] H -.-> TECH
Крупные компании обычно проводят для всех кандидатов на роль одинаковый набор секций. Стартапы чаще подстраивают процесс под свою задачу: разговор с основателем, разбор их реальной проблемы, тестовое задание. Что проверяет каждый этап:
- Скрининг. Рекрутер или нанимающий менеджер, 20–30 минут. Проверяют, подходите ли вы вакансии: рассказ о себе, почему эта роль, формат работы, сроки, иногда ожидания по деньгам. Бывает и короткий технический скрининг на 5–10 вопросов вроде «что такое переобучение» или «чем LoRA отличается от полного дообучения». Главная ошибка — импровизировать: рассказ о себе на две минуты готовят заранее (шаблон — в уроке 11.3.6). Об ожиданиях по деньгам отвечайте вилкой из свежих обзоров рынка (где их искать — ниже) или спросите вилку вакансии.
- Алгоритмы. Задача «на доске» на 45 минут. Проверяют, пишете ли вы корректный код и оцениваете ли сложность.
- Теория ML и LLM. Вопросы с углублением: «что такое bias–variance?» → «как это видно на кривых обучения?» → «что сделаете, если…». Третий уровень «почему» отделяет понимание от заученных ответов — по-китайски их зовут «багу»«багу» (заученные шаблонные ответы к собеседованию)EN rote interview answers ("eight-legged essay")IT-жаргон: стандартные ответы на типовые теоретические вопросы собеседования, которые заучивают заранее («зубрить багу»). Слово — от «багувэнь», «восьмичленного сочинения» с жёстко заданной формой на императорских экзаменах эпох Мин и Цин.. Для LLM добавляются задачи на оценку: память на обучение 7B-модели, почему decode упирается в пропускную способность памяти.
- ML coding. Написать кусок ML с нуляML coding (секция собеседования)EN ML coding interviewЭтап собеседования, где за 30–45 минут пишут кусок ML с нуля: softmax, attention, k-means, AUC. По-китайски такие задания называют «шоусы» — «разорвать руками», то есть написать без библиотек. за 30–45 минут: softmax, attention, k-means, AUC.
- ML system designпроектирование ML-системEN ML system designПроектирование всей системы, в которой модель — лишь одна часть: требования, метрики, данные, бейзлайн, модель, оценка, сервинг, мониторинг и цикл обратной связи. Отдельная секция собеседований на ML-инженера.. Спроектировать систему за 45–60 минут вслух и с числами. Для middle и выше часто главная секция.
- Поведенческое интервьюповеденческое интервьюEN behavioral interviewСекция собеседования, где спрашивают о прошлом опыте: «расскажите о случае, когда…». Проверяют, как вы работаете — с ошибками, конфликтами, неопределённостью, сроками. Отвечают историями по методу STAR.. «Расскажите о случае, когда…» — как вы работаете с ошибками, конфликтами, неопределённостью. Отвечают историями по методу STAR.
- Тестовое задание. Задача на дом на несколько часов или дней: обучить модель, собрать прототип, разобрать данные. Иногда заменяет часть секций.
- Финал и оффероффер (предложение о работе)EN job offerОфициальное предложение о работе после собеседований: должность, грейд, зарплата и другие условия, дата выхода. Условия оффера обсуждают до подписания — это и есть переговоры об оффере.. Разговор с руководителем команды о задачах, затем предложение с условиями, которые можно обсуждать.
Этап собеседования → уроки курса
Заголовок раздела «Этап собеседования → уроки курса»Главная таблица урока. Почти к каждому этапу курс уже готовил вас. Осталось повторить материал в формате собеседования: вслух, с таймером, без подсказок.
| Этап | Что тренировать | Уроки курса | Сколько готовиться* |
|---|---|---|---|
| Скрининг | Рассказ о себе за 2 минуты, ответы о мотивации, короткие вопросы по базе | 11.3.6, этот урок | 2–3 вечера |
| Алгоритмы | Девять техник, оценка сложности, решение вслух | 11.3.5 | 6–8 недель по 1–1.5 ч в день, план в уроке |
| Теория ML | 50–60 частых вопросов с углублением | 11.3.2 и ступени 1–3: обобщение, метрики, backprop | 2–3 недели |
| Вопросы по LLM | 50–60 вопросов и задачи «на подумать» | 11.3.3 и ступени 4–9 | 2–3 недели |
| ML coding | Девять задач с нуля на NumPy с таймером | 11.3.4 и ДЗ s11-hw05-ml-coding | 1–2 недели |
| ML system design | Схема из девяти шагов, оценки на салфетке, четыре разбора | 11.2.1–11.2.5 и ДЗ s11-hw04-capacity | 3–4 недели |
| Поведенческое | 6–8 историй по STAR, вопросы работодателю | 11.3.6 | 1 неделя |
| Тестовое задание | Бейзлайн, README, честные выводы, ограничение по времени | 11.3.6, проекты P1–P11 как образцы | часы–дни, по ходу процесса |
* Наша оценка для выпускника курса при 1–1.5 часа занятий в день. Темы идут параллельно, а не друг за другом, поэтому вся подготовка занимает 8–10 недель, а не сумму строк таблицы.
Как готовиться: план на 8–10 недель
Заголовок раздела «Как готовиться: план на 8–10 недель»Пять принципов, на которых держится план.
- Начните с вакансий, а не с учебников. 15–20 вакансий целевой роли покажут, какие этапы и навыки нужны именно вам. Как их разобрать — в практике урока.
- Алгоритмы — каждый день понемногу, остальное — блоками. Алгоритмы — навык руки, он копится медленно и быстро выветривается (урок 11.3.5). Теорию и system design удобнее брать блоками по 2–3 недели.
- Пробные собеседованияпробное собеседованиеEN mock interviewТренировочное собеседование в формате настоящего: с таймером, вслух, с «интервьюером» — коллегой, учебным напарником или ИИ. Главная польза — разбор после: где молчали, где ушли в сторону, чего не знали. — с середины подготовки. Раз в неделю с учебным напарником или с ИИ в роли интервьюера. Первое пробное собеседование почти всегда проходит хуже, чем ожидаешь: молчание, потерянная нить, забытая формула. Лучше пережить это на тренировке.
- Откликайтесь до того, как почувствуете себя готовым. Чувство полной готовности не приходит никогда. Первые настоящие собеседования — тоже тренировка, поэтому начните с компаний, которые для вас не на первом месте.
- Разбирайте каждое собеседование. В течение часа после него запишите вопросы и места, где споткнулись,
в
journal/mistakes.md(тетрадь ошибок). Через месяц у вас будет личный банк вопросов.
| Недели | Каждый день, 45–60 мин | Блок недели, ещё 30–45 мин в день | Контрольная точка |
|---|---|---|---|
| 1–2 | Алгоритмы: сложность, хэш-таблицы, окно | Разбор вакансий, резюме и README проектов (11.3.6) | резюме готово, 15–20 вакансий разобрано |
| 3–4 | Алгоритмы: сортировка, бинпоиск, стек, куча | Теория ML (11.3.2) | квиз-тренажёр 11.3.2 без ошибок в ключевых темах; первые отклики |
| 5–6 | Алгоритмы: графы, ДП | LLM (11.3.3) и ML coding (11.3.4, ДЗ s11-hw05) | ДЗ s11-hw05 на Strong; первое пробное собеседование |
| 7–8 | Смешанные задачи с таймером | System design (модуль 11.2, ДЗ s11-hw04) | два разбора вслух за 45 минут |
| 9–10 | Повтор задач из тетради ошибок | Поведенческое (STAR) и пробные собеседования полного цикла | 6–8 историй, два полных пробных собеседования |
Если у вас уже идут собеседования, план сжимается: смотрите, какие секции ждут вас в ближайшие две недели, и готовьтесь в первую очередь к ним.
Где искать работу
Заголовок раздела «Где искать работу»Российский рынок
Заголовок раздела «Российский рынок»- hh.ru — одна из крупнейших площадок вакансий в России. Ищите по ключевым словам («ML-инженер», «LLM», «PyTorch») и подпишитесь на новые вакансии по сохранённому запросу.
- Хабр Карьера (career.habr.com) — площадка для IT: вакансии, профиль со стеком технологий, раздел о зарплатах в IT.
- Карьерные страницы компаний. У крупных компаний свои сайты вакансий и программы стажировок. По ним же видно, какие команды занимаются ML.
- Рекомендации. Рекомендация сотрудникарекомендация сотрудника (реферал)EN employee referralСотрудник компании передаёт ваше резюме рекрутеру или нанимающему менеджеру напрямую. Процесс собеседований не отменяет, но резюме точно прочитают. Рекомендовать стоит только того, чью работу видел: например, по совместному проекту или open source. гарантирует, что резюме прочитают, хотя собеседования всё равно придётся пройти. Рекомендации вырастают из живых связей: учебные группы, open source (11.4.2), соревнования (11.4.3), сообщества вроде Open Data Science (11.4.4), митапы и конференции.
Удалённая работа и международные компании
Заголовок раздела «Удалённая работа и международные компании»Главная площадка международного найма — LinkedIn. Профиль на английском должен совпадать с резюме. Учтите, что из России сайт заблокирован с 2016 года. Собеседование в международной компании целиком идёт на английском, поэтому рассказ о проектах и разборы задач заранее проговорите вслух по-английски. Форма договора, налоги, валютные правила и ограничения на найм из вашей страны со временем меняются. Уточняйте их у специалиста до того, как вкладываться в долгий процесс, а не после оффера. Для удалённой работы портфолио особенно важно: работодатель не видит вас в офисе, зато видит ваш GitHub.
Стажировки и школы при компаниях
Заголовок раздела «Стажировки и школы при компаниях»СтажировкастажировкаEN internshipРабота на ограниченный срок, обычно для студентов и начинающих: реальные задачи под присмотром наставника. Отбор проще, чем на полную ставку, а хорошая стажировка часто заканчивается предложением о работе. — самый короткий путь в индустрию для человека без опыта: отбор проще, наставник есть, а хорошая стажировка часто заканчивается оффером. Крупные компании набирают стажёров волнами, поэтому следите за их карьерными страницами заранее. Часть программ рассчитана на студентов, так что читайте условия. Ещё один путь — бесплатные школы при компаниях с конкурсным отбором, например Школа анализа данных (ШАД) Яндекса. Они дают сильную программу и связи с индустрией, но к отбору по математике и алгоритмам нужно готовиться.
Где смотреть зарплаты
Заголовок раздела «Где смотреть зарплаты»Цифр мы не приводим: они быстро устаревают и сильно зависят от города, компании и грейда. Ориентиры ищите в обзорах площадок: в разделе зарплат Хабр Карьеры, в аналитике рынка труда от hh.ru, для международного рынка — на levels.fyi. Смотрите на дату обзора, размер выборки и грейд и сравнивайте два-три источника. Один обзор — это точка, а не вилка.
Как читать вакансию
Заголовок раздела «Как читать вакансию»Вакансия состоит из трёх частей: обязанности (что вы будете делать), требования (без чего не возьмут) и «будет плюсом». Требования часто написаны как список пожеланий. Если вы закрываете обязанности и основную часть требований, откликайтесь. Но вакансия «senior, 5+ лет» для первой работы почти наверняка мимо. Ищите junior, стажировки и роли, где засчитают ваш прошлый опыт.
Слова в вакансии подсказывают, какие секции вас ждут и что подтянуть:
| В вакансии | Скорее всего спросят | Что повторить |
|---|---|---|
| PyTorch, обучение моделей | ML coding, теория DL | 11.3.4, 11.3.2, ступень 3 |
| LLM, RAG, агенты, промпты | вопросы по LLM, дизайн LLM-системы | 11.3.3, 11.2.2, ступень 8 |
| A/B-тесты, статистика | эксперименты и метрики | 1.3.4, 11.1.3 |
| Docker, Kubernetes, CI/CD | деплой и эксплуатация | 8.4.3, 11.1.4 |
| vLLM, квантование, CUDA | инференс и железо | модули 7.1–7.2, 5.7 |
| DDP, FSDP, распределённое обучение | масштабирование обучения | 5.4.3, 5.7.4 |
| «опыт вывода в продакшен» | рассказ о проекте целиком | модули 11.1–11.2 и выпускной проект |
Как оценить компанию и команду
Заголовок раздела «Как оценить компанию и команду»Собеседование идёт в обе стороны. Для первой работы главный вопрос — будете ли вы расти: есть ли рядом сильные ML-инженеры и настоящий ML, а не только его название в вакансии. Что выяснить на собеседовании и до него:
| Что выяснить | Хороший знак | Тревожный знак |
|---|---|---|
| Задачи на первые 3 месяца | конкретный ответ: «ассистент поддержки, сейчас бейзлайн на BM25» | «посмотрим, у нас много всего» |
| Кто наставник | в команде есть ML-инженеры, код-ревью, есть кого спросить | вы будете единственным ML-специалистом |
| Данные и железо | данные есть и доступны, есть GPU или бюджет на API | «данные соберём потом» |
| Как модели попадают в прод | эвалы, A/B-тесты, мониторинг — шаги 6–9 из 11.2.1 | «выкатываем, если на глаз нормально» |
| Тестовое задание | на несколько часов, с обратной связью | неделя работы над реальной задачей компании |
| Как переживают сбои | постмортемы без поиска виноватых (11.1.4), дежурства описаны | «у нас всё горит, привыкнете» |
Часть ответов можно найти до собеседования: технический блог и доклады команды на конференциях, её открытый код на GitHub, статьи. Если команда пишет о своих экспериментах с числами и неудачами, ML в ней скорее настоящий. Самый честный источник — сотрудник, с которым вы поговорите без рекрутера. Конкретные вопросы для конца собеседования собраны в уроке 11.3.6.
Практика
Заголовок раздела «Практика»Задание в браузере: разбор вакансий
Заголовок раздела «Задание в браузере: разбор вакансий»Вакансий много, а времени мало. Посчитайте, какие навыки требуют чаще всего и каких не хватает вам. Тексты в задании учебные. Когда функции пройдут тесты, замените их на настоящие вакансии своей роли.
import re
# Анализ вакансий: какие навыки требуют чаще всего и каких не хватает вам.
# Учебные тексты вакансий: составлены для задания, компании и требования вымышлены.
# Потом замените их на 15–20 настоящих вакансий своей целевой роли.
VACANCIES = [
"ML-инженер в команду поиска. Требования: Python, PyTorch, SQL, опыт обучения моделей. Плюсом будет: LLM, Docker.",
"LLM-инженер: ассистент на RAG и агентах. Python, FastAPI, работа с API больших языковых моделей. Плюс — vLLM.",
"Data scientist: A/B-тесты, SQL, Python, pandas, статистика, градиентный бустинг.",
"Junior ML engineer. Python, PyTorch or TensorFlow, Git, Linux. Nice to have: Docker, Kubernetes.",
"Инженер по инференсу LLM: vLLM, квантование, CUDA, Python. Плюсом будет Triton.",
"MLOps-инженер: Docker, Kubernetes (k8s), CI/CD, Airflow, мониторинг моделей, Python.",
"Research engineer: PyTorch, распределённое обучение (DDP, FSDP), чтение статей, Python, Git.",
"NLP-инженер: дообучение LLM через LoRA, RAG, Python, PyTorch, Hugging Face Transformers.",
]
# Навык → его написания в вакансиях (уже нормализованные: строчные, «е» вместо «ё»).
SKILLS = {
"python": ["python"],
"pytorch": ["pytorch", "torch"],
"sql": ["sql"],
"llm": ["llm", "больших языковых моделей", "большие языковые модели"],
"rag": ["rag"],
"docker": ["docker"],
"kubernetes": ["kubernetes", "k8s"],
"vllm": ["vllm"],
"cuda": ["cuda"],
"lora": ["lora", "qlora"],
"ab-tests": ["a/b", "ab тесты"],
"distributed": ["ddp", "fsdp", "распределенное обучение"],
"git": ["git"],
}
def normalize(text):
"""Приводит текст вакансии к виду, в котором удобно искать навыки.
1) нижний регистр; 2) «ё» → «е»; 3) каждый кусок из символов, которые НЕ входят в [0-9a-zа-я+#/], —
в один пробел (регулярное выражение r"[^0-9a-zа-я+#/]+"); 4) лишние пробелы убрать, края обрезать.
Пример: normalize("LLM-инженер, A/B-тесты; Ёлка C++!") → "llm инженер a/b тесты елка c++".
"""
# TODO: ваш код
...
def extract_skills(text, skills):
"""Множество навыков (ключей skills), у которых хотя бы одно написание есть в тексте ЦЕЛЫМИ словами.
«rag» не должен находиться в «storage», а «torch» — в «torchvision». Приём: окружить пробелами и
нормализованный текст, и искомое написание. Многословные написания («большие языковые модели») ищутся как фраза.
"""
# TODO: ваш код
...
def skill_shares(vacancies, skills):
"""Доля вакансий, где встречается каждый навык: [(навык, доля от 0 до 1)].
Навык считается один раз на вакансию, сколько бы раз его ни упомянули. Навыки с долей 0 не включать.
Порядок — по убыванию доли, при равной доле — по алфавиту. Пустой список вакансий → [].
"""
# TODO: ваш код
...
def gap_report(vacancies, skills, my_skills, min_share=0.25):
"""Ваши пробелы: навыки с долей ≥ min_share, которых нет в my_skills, — в том же порядке, что в skill_shares."""
# TODO: ваш код
...
print(normalize("LLM-инженер, A/B-тесты; Ёлка C++!"))
print(extract_skills(VACANCIES[0], SKILLS))
print(skill_shares(VACANCIES, SKILLS))
print("Пробелы:", gap_report(VACANCIES, SKILLS, my_skills={"python", "pytorch", "sql", "git"}))
Локально: свои вакансии и самооценка
Заголовок раздела «Локально: свои вакансии и самооценка»-
Выберите основную и запасную роль. Соберите 15–20 вакансий на hh.ru, Хабр Карьере или LinkedIn и сохраните их тексты в
journal/job-search/vacancies.txtчерез пустую строку. Журнал приватный, а чужие тексты не нужно публиковать. -
Допишите в
SKILLSнавыки, которые встречаются в ваших вакансиях, и посчитайте доли:# vacancies.txt — вакансии через пустую строку; функции — ваши из задания вышеraw = open("journal/job-search/vacancies.txt", encoding="utf-8").read()vacancies = [v for v in raw.split("\n\n") if v.strip()]for name, share in skill_shares(vacancies, SKILLS):print(f"{name:14s} {share:.0%}") # формат :.0% печатает 0.35 как «35%»print("Пробелы:", gap_report(vacancies, SKILLS, my_skills={"python", "pytorch", "rag", "lora"})) -
Оцените себя по каждому этапу из главной таблицы по шкале 0–3 и запишите в журнал вместе с доказательством:
## Самооценка перед подготовкой · 2026-10-06 · роль: LLM-инженер (запасная: ML-инженер)| Этап | 0–3 | Доказательство | План ||---|---|---|---|| Алгоритмы | 1 | 4 задачи из 11.3.5 решил с подсказками | 11.3.5, каждый день 6 недель || ML system design | 2 | разбор 11.2.2 вслух за 60 минут, без чисел по памяти | 11.2.3–11.2.4, салфетка |Шкала: 0 — не знаю, с чего начать; 1 — решаю с подсказками; 2 — решаю сам, но медленно; 3 — решаю вслух за отведённое время. Этапы с оценкой 0–1 ставьте в план первыми, а пробелы из вакансий добавьте отдельной строкой.
Проверь себя
Заголовок раздела «Проверь себя»- Названия ML-ролей не стандартизованы — читайте обязанности. Семь типичных ролей: ML-инженер, LLM/AI-инженер приложений, research engineer, исследователь, data scientist, MLOps-инженер, инженер по инференсу.
- Грейд — это масштаб самостоятельности. Реалистичная цель после курса — стажировка или junior с сильным портфолио, а с прошлым опытом в IT — middle в смежной роли.
- Этапы найма почти везде одинаковые: скрининг, алгоритмы, теория ML и LLM, ML coding, ML system design, поведенческое, иногда тестовое. К каждому готовит конкретный урок курса, а вся подготовка занимает 8–10 недель при 1–1.5 часа в день.
- Начинайте с разбора 15–20 вакансий, откликайтесь до ощущения полной готовности, разбирайте каждое собеседование в тетради ошибок и оценивайте компанию так же внимательно, как она оценивает вас.
Дальше: урок 11.3.2 — теория ML и DL: банк частых вопросов по ступеням 1–3 с короткими ответами, типичными ошибками кандидатов и ссылками на уроки курса.