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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 129
  • Облачные технологии14 088
  • QA вакансии3 457
  • Backend вакансии2 115
  • Инженер данных1 805
  • Продакт-менеджер1 262

Разработка

  • Android1 865
  • iOS1 698
  • Fullstack вакансии989
  • AI вакансии949
  • Frontend вакансии744
  • Mobile вакансии44

По стеку

  • Go8 660
  • Java6 550
  • Node.js2 020
  • .NET1 722
  • Kotlin1 619
  • Rust1 455
  • C#711
  • PHP683
  • C++572

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

  • Kubernetes7 769
  • DevOps вакансии6 056
  • Linux-инфраструктура5 493
  • Terraform / IaC4 266
  • CI/CD3 250
  • Мониторинг и Observability1 788
  • SRE567
  • Кибербезопасность453

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

  • Data Scientist1 141
  • Бизнес-аналитик927
  • Аналитик данных854
  • Системный аналитик153

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

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

По регионам

  • Вакансии в США44 281
  • Вакансии в Европе23 875
  • Вакансии в Канаде4 475
  • Работа в России3 922

По формату

  • Удалённые вакансии75 035
  • Релокация в США44 281
  • Гибридная работа12 401
  • Офисная работа7 079

По уровню

  • Senior вакансии42 679
  • Middle вакансии20 894
  • Junior вакансии6 722

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

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

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

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

В чём разница между var, dynamic и явными типами в Dart?

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

var — выведенный статический тип (фиксируется при инициализации), явный тип — статическая аннотация для документации и безопасности, dynamic отключает статическую проверку типов и переносит ошибки в рантайм.

var — выведенный статический тип

При объявлении переменной через var анализатор выводит тип из правой части присваивания. После этого тип зафиксирован и не меняется:

var name = 'Alice';    // тип: String
var count = 42;        // тип: int
var ratio = 3.14;      // тип: double
var items = <int>[];   // тип: List<int>

// name = 123;  // ОШИБКА компиляции: int != String
name = 'Bob'; // OK

// Без инициализации — тип dynamic (не рекомендуется)
var unknown;          // тип: dynamic
unknown = 'text';
unknown = 999;        // OK — dynamic разрешает любое присваивание

var, dynamic и явные типы в Dart

Dart — статически типизированный язык со звуковой системой типов. Разница между var, явным типом и dynamic фундаментальна: первые два проверяются компилятором, последний — нет.

Явные типы — документация и защита

Явная аннотация типа делает намерение очевидным, помогает IDE и защищает от случайных ошибок:

String firstName = 'Alice';
int age = 30;
List<String> tags = ['dart', 'flutter'];
Map<String, int> scores = {'math': 95, 'science': 88};

// Nullable — явно указывает, что значение может отсутствовать
String? middleName = null;
middleName = 'Marie';

// Параметры функций: всегда явные типы
String greet(String name, {int repeat = 1}) {
    return List.filled(repeat, 'Hello, $name!').join(' ');
}

void main() {
    print(greet('Dart', repeat: 2));
    // Hello, Dart! Hello, Dart!
}

dynamic — отключение статической проверки

dynamic говорит компилятору: «не проверяй обращения к этой переменной». Все проверки перемещаются в рантайм. Это сближает Dart с динамическими языками и открывает путь к NoSuchMethodError:

dynamic value = 'hello';
print(value.length);    // 5 — OK в рантайме

value = 42;
print(value.length);    // RUNTIME ERROR: NoSuchMethodError
                        // int не имеет .length

// dynamic принимает любые вызовы без ошибки компиляции
dynamic x = getSomethingFromJson();
print(x.nonExistentMethod()); // компилируется, падает в рантайме

Object getSomethingFromJson() => 'raw data';

Object vs dynamic

Частая путаница: Object — это тоже базовый тип для всего, но он статически типизирован. Чтобы вызвать метод, нужен каст или проверка:

Object obj = 'hello';
// print(obj.length); // ОШИБКА КОМПИЛЯЦИИ — Object не имеет .length
if (obj is String) {
    print(obj.length); // OK: smart cast внутри блока is
}

dynamic dyn = 'hello';
print(dyn.length);     // компилируется и работает в рантайме

Когда что использовать

  • Явный тип: параметры функций, поля классов, публичное API — всегда явно.
  • var: локальные переменные внутри методов, когда тип очевиден из инициализатора (var user = User()).
  • dynamic: обработка произвольного JSON (Map<String, dynamic>), взаимодействие с отражением (dart:mirrors), FFI-биндинги — и больше почти нигде.
// Типичный паттерн с JSON
Map<String, dynamic> json = {
    'name': 'Alice',
    'age': 30,
    'tags': ['dart', 'flutter'],
};

String name = json['name'] as String;
int age = json['age'] as int;
List<String> tags = List<String>.from(json['tags'] as List);

print('$name, $age, $tags');
// Alice, 30, [dart, flutter]

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

  • var без инициализатора становится dynamic: var x; — это dynamic x;. Пишите явный тип или инициализируйте сразу.
  • dynamic «заражает» выражения: результат операций с dynamic тоже dynamic, и ошибки компилятора пропадают цепочкой.
  • Null Safety и dynamic: dynamic неявно включает null как допустимое значение — в отличие от non-nullable типов. Это ломает предположения об отсутствии null.
  • Нет автодополнения: IDE не предлагает методы для dynamic-переменных, что замедляет разработку и скрывает опечатки.
  • Smart cast не работает с dynamic: компилятор не отслеживает суженный тип после if (x is String) для dynamic-переменных в некоторых случаях так же надёжно, как для Object.
  • Приведение типов из JSON небезопасно: json['count'] as int бросит TypeError, если сервер вернул "1" вместо 1. Используйте (json['count'] as num).toInt() или явную конвертацию.
  • final vs var: var подразумевает изменяемость. Предпочитайте final для переменных, которые не переприсваиваются — это явная документация намерений.

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

  • Сводить «var, dynamic и явными типами в Dart» к синтаксису и не объяснять Future и Stream.
  • Игнорировать жизненный цикл, основной поток или момент освобождения ресурсов в сценарии dart-2.
  • Выбирать API по привычке, не проверяя состояние, ошибки, доступность и платформенные ограничения.

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

  • Формулирует точную модель для «var, dynamic и явными типами в Dart» и подтверждает ее корректным примером.
  • Умеет связать ответ с isolate, тестированием и отладкой на устройстве.
  • Называет ограничения подхода dart-2, включая производительность, память и сопровождение.

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

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

Источники

  • https://dart.dev/language
Следующий вопрос→Как работает null safety в Dart? В чём разница между `?`, `!` и `??`?

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

Dartlanguage-runtimeMobile-Engineering

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

  • Как работает null safety в Dart? В чём разница между ?, ! и ???
  • Что такое isolates в Dart и чем они отличаются от потоков (threads)?
  • В чём разница между Future и Stream в Dart?
  • Что такое Dart Futures и как использовать async/await?