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

+1 210новых вакансий за сутки·93 612вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 126
  • Облачные технологии14 083
  • QA вакансии3 456
  • Backend вакансии2 115
  • Инженер данных1 809
  • Продакт-менеджер1 261

Разработка

  • Android1 862
  • iOS1 700
  • Fullstack вакансии986
  • AI вакансии950
  • Frontend вакансии744
  • Mobile вакансии44

По стеку

  • Go8 688
  • Java6 537
  • Node.js2 026
  • .NET1 722
  • Kotlin1 611
  • Rust1 458
  • C#710
  • PHP682
  • C++571

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

  • Kubernetes7 772
  • DevOps вакансии6 054
  • Linux-инфраструктура5 493
  • Terraform / IaC4 275
  • CI/CD3 239
  • Мониторинг и Observability1 790
  • SRE568
  • Кибербезопасность458

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

  • Data Scientist1 143
  • Бизнес-аналитик923
  • Аналитик данных857
  • Системный аналитик152

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

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

По регионам

  • Вакансии в США44 276
  • Вакансии в Европе23 819
  • Вакансии в Канаде4 471
  • Работа в России3 904

По формату

  • Удалённые вакансии74 928
  • Релокация в США44 273
  • Гибридная работа12 388
  • Офисная работа7 083

По уровню

  • Senior вакансии42 625
  • Middle вакансии20 854
  • Junior вакансии6 721

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

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

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

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

Как feature flags Tokio влияют на binary size и доступные модули?

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

Каждый feature flag добавляет соответствующий код в бинарник (net +120 KB, sync +100 KB и т.д.). full удобен для разработки, но в production используйте минимальный явный набор; cargo-bloat помогает измерить реальный вклад.

Измерение влияния

# Создайте два одинаковых проекта с разными флагами и сравните
cargo build --release
ls -lh target/release/my_app

# Анализ символов
nm --size-sort target/release/my_app | tail -20

# Что занимает место в бинарнике
cargo install cargo-bloat
cargo bloat --release --crates
cargo bloat --release -n 20  # топ-20 функций по размеру

Влияние feature flags на binary size и модули

Каждый feature flag Tokio добавляет скомпилированный код конкретного модуля в итоговый бинарник. Rust компилирует только то, что запрошено — но «лишние» флаги могут незаметно раздуть исполняемый файл и замедлить сборку.

Конкретные примеры влияния флагов

# Вариант A: минимальный
[dependencies]
tokio = { version = "1", features = ["rt", "macros"] }
# Модули: current_thread runtime, #[tokio::main]
# Нет: net, fs, time, sync — их API недоступны

# Вариант B: полный
[dependencies]
tokio = { version = "1", features = ["full"] }
# Добавляет: epoll/kqueue driver, fs syscalls,
# DNS resolver, Unix sockets, signal handling
# Реальное сравнение (stripped release build)
# Только rt + macros:      ~280 KB
# + net:                   +120 KB (epoll/IO driver)
# + fs:                    +80 KB
# + time:                  +60 KB
# + sync:                  +100 KB (channels, mutex)
# full (всё):              ~900 KB

# С LTO и strip:
cargo build --release
strip target/release/my_app

Какие модули становятся доступны

// С features = ["net", "io-util"]
use tokio::net::{TcpListener, TcpStream}; // Ok
use tokio::io::{AsyncReadExt, AsyncWriteExt}; // Ok

// Без feature "time" — не скомпилируется:
// use tokio::time::sleep; // error: module `time` not found

// Без feature "sync":
// use tokio::sync::Mutex; // error
// Но std::sync::Mutex — всегда доступен

Оптимизация binary size

# Cargo.toml — profile.release настройки
[profile.release]
opt-level = "z"    # оптимизация по размеру (vs "3" по скорости)
lto = true         # Link-Time Optimization — убирает мёртвый код
codegen-units = 1  # одна единица компиляции — лучший LTO
strip = true       # убрать символы отладки
panic = "abort"    # убрать unwinding код (~50 KB)

Проверка какие features включены транзитивно

# Посмотреть все активированные features для tokio
cargo metadata --format-version 1 | \
  python3 -c "
import json,sys
d=json.load(sys.stdin)
for p in d['packages']:
    if p['name']=='tokio':
        print(p['features'])
"

# Или через cargo tree
cargo tree -e features | grep tokio

Рекомендации для библиотечных крейтов

[features]
default = []
async-net = ["tokio/net", "tokio/io-util"]
async-fs = ["tokio/fs"]

[dependencies]
tokio = { version = "1", optional = true, default-features = false }

Библиотека не должна принуждать пользователей включать features, которые им не нужны. Объявляйте Tokio как опциональную зависимость и прокидывайте features через собственные флаги.

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

  • full в production: features = ["full"] удобен для прототипов, но тянет весь Tokio включая DNS-resolver, Unix-сокеты и signal handler — даже если приложение их не использует.
  • Cargo feature unification: если зависимость A требует tokio/net, а зависимость B требует tokio/time, итоговый бинарник включит оба — минимальный набор в Cargo.toml не защищает от транзитивных включений.
  • Размер vs скорость: opt-level = "z" уменьшает размер, но может замедлить горячие пути; измеряйте перед принятием решения.
  • lto = true замедляет сборку: LTO требует дополнительного прохода линковщика — добавьте только в profile.release, не в profile.dev.
  • Скрытые зависимости через "full": некоторые крейты (например, axum) включают tokio/full транзитивно — используйте cargo tree --features для аудита реального набора.
  • panic = "abort" несовместим с некоторыми C-библиотеками: если FFI-зависимость ожидает размотку стека (unwinding), panic = "abort" приведёт к некорректному завершению.

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

  • В каких проектах Tokio (Rust) оправдан, а где он становится источником лишней сложности?
  • Какие production или build/runtime-риски есть у Tokio (Rust): воспроизводимость, совместимость, debugging, ресурсы или supply chain?
  • Как понять, что проблема связана именно с Tokio (Rust), а не с приложением, окружением, сетью или зависимостями?
  • Какие ошибки делают команды, когда используют Tokio (Rust) без понимания его модели выполнения или сборки?

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

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

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

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

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

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

Источники

  • https://docs.rs/tokio/1.49.0/tokio/

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

Tokiorisk-analysistechnical-depthtokio-productionTokio (Rust)