Новое:Talanto осенью: фильтры с числами, отклик по шагам и каталог компаний

+1 074новые вакансии за сутки·91 191вакансия открыта сейчас·Новое:Talanto осенью: фильтры с числами, отклик по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 116
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: фильтры с числами, отклик по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 410 кандидатов открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 172
  • Облачные технологии14 136
  • QA вакансии3 451
  • Backend вакансии2 051
  • Инженер данных1 762
  • Продакт-менеджер1 226

Разработка

  • Android1 854
  • iOS1 694
  • Fullstack вакансии978
  • AI вакансии944
  • Frontend вакансии735
  • Mobile вакансии43

По стеку

  • Go8 740
  • Java6 589
  • Node.js2 029
  • .NET1 734
  • Kotlin1 615
  • Rust1 473
  • C#715
  • PHP692
  • C++581

DevOps и инфраструктура

  • Kubernetes7 760
  • DevOps вакансии6 073
  • Linux-инфраструктура5 498
  • Terraform / IaC4 270
  • CI/CD3 273
  • Мониторинг и Observability1 791
  • SRE553
  • Кибербезопасность444

Аналитика и данные

  • Data Scientist1 115
  • Бизнес-аналитик916
  • Аналитик данных832
  • Системный аналитик153

Другие направления

  • Проджект-менеджер606
  • UI/UX дизайн145
  • Ручное тестирование14

По регионам

  • Вакансии в США42 450
  • Вакансии в Европе23 519
  • Вакансии в Канаде4 333
  • Работа в России3 786

По формату

  • Удалённые вакансии72 089
  • Релокация в США42 450
  • Гибридная работа12 458
  • Офисная работа7 066

По уровню

  • Senior вакансии41 491
  • Middle вакансии20 265
  • Junior вакансии6 499

Сейчас нанимают

Все компании
  • Rakuten189 вакансий
  • Wise189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis38 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме RustВсе вопросы
RustMiddleТеория

Что такое raw pointers в Rust и когда их следует использовать?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Raw pointers (*const T / *mut T) — указатели без гарантий borrow checker; разыменование требует unsafe. Используются в FFI, ручном управлении памятью и нестандартных структурах данных.

Пример: FFI и ручное управление памятью

use std::alloc::{alloc, dealloc, Layout};
use std::ptr;

fn main() {
    let layout = Layout::new::<u64>();

    unsafe {
        // Выделяем память вручную
        let raw: *mut u64 = alloc(layout) as *mut u64;
        if raw.is_null() {
            panic!("allocation failed");
        }

        // Записываем значение через raw pointer
        ptr::write(raw, 42u64);

        // Читаем значение
        let value = ptr::read(raw);
        println!("value = {}", value); // value = 42

        // Освобождаем вручную
        dealloc(raw as *mut u8, layout);
    }
}

Raw pointers в Rust

Raw pointers — это указатели *const T и *mut T, которые существуют вне системы владения и заимствования Rust. Компилятор не гарантирует их корректность: они могут быть нулевыми, висячими или указывать на освобождённую память. Разыменование raw pointer разрешено только внутри блока unsafe.

Отличия от ссылок

  • Не подчиняются правилу одного изменяемого или нескольких неизменяемых заимствований.
  • Не имеют времени жизни (lifetime), поэтому borrow checker их не отслеживает.
  • Могут быть нулевыми — std::ptr::null() и std::ptr::null_mut().
  • Разыменование через *ptr требует блока unsafe.
  • Арифметика указателей (ptr.add(n), ptr.offset(n)) разрешена только в unsafe.

Когда применяются

  • FFI: взаимодействие с C-библиотеками через extern "C".
  • Реализация нестандартных структур данных (связные списки, арены, интрузивные структуры).
  • Оптимизации, где гарантия корректности обеспечивается вручную.
  • Работа с std::mem::MaybeUninit для неинициализированной памяти.

Пример: взаимодействие с C через FFI

extern "C" {
    fn strlen(s: *const u8) -> usize;
}

fn main() {
    let s = b"hello\0";
    let len = unsafe { strlen(s.as_ptr()) };
    println!("len = {}", len); // len = 5
}

Создание raw pointer из ссылки

fn main() {
    let mut x = 10i32;
    let r: *mut i32 = &mut x as *mut i32;

    unsafe {
        *r += 5;
    }
    println!("{}", x); // 15
}

Подводные камни

  • Use-after-free: raw pointer не отслеживает время жизни объекта, поэтому легко получить висячий указатель после освобождения памяти.
  • Нулевой указатель: разыменование std::ptr::null() вызывает неопределённое поведение (UB). Всегда проверяйте ptr.is_null().
  • Неверное выравнивание: ptr::read/ptr::write требуют правильного выравнивания. Для невыровненного доступа используйте ptr::read_unaligned.
  • Двойное освобождение: если несколько raw pointer указывают на одну область, освобождение через dealloc дважды — UB.
  • Гонки данных: *mut T не Send/Sync по умолчанию, но можно обойти это вручную, что открывает гонки данных.
  • Арифметика за пределами аллокации: ptr.add(n) за границами выделенного блока — UB, даже если не разыменовывается.
  • Замена Box::into_raw без Box::from_raw: если вызвать Box::into_raw и не вернуть владение через Box::from_raw, будет утечка памяти.

Частые вопросы на собеседовании

  • Для каких задач Rust является сильным выбором, а где лучше честно выбрать другой язык?
  • Какие production-риски чаще всего возникают в проектах на Rust: производительность, зависимости, конкурентность, деплой или observability?
  • Как сравнить Rust с ближайшими альтернативами по производительности, поддерживаемости, найму и экосистеме?
  • Какие особенности runtime, type system или memory model Rust реально влияют на архитектуру приложения?

Типичные ошибки

  • Отвечать определением без production-сценария.
  • Не называть runtime boundary, security boundary или failure mode.
  • Игнорировать версию API, observability и тестовую проверку.

Что проверяет интервьюер

  • Объясняет механизм своими словами и без выдуманных API.
  • Называет реальные риски, диагностику и критерий корректности.
  • Связывает ответ с текущей документацией и миграционными ограничениями.

Как вы знаете этот вопрос?

Проверить себя по теме Rust →

Источники

  • https://doc.rust-lang.org/book/
  • https://doc.rust-lang.org/cargo/reference/
←Предыдущий вопросЧто такое zero-cost abstraction в Rust и как это проявляется на практике?Следующий вопрос→Что такое макросы Rust? В чём разница между `macro_rules!` и процедурными макросами?

Связанные темы

Rustrisk-analysisrust-productiontechnical-depth

Вакансии с этим навыком

Rust вакансии
  • Senior Software Engineer - Fullstack with Rust
  • Sr. Model Engineer, RL Training Framework
  • Starszy Programista PHP Laravel (k/m)
  • Programista PHP Laravel (k/m)
  • Sr. Software Engineer, Training/Inference (C++)