Rust онлайн: редактор и компилятор для собеседований
Пишите и запускайте программы на Rust прямо в браузере, без установки rustup и cargo: код компилируется на сервере, сообщения компилятора и вывод видны сразу. Для собеседования откройте общую сессию и отправьте ссылку кандидату. Бесплатно и без регистрации.
Бесплатно, без регистрацииКак провести лайвкодинг-собеседование на 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 участников в одной сессии, правки и курсоры видны сразу.
- Банк задач открыт без входа. После бесплатного входа — свои задачи, режим интервью с таймерами, оценка кандидата и история собеседований.
Как провести собеседование
- Нажмите «Провести собеседование» — сессия создастся с примером программы, его можно заменить своей задачей.
- Опишите условие в Markdown и отправьте ссылку кандидату: регистрация ему не нужна.
- Попросите кандидата проверять решение вызовами из 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 — заодно видно, как кандидат думает о крайних случаях.
- Нужна ли регистрация?
- Нет. Редактор открывается сразу, а кандидату для собеседования достаточно ссылки и имени. Банк задач тоже открыт без входа. Вход нужен для своих задач, режима интервью и истории.