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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python8 901
  • Облачные технологии6 631
  • QA вакансии2 183
  • Android1 324
  • Инженер данных860
  • Продакт-менеджер316

Разработка

  • iOS1 240
  • Backend вакансии1 212
  • AI вакансии553
  • Fullstack вакансии503
  • Frontend вакансии428
  • Mobile вакансии28

По стеку

  • Go5 300
  • Java3 171
  • Kotlin1 128
  • Node.js1 016
  • Rust862
  • .NET676
  • PHP321
  • C++273
  • C#208

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

  • Kubernetes3 882
  • Linux-инфраструктура2 817
  • DevOps вакансии2 705
  • Terraform / IaC2 191
  • Мониторинг и Observability1 071
  • CI/CD920
  • SRE308
  • Кибербезопасность38

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

  • Аналитик данных522
  • Data Scientist435
  • Бизнес-аналитик397
  • Системный аналитик67

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

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

По регионам

  • Вакансии в США25 642
  • Вакансии в Европе10 259
  • Работа в России3 639
  • Вакансии в Канаде2 255

По формату

  • Удалённые вакансии42 339
  • Релокация в США25 642
  • Гибридная работа5 706
  • Офисная работа4 402

По уровню

  • Senior вакансии22 510
  • Middle вакансии11 429
  • Junior вакансии3 877

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

Все компании
  • Wise192 вакансии
  • Rakuten189 вакансий
  • ASML164 вакансии
  • Grab134 вакансии
  • Celonis47 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

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

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

Что такое optionals в Swift и как безопасно их разворачивать?

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

Optional — это перечисление .none/.some(T), гарантирующее обработку отсутствия значения на уровне типов. Безопасные способы разворачивания: if let, guard let, ??, optional chaining (?.), map/flatMap.

Что такое Optional в Swift

Optional — это перечисление из стандартной библиотеки Swift с двумя вариантами: .none (отсутствие значения) и .some(Wrapped) (наличие значения). Синтаксис String? является сокращением для Optional<String>. В отличие от null в Java или Kotlin, компилятор Swift требует явной обработки опционального значения до его использования.

// Объявление
var name: String? = "Alice"
var age: Int? = nil

// Под капотом это:
var name: Optional<String> = .some("Alice")
var age: Optional<Int> = .none

Способы безопасного разворачивания

1. Optional Binding (if let / guard let)

let input: String? = "100"
if let value = Int(input ?? "") {
    print("Число: \(value)")
}

func load(filename: String?) {
    guard let filename = filename else { return }
    print("Загружаем: \(filename)")
}

2. Nil-coalescing operator (??)

let username: String? = nil
print(username ?? "Гость") // "Гость"

3. Optional chaining (?.)

Возвращает nil, если любое звено цепочки равно nil, вместо краша приложения.

struct Address {
    var city: String?
}
struct User {
    var address: Address?
}

let user: User? = User(address: Address(city: "Москва"))
print(user?.address?.city ?? "Город не указан") // "Москва"

4. map и flatMap для Optional

let str: String? = "42"
let doubled = str.flatMap { Int($0) }.map { $0 * 2 }
print(doubled ?? 0) // 84

5. switch по Optional

let score: Int? = 95
switch score {
case .none:
    print("Нет данных")
case .some(let s) where s >= 90:
    print("Отлично: \(s)")
case .some(let s):
    print("Оценка: \(s)")
}

Принудительное разворачивание (!)

Оператор ! разворачивает опциональное значение напрямую. При nil приложение немедленно падает с фатальной ошибкой. Допустим только когда вы абсолютно гарантируете ненулевое значение — например, @IBOutlet после загрузки nib.

let definitelyNotNil: String! = "Точно есть"
print(definitelyNotNil) // безопасно только потому, что мы знаем значение

Implicitly Unwrapped Optionals (IUO)

Тип String! — неявно разворачиваемый опциональный. Используется для свойств, которые устанавливаются после инициализации (например, @IBOutlet). Ведёт себя как обычный Optional, но при обращении разворачивается автоматически.

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

  • Принудительное разворачивание (!) без проверки — главная причина крашей на продакшене.
  • Злоупотребление IUO (! в объявлении) скрывает потенциальные nil-краши.
  • Optional chaining возвращает опциональный тип даже от не-опциональных методов — легко получить Optional<Void> при вызове user?.save().
  • Сравнение опционального с nil через == работает, но if value != nil { value! } хуже, чем if let.
  • flatMap на Optional не то же самое, что flatMap на коллекциях — путаница при изучении функционального стиля.
  • При декодировании JSON из Codable отсутствующее поле и явный null — разные ситуации, обе дают nil в Swift, но семантически различны.
  • Вложенный опциональный тип Optional<Optional<String>> (String??) возникает случайно при использовании map и требует flatMap.

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

  • В чём разница между strong, weak и unowned ссылками?
  • Для каких задач Swift является сильным выбором, а где лучше честно выбрать другой язык?
  • В чём разница между class и struct в Swift?
  • Что такое async/await в Swift и чем он отличается от completion handlers?

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

  • Сводить «optionals в Swift и как безопасно их разворачивать» к синтаксису и не объяснять Swift Concurrency.
  • Игнорировать жизненный цикл, основной поток или момент освобождения ресурсов в сценарии swift-2.
  • Выбирать API по привычке, не проверяя состояние, ошибки, доступность и платформенные ограничения.

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

  • Формулирует точную модель для «optionals в Swift и как безопасно их разворачивать» и подтверждает ее корректным примером.
  • Умеет связать ответ с границы Objective-C, тестированием и отладкой на устройстве.
  • Называет ограничения подхода swift-2, включая производительность, память и сопровождение.

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

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

Источники

  • https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html
Следующий вопрос→В чём разница между strong, weak и unowned ссылками?

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

Swiftlanguage-runtimeMobile-Engineering

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

Swift вакансии
  • Senior Leader Kotlin Engineer (#5878)
  • Senior iOS Engineer (#5326)
  • Ведущий разработчик IOS
  • Product Manager, Advertisement Optimization Group - Merchandising and Advertisement Department (MAD)
  • EC Design Lead (Web Director) - D2C Fulfillment Section, Commerce & Marketing Company (C&M)