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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python9 224
  • Облачные технологии6 770
  • QA вакансии2 176
  • Android1 322
  • Инженер данных940
  • Продакт-менеджер435

Разработка

  • 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++273
  • C#210

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

  • Kubernetes4 025
  • Linux-инфраструктура3 060
  • DevOps вакансии2 713
  • Terraform / IaC2 214
  • Мониторинг и Observability1 106
  • CI/CD919
  • SRE341
  • Кибербезопасность90

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

  • Аналитик данных555
  • Data Scientist513
  • Бизнес-аналитик431
  • Системный аналитик65

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

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

По регионам

  • Вакансии в США29 375
  • Вакансии в Европе11 048
  • Работа в России3 627
  • Вакансии в Канаде2 514

По формату

  • Удалённые вакансии48 640
  • Релокация в США29 375
  • Гибридная работа5 790
  • Офисная работа4 553

По уровню

  • Senior вакансии25 029
  • Middle вакансии13 245
  • Junior вакансии4 377

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

Все компании
  • Wise191 вакансия
  • Rakuten188 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Celonis48 вакансий
  • 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 iOS Engineer (#5326)
  • Product Manager, Advertisement Optimization Group - Merchandising and Advertisement Department (MAD)
  • EC Design Lead (Web Director) - D2C Fulfillment Section, Commerce & Marketing Company (C&M)
  • E-commerce Manager - D2C Fulfillment Section, Commerce & Marketing Company (C&M)
  • Android/iOS Native Application Engineer - System Development Department, System Division, Rakuten Bank, Ltd.