Главная
Кто я
Обучение
Стоимость
Услуги
Python-разработчик
Rust-разработчик
Получить оффер заграницу
Проверь свои знания, ответь на 20 вопросов с реальных собеседований по
Rust
В конце дам полный список вопросов
Начать
Что делает Rust уникальным среди других языков программирования?
Основы
Автоматическая сборка мусора в runtime = 0
Встроенный интерпретатор для быстрого прототипирования = 0
Динамическая типизация с проверкой типов в runtime = 0
Система владения и заимствования, обеспечивающая безопасность памяти без сборщика мусора = 1
Обязательное использование ООП с наследованием классов = 0
Как работает система владения в Rust?
Владение
У каждого значения есть ровно один владелец, и когда владелец выходит из области видимости, значение удаляется = 1
Каждое значение может иметь несколько владельцев одновременно = 0
Владение определяется сборщиком мусора в runtime = 0
Владение — это только концепция документации, компилятор её не проверяет = 0
Владелец определяется программистом через аннотации в комментариях = 0
Сколько изменяемых ссылок на одно значение можно иметь одновременно?
Заимствование
Сколько угодно = 0
Не более двух = 0
Не более пяти = 0
Зависит от размера данных = 0
Ровно одну = 1
Что означает 'static время жизни?
Лайфтаймы
Переменная существует только внутри функции main = 0
Данные живут на протяжении всего времени работы программы = 1
Ссылка действительна ровно 1 секунду = 0
Память выделяется статически в стеке = 0
Тип не может быть перемещён = 0
Какие виды структур бывают в Rust?
Структуры
Статические и динамические = 0
Абстрактные и конкретные = 0
Именованные, кортежные и unit-структуры = 1
Только именованные структуры с полями = 0
Сколько памяти занимает Enum?
Enum
Сумма размеров всех вариантов = 0
Фиксированно 8 байт на всех платформах = 0
Размер самого маленького варианта = 0
Зависит от порядка объявления вариантов = 0
Размер самого большого варианта плюс размер дискриминанта = 1
Что такое Option в Rust и зачем он нужен?
Option/Result
Enum для безопасного представления возможного отсутствия значения (Some/None) = 1
Аналог null из других языков, позволяющий присваивать null любому типу = 0
Специальный тип для обработки ошибок ввода-вывода = 0
Макрос для условной компиляции = 0
Атрибут для оптимизации производительности = 0
Что такое мономорфизация?
Дженерики
Преобразование всех типов в один универсальный тип = 0
Процесс сборки мусора = 0
Оптимизация хвостовой рекурсии = 0
Генерация компилятором отдельного кода для каждого конкретного типа, используемого с дженериком = 1
Слияние нескольких функций в одну = 0
Чем Vec[T] (в угловых скобках <>) отличается от массива [T; N]?
Контейнеры
Vec хранится в стеке, массив — в куче = 0
Разницы нет, это синонимы = 0
Vec имеет динамический размер и хранится в куче, массив имеет фиксированный размер и хранится в стеке = 1
Массив быстрее, потому что использует сборщик мусора = 0
Vec может хранить только примитивные типы = 0
Какие требования накладываются на ключи HashMap?
HashMap
Ключи должны быть только строками = 0
Ключи должны быть числовыми типами = 0
Ключи должны реализовывать трейт Copy = 0
Ключи должны иметь размер не более 64 байт = 0
Ключи должны реализовывать трейты Eq и Hash = 1
Что такое Orphan Rule в Rust?
Трейты
Правило, запрещающее создавать пустые трейты = 0
Правило автоматического удаления неиспользуемых трейтов = 0
Правило, требующее, чтобы либо трейт, либо тип были определены в текущем крейте для реализации трейта = 1
Запрет на наследование более чем от одного трейта = 0
Обязательное требование документировать все трейты = 0
Какие трейты можно использовать как трейт-объекты (dyn Trait)?
Трейт-объекты
Любые трейты без ограничений = 0
Только object-safe трейты = 1
Только трейты из стандартной библиотеки = 0
Только трейты с одним методом = 0
Только трейты, помеченные атрибутом #[object_safe] = 0
Чем умные указатели отличаются от обычных ссылок?
Умные указатели
Умные указатели быстрее обычных ссылок = 0
Обычные ссылки устарели и не рекомендуются к использованию = 0
Разницы нет, это разные названия одного и того же = 0
Умные указатели работают только с примитивными типами = 0
Умные указатели владеют данными и могут иметь дополнительную логику = 1
Можно ли Rc[T] (в угловых скобках <>) использовать в многопоточном коде?
Rc/Arc
Нет = 1
Да, без ограничений = 0
Да, но только с мьютексом = 0
Да, если обернуть в Box = 0
Rc автоматически преобразуется в Arc при передаче между потоками = 0
Зачем нужен RefCell[T] (в угловых скобках <>) ?
RefCell
Для хранения ссылок на функции = 0
Для ускорения доступа к данным в многопоточке = 0
Для обеспечения внутренней изменяемости с проверкой правил заимствования в runtime = 1
Для автоматического клонирования данных = 0
Для создания циклических структур данных = 0
Что такое Mutex в Rust?
Многопоточность
Тип для хранения нескольких значений = 0
Механизм передачи сообщений между потоками = 0
Способ создания новых потоков = 0
Примитив синхронизации, обеспечивающий эксклюзивный доступ к данным из нескольких потоков = 1
Оптимизация компилятора для многопоточного кода = 0
За что отвечают трейты Send и Sync?
Send/Sync
Send — отправка HTTP-запросов, Sync — синхронизация файлов = 0
Send — синхронный код, Sync — асинхронный код = 0
Send — тип можно безопасно передавать между потоками, Sync — на тип можно безопасно ссылаться из нескольких потоков = 1
Send — отправка в канал, Sync — получение из канала = 0
Это устаревшие трейты, которые больше не используются = 0
Что означает аббревиатура mpsc в контексте каналов Rust?
Каналы
Multiple Parallel Single Channel = 0
Message Passing Synchronization Control = 0
Memory Protected Safe Communication = 0
Main Process Sub Channel = 0
Multi-Producer, Single-Consumer — много отправителей, один получатель = 1
Что такое Future в Rust?
Async
Зарезервированное ключевое слово для будущих версий языка = 0
Трейт, представляющий значение, которое может быть ещё не вычислено = 1
Тип для работы с датой и временем = 0
Коллекция для хранения будущих событий = 0
Специальный тип ошибок = 0
Зачем нужен Pin[T]? (в угловых скобках <>)
Pin
Для гарантии того, что значение не будет перемещено в памяти = 1
Для закрепления данных в кеше процессора = 0
Для создания указателей на статические данные = 0
Для оптимизации копирования больших структур = 0
Для маркировки данных как неизменяемых = 0
Результаты теста
Ты знаешь ответ на
0
% вопросов
Даааа, тебе точно есть, что подтянуть. Результаты теста
Жми кнопку ниже, чтобы получить полный файл с вопросами
Начать заново
Получить файл
Не идеально, но уже что-то!
Жми кнопку ниже, чтобы получить полный файл с вопросами
Начать заново
Получить файл
Хорошо, но есть к чему стремиться
Жми кнопку ниже, чтобы получить полный файл с вопросами
Начать заново
Получить файл
Ого, это уже неплохо
Жми кнопку ниже, чтобы получить полный файл с вопросами
Начать заново
Получить файл
Мощно! Держись в том же духе
Жми кнопку ниже, чтобы получить полный файл с вопросами
Начать заново
Получить файл
Нарекаю тебя "монстр собесов"
Жми кнопку ниже, чтобы получить полный файл с вопросами
Начать заново
Получить файл
Далее
Отправить
Введи почту и я отправлю полный файл с вопросами
Получить файл