Rust-разработчик: подготовка к собеседованию
Пройдёте собеседование по Rust с ответами, в которых виден механизм, и доведёте оффер до нужных условий. Проваливаются чаще не на синтаксисе, а на «почему не собирается» и на первом же разговоре о деньгах. Ответы взяты из настоящего запуска компилятора, задачи проверяются скрытыми тестами прямо в браузере.
Чему вы научитесь
- Торг о зарплате: ответ на «какие ожидания», встречное предложение на оффер, второй оффер и уровень middle или senior как деньги в письме
- Владение и заимствование: объяснять move, Copy и Clone, разбирать ошибки borrow checker и порядок Drop
- Времена жизни без мистики: когда их пишут руками и что значит каждое сообщение компилятора
- Типажи и дженерики: dyn Trait, object safety и выбор между статической и динамической диспетчеризацией
- Конкурентность: потоки, Send и Sync, атомики и типичные ловушки с общим состоянием
- Async изнутри: Future, poll, Waker и Pin, собственный block_on и join без tokio
- Unsafe и память: где заканчиваются гарантии компилятора и как это обосновать на интервью
- Live-coding: LRU-кэш, префиксное дерево, графы и парсеры под тесты с крайними случаями
- Проектирование API и ревью чужого кода, экосистема: cargo, serde, tracing, tokio и axum
Оффер пришёл ниже ожиданий
Сильный технический ответ ничего не стоит, если на последнем звонке вы соглашаетесь на первую цифру. Отдельный урок разбирает разговор о деньгах так же, как вопросы по Rust: как спрашивают, слабый ответ, сильный ответ и ловушки.
Четыре сценария: вопрос об ожиданиях на первом звонке, встречное предложение на оффер, два оффера на руках и уровень middle или senior, который превращается в сумму и дату пересмотра в письме. Цифры зарплат курс не выдумывает: только механика разговора и готовые формулировки.
Каждый сценарий заканчивается ответом вслух за 60 секунд — его можно почти дословно произнести рекрутеру.
Слабый ответ против сильного
На вопрос «почему этот код не собирается» слабый ответ звучит так: «Rust не разрешает менять вектор, пока на него смотрят». Смысл верный, но механизма нет, и интервьюер переходит к уточняющим вопросам.
Сильный ответ называет причину: ссылка указывает внутрь буфера вектора, а push может его перевыделить. Дальше вы сами отвечаете на уточнения: «а если ёмкости хватает», «чем E0502 отличается от E0499», «как починить».
Как устроены уроки
Теория короткая и в разных формах: разбор вопроса, диалог интервьюера и кандидата, ошибка компилятора построчно, трассировка по шагам, история одного бага.
Где полезно подумать самому, ответ спрятан: сначала предскажите результат, потом откройте.
Каждый урок заканчивается ответом вслух на 60 секунд — той формулировкой, которую можно произнести на интервью.
Часть задач требует починить код, который не собирается: так тренируется чтение сообщений компилятора.
С чего начинается и чем заканчивается
Первый модуль — диагностика уровня: вопросы по всем темам курса, карта пробелов и план подготовки на 7, 14 или 30 дней. Можно идти не подряд, а закрывать слабые места.
Последний модуль — резюме и pet-проект, вопросы работодателю, торг о зарплате и пробные собеседования junior, middle и senior с рубрикой интервьюера.
Для кого этот курс
Тем, кто уже пишет на Rust и готовится к собеседованию уровня junior, middle или senior
Разработчикам с других языков, которые переходят на Rust и хотят уверенно отвечать на вопросы о владении и async
Это не учебник по языку: если вы только начинаете, сначала пройдите «Rust - основы языка программирования»
Поддержка
Вы также можете задать любой вопрос по курсу у поддержки t.me/mentorix_support
Программа курса
Модулей: 14, уроков: 71. Задачи с кодом проверяются автоматически.
Диагностика и маршрут
- Диагностика, часть 1: владение, времена жизни, типажи
- Диагностика, часть 2: ошибки, коллекции, указатели, потоки
- Диагностика, часть 3: async, unsafe, макросы, производительность
- Результат диагностики и план на 7, 14 и 30 дней
Владение и заимствование
- Move и Copy: кто владеет значением
- Три способа починить E0382 и derive(Copy)
- E0502 и E0499: конфликт ссылок
- E0597, E0716 и NLL
- String, &str, срезы и UTF-8
- Порядок Drop
Времена жизни
- Elision: правила и ошибка E0106
- Времена жизни в функциях и методах
- Времена жизни в структурах
- 'static, HRTB и variance
Типажи и дженерики
- Дженерики и мономорфизация
- dyn Trait: vtable и размер
- Object safety и E0038
- impl Trait и ассоциированные типы
- Blanket impl, orphan rule, Deref, From, AsRef
Ошибки, замыкания, итераторы, коллекции
- Result, Option и оператор ?
- Дизайн ошибок: From и Box
- Замыкания: захват и move
- Fn, FnMut, FnOnce
- Итераторы: ленивость и адаптеры
- Свой Iterator и impl Iterator
- HashMap, BTreeMap, Entry и capacity
- Enum, match и niche-оптимизация
- Panic, overflow и unwinding
Умные указатели
- Box и размеры типов
- Rc, Arc, Weak и циклы
- Cell и RefCell
- Cow и Borrow
Конкурентность
- Потоки и move
- Send и Sync
- Каналы mpsc
- Mutex, RwLock и poisoning
- Deadlock и атомики с Ordering
- Scoped threads и пул потоков
Async изнутри
- Future и poll
- Waker и Pin
- block_on и Wake без tokio
- join, select и таймер без tokio
Unsafe и память
- Контракт unsafe и UB
- Raw pointers и MaybeUninit
- repr(C) и FFI
- Безопасная обёртка: мини-Vec
Макросы, тесты, производительность
- macro_rules: основы
- macro_rules: повторения
- derive и proc-macro на уровне понятия
- Тесты: unit, integration, doc
- Аллокации, итераторы против циклов, clippy
Live-coding
- UTF-8 строки в live-coding
- HashMap-задачи
- LRU-кэш
- Трие
- BFS и DFS на графе
- Dijkstra и BinaryHeap
- Парсер выражений и Display
Проектирование и ревью
- API-дизайн: builder и newtype
- Typestate, non_exhaustive и семвер
- Ревью чужого PR
Экосистема и инструменты
- cargo: workspaces, features, profiles
- serde и tracing
- tokio и axum: сервис
- Остановка и backpressure
Карьера и пробные собеседования
- Резюме, pet-проект, «почему Rust»
- Вопросы работодателю и оффер
- Торг о зарплате
- Пробное собеседование junior
- Пробное собеседование middle
- Пробное собеседование senior
Стоимость курса: 12990 ₽
Открыть курс на Mentorix · Все курсы