Вернуться в видеотеку

Моковое собеседование Rust | Дмитрий Беляев, Wildberries

Публичное моковое интервью по Rust с техническими вопросами, задачей по проектированию сервиса и код-ревью. В конце — разбор ответов кандидата и карьерные рекомендации для Rust-разработчиков.

Источник: Solvery

Открыть на YouTube

Таймлайн

Коротко о видео

Публичное моковое собеседование по Rust для бэкенд-разработчика: Дмитрий Беляев задаёт Ярославу вопросы по строкам, обработке ошибок, владению, умным указателям, trait, async/await и Tokio. Затем участники проектируют сервис наподобие Solvery с расписанием, уведомлениями и платежами, а также проводят код-ревью модуля расчёта скидок. В финале интервьюер даёт обратную связь и отвечает на вопросы зрителей о подготовке, пет-проектах и рынке Rust.

Что взять на заметку

  • Повторить различие между `String` и `str`: `String` владеет изменяемыми данными, а `str` обычно используется через заимствованный срез `&str`.
  • Уметь объяснить, когда `unwrap()` приводит к panic, чем `expect()` добавляет контекст ошибки и как оператор `?` передаёт ошибку вызывающему коду.
  • Разобрать сценарий `Box::new([0u64; 1_000_000_000])`: большой массив сначала создаётся в стеке как аргумент вызова, поэтому вероятно переполнение стека ещё до полезного размещения в куче.
  • Чётко различать `Rc` и `Arc`: у `Arc` атомарный счётчик ссылок для многопоточного доступа; также знать назначение `Mutex` и `RwLock`.
  • Не считать `async` решением для CPU-bound работы: длительное перемножение матриц может занять поток исполнителя Tokio, если задача не уступает выполнение или не вынесена в подходящий пул.
  • Для отложенных уведомлений продумать хранение расписания в БД, приоритетную очередь ближайших задач и механизм ожидания до нужного времени вместо постоянного полного опроса списка.
  • В платёжном коде хранить деньги в минимальных единицах целым типом или использовать decimal-тип, моделировать необязательную скидку через `Option` и не оставлять `unwrap()` на ошибочных ветках.

Рекомендуем посмотреть