Rust онлайн: редактор и компилятор для собеседований

Пишите и запускайте программы на Rust прямо в браузере, без установки rustup и cargo: код компилируется на сервере, сообщения компилятора и вывод видны сразу. Для собеседования откройте общую сессию и отправьте ссылку кандидату. Бесплатно и без регистрации.

Открыть редактор Rust
Бесплатно, без регистрацииКак провести лайвкодинг-собеседование на RustСовместный редактор кода: сравнение сервисов

Пример кода

fn max_profit(prices: &[i32]) -> i32 {
    let mut best = 0;
    let mut min_price = i32::MAX;
    for &p in prices {
        min_price = min_price.min(p);
        best = best.max(p - min_price);
    }
    best
}

fn main() {
    println!("{}", max_profit(&[7, 1, 5, 3, 6, 4]));
}

Вывод

5

Что умеет редактор

  • Rust 1.68: программа компилируется rustc и выполняется на сервере в изолированной песочнице, сообщения компилятора и вывод видят все участники.
  • Подробные ошибки компилятора: заимствования, времена жизни и несовпадение типов видны с номером строки — их удобно разбирать вместе с кандидатом.
  • Стандартная библиотека под рукой: Vec, HashMap, BTreeMap, VecDeque, итераторы, Option и Result.
  • Совместное редактирование в реальном времени: до 5 участников в одной сессии, правки и курсоры видны сразу.
  • Банк задач открыт без входа. После бесплатного входа — свои задачи, режим интервью с таймерами, оценка кандидата и история собеседований.

Как провести собеседование

  1. Нажмите «Провести собеседование» — сессия создастся с примером программы, его можно заменить своей задачей.
  2. Опишите условие в Markdown и отправьте ссылку кандидату: регистрация ему не нужна.
  3. Попросите кандидата проверять решение вызовами из main и выводом через println!. Входные данные задавайте в коде или в поле «Ввод (stdin)» над выводом — его видят все участники.

Типичные задачи на собеседовании

  • Объяснить ошибку borrow checker: почему нельзя держать ссылку на элемент Vec и одновременно добавлять в него новые.
  • Посчитать частоту слов через HashMap и entry API.
  • Разобрать строку в число и вернуть Result со своей ошибкой вместо unwrap.
  • Реализовать односвязный список на Option<Box<Node>> и развернуть его.
  • Переписать цикл на цепочку итераторов: filter, map, fold — и сравнить читаемость.
  • Описать типаж (trait) для фигур и посчитать суммарную площадь через Vec<Box<dyn Shape>>.

Ограничения

  • Автотестов для Rust пока нет — проверяйте решение вызовами из main и assert!.
  • Доступна только стандартная библиотека: крейты из crates.io не подключаются, cargo не используется.
  • Компиляция ограничена 10 секундами, запуск — 3 секундами и 64 КБ вывода.

Частые вопросы

Какая версия Rust используется?
Rust 1.68. Программа компилируется и запускается на сервере, поэтому результат одинаков у всех участников.
Можно ли подключить крейт, например rand или serde?
Нет, доступна только стандартная библиотека. Для задач собеседования её хватает: коллекции, итераторы, строки и обработка ошибок.
Есть ли автотесты для Rust?
Пока нет. Проверяйте решение через assert! и assert_eq! в main — заодно видно, как кандидат думает о крайних случаях.
Нужна ли регистрация?
Нет. Редактор открывается сразу, а кандидату для собеседования достаточно ссылки и имени. Банк задач тоже открыт без входа. Вход нужен для своих задач, режима интервью и истории.

Редактор для других языков