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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python8 801
  • Облачные технологии6 644
  • QA вакансии2 164
  • Android1 318
  • Инженер данных868
  • Продакт-менеджер314

Разработка

  • iOS1 230
  • Backend вакансии1 212
  • AI вакансии548
  • Fullstack вакансии499
  • Frontend вакансии423
  • Mobile вакансии28

По стеку

  • Go5 235
  • Java3 133
  • Kotlin1 120
  • Node.js1 004
  • Rust852
  • .NET659
  • PHP319
  • C++268
  • C#207

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

  • Kubernetes3 909
  • Linux-инфраструктура2 843
  • DevOps вакансии2 677
  • Terraform / IaC2 175
  • Мониторинг и Observability1 072
  • CI/CD915
  • SRE305
  • Кибербезопасность33

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

  • Аналитик данных532
  • Data Scientist435
  • Бизнес-аналитик400
  • Системный аналитик68

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

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

По регионам

  • Вакансии в США25 825
  • Вакансии в Европе10 301
  • Работа в России3 618
  • Вакансии в Канаде2 268

По формату

  • Удалённые вакансии42 661
  • Релокация в США25 825
  • Гибридная работа5 655
  • Офисная работа4 428

По уровню

  • Senior вакансии22 630
  • Middle вакансии11 534
  • Junior вакансии3 862

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

Все компании
  • Rakuten189 вакансий
  • Wise187 вакансий
  • ASML164 вакансии
  • Grab134 вакансии
  • Celonis47 вакансий
  • Spotify37 вакансий
  • Infobip28 вакансий
  • Adyen27 вакансий
  • Monzo19 вакансий
  • Darktrace17 вакансий

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

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

В чём разница между final и const в Dart?

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

final: ссылка присваивается один раз в рантайме, объект может быть мутабелен. const: значение известно на этапе компиляции, объект полностью иммутабелен и переиспользуется (canonicalized). В Flutter const виджеты не пересоздаются при rebuild.

final: присваивается один раз в рантайме

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

void main() {
  final now = DateTime.now(); // вычисляется в рантайме
  final list = [1, 2, 3];    // ссылка неизменна, но список мутабелен

  list.add(4);   // OK — меняем содержимое
  // list = [];  // Compile error — нельзя переназначить

  print(now);    // текущее время
  print(list);   // [1, 2, 3, 4]
}

const: вычисляется на этапе компиляции

const требует, чтобы значение было известно на этапе компиляции. Это compile-time constant: значение встраивается в бинарник, объект разделяется между всеми использованиями (canonicalized), и он полностью иммутабелен.

void main() {
  const pi = 3.14159;
  const greeting = 'Hello, Dart!';
  const size = Size(100, 200); // Size должен быть const-конструктором

  // const list = [DateTime.now()]; // Compile error — DateTime.now() не compile-time

  const a = [1, 2, 3];
  const b = [1, 2, 3];
  print(identical(a, b)); // true — один объект в памяти

  // a.add(4); // Unsupported operation: Cannot add to an unmodifiable list
}

Ключевые различия

finalconst
Когда вычисляетсяРантаймКомпиляция
Мутабельность объектаОбъект может быть мутабеленОбъект полностью иммутабелен
SharingКаждый раз новый объектОдин объект для одинаковых значений
Где использоватьПоля класса, локальные переменныеМагические числа, виджеты Flutter

const в Flutter — оптимизация перерисовки

Во Flutter const виджеты создаются один раз и не пересоздаются при setState. Это главная причина, почему линтер (prefer_const_constructors) агрессивно предлагает добавить const.

class MyWidget extends StatelessWidget {
  const MyWidget({super.key}); // const конструктор

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        const Text('Static label'), // пересоздаваться не будет
        Text(DateTime.now().toString()), // пересоздаётся при rebuild
        const Padding(
          padding: EdgeInsets.all(16), // EdgeInsets.all(16) — compile-time const
          child: Icon(Icons.star),
        ),
      ],
    );
  }
}

const конструктор и поля

Чтобы класс имел const конструктор, все его поля должны быть final и инициализироваться только compile-time константами.

class Point {
  final double x;
  final double y;

  const Point(this.x, this.y);

  double get distanceFromOrigin => (x * x + y * y).sqrt();
  // Оператор может быть вычислен, но не является const
}

void main() {
  const origin = Point(0, 0);
  const p1 = Point(3, 4);
  const p2 = Point(3, 4);

  print(identical(p1, p2)); // true — один объект
}

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

  • final не защищает содержимое: final list = [] — ссылку изменить нельзя, но list.add() работает. Для иммутабельного списка нужен const или List.unmodifiable().
  • const объект нельзя изменить даже через методы: const [1,2,3].add(4) выбросит UnsupportedError в рантайме — не compile error.
  • Забытый const в Flutter: если виджет можно сделать const, но не сделали — Flutter пересоздаёт его при каждом rebuild без нужды. Линтер flutter analyze это поймает.
  • const и late несовместимы: late const — синтаксическая ошибка, потому что late по определению инициализируется в рантайме.
  • Canonicalization только для одинаковых значений: const Point(1, 2) и const Point(1, 3) — разные объекты. Sharing работает только при полном совпадении.
  • const в разных пакетах: compile-time const не переживает hot reload при изменении значения в другом пакете — нужен полный restart.

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

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

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

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

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

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

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

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

Источники

  • https://dart.dev/language

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

Dartlanguage-runtimeMobile-Engineering