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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python9 224
  • Облачные технологии4 076
  • QA вакансии1 588
  • Android1 322
  • Инженер данных805
  • Продакт-менеджер368

Разработка

  • Backend вакансии1 317
  • iOS1 239
  • AI вакансии608
  • Fullstack вакансии523
  • Frontend вакансии456
  • Mobile вакансии28

По стеку

  • Go5 445
  • Java3 175
  • Kotlin1 119
  • Node.js1 026
  • Rust949
  • .NET666
  • PHP311
  • C#210
  • C++204

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

  • DevOps вакансии2 713
  • Kubernetes2 308
  • Linux-инфраструктура1 890
  • Terraform / IaC1 406
  • CI/CD842
  • Мониторинг и Observability645
  • SRE226
  • Кибербезопасность84

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

  • Аналитик данных483
  • Data Scientist469
  • Бизнес-аналитик349
  • Системный аналитик48

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

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

По регионам

  • Вакансии в США24 791
  • Вакансии в Европе9 439
  • Работа в России2 924
  • Вакансии в Канаде2 178

По формату

  • Удалённые вакансии43 505
  • Релокация в США24 791
  • Гибридная работа3 370
  • Офисная работа2 525

По уровню

  • Senior вакансии20 898
  • Middle вакансии12 438
  • Junior вакансии3 864

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

Все компании
  • Wise191 вакансия
  • Rakuten188 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Celonis48 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

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

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

Расскажите о случае, когда особенности Dart повлияли на архитектурное решение, производительность или сопровождение проекта.

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

Null safety в Dart 2.12 потребовал полного аудита моделей данных и изменил архитектуру парсинга API-ответов: вместо nullable-полей везде появились factory-конструкторы с явной валидацией на границе сети.

Решение: граница на уровне fromJson

Мы ввели правило: всё, что приходит из сети, разбирается через factory-конструктор с явными проверками. Nullable поля DTO преобразуются в non-nullable доменные объекты через fallback-значения или Result-тип.

// DTO — отражает реальный JSON, включая nullable
class ArticleDto {
  final String id;
  final String? imageUrl;    // API может не вернуть
  final String? authorName;
  final int viewCount;

  const ArticleDto({
    required this.id,
    this.imageUrl,
    this.authorName,
    required this.viewCount,
  });

  factory ArticleDto.fromJson(Map<String, dynamic> json) {
    return ArticleDto(
      id: json['id'] as String,
      imageUrl: json['image_url'] as String?,
      authorName: json['author']?['name'] as String?,
      viewCount: (json['views'] as num?)?.toInt() ?? 0,
    );
  }
}

// Domain model — non-nullable, UI не знает о null
class Article {
  final String id;
  final Uri? imageUrl;        // Uri? — семантически nullable
  final String author;
  final int viewCount;

  const Article({
    required this.id,
    this.imageUrl,
    required this.author,
    required this.viewCount,
  });

  factory Article.fromDto(ArticleDto dto) {
    return Article(
      id: dto.id,
      imageUrl: dto.imageUrl != null
          ? Uri.tryParse(dto.imageUrl!)
          : null,
      author: dto.authorName ?? 'Unknown',
      viewCount: dto.viewCount,
    );
  }
}

Как null safety изменил архитектуру

В одном Flutter-проекте (агрегатор новостей) мы мигрировали на Dart null safety (2.12) через полгода после релиза. До миграции модели данных выглядели просто: все поля String или int, а null молча проглатывался логикой. После включения анализатора выяснилось: 40% полей API реально могут приходить как null, и UI просто рендерил пустые строки вместо падений.

Влияние на производительность

После миграции мы запустили flutter analyze в CI как блокирующий шаг. Это выявило места с неоптимальным использованием late: переменные, объявленные late final, инициализировались в initState() дважды из-за горячей перезагрузки в debug-режиме. Дополнительно Dart DevTools → Performance показал: устранение лишних проверок != null внутри build-методов сократило количество перестроек виджетов на ~15%.

Сопровождение

Команда добавила кодогенерацию через json_serializable + freezed для всех DTO, чтобы не писать fromJson вручную:

# pubspec.yaml
dependencies:
  freezed_annotation: ^2.4.1
  json_annotation: ^4.8.1
dev_dependencies:
  build_runner: ^2.4.6
  freezed: ^2.4.5
  json_serializable: ^6.7.1

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

  • late без инициализации бросает LateInitializationError в runtime — хуже, чем явный nullable, потому что статический анализ молчит.
  • !-оператор (null assertion) снимает ответственность с компилятора: один лишний ! — и снова NullPointerException, только уже осознанный.
  • Смешанный граф зависимостей: legacy-пакеты без null safety запускаются в unsound-режиме, что отключает часть гарантий анализатора для всего приложения.
  • json_serializable генерирует fromJson с жёсткими cast'ами — нестандартные типы в JSON (например, int вместо String для id) вызывают TypeError в runtime.
  • freezed-классы с copyWith не позволяют явно выставить поле в null если тип non-nullable — нужен паттерн Optional.
  • Hot reload в Flutter сбрасывает late final только в debug — в release поведение другое, что приводит к трудновоспроизводимым багам.

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

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

Что портит ответ

  • Выдумывать опыт или говорить слишком общими фразами
  • Не объяснять свою личную роль в работе с Dart
  • Не показывать результат, метрики или извлечённые уроки

Что слушает интервьюер

  • Может подготовить честный пример использования Dart
  • Показывает свою роль, решения и результат
  • Умеет рефлексировать над trade-offs и уроками

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

Проверить себя по теме Dart →
←Предыдущий вопросЧто такое `cascade operator (..)` в Dart и как он работает?Следующий вопрос→Что такое `typedef` в Dart и когда они полезны?

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

Dartexperience-storytellingtechnical-communicationtechnology-selectiontrade-off-analysis