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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 108
  • Облачные технологии14 081
  • QA вакансии3 459
  • Backend вакансии2 114
  • Инженер данных1 804
  • Продакт-менеджер1 264

Разработка

  • Android1 866
  • iOS1 699
  • Fullstack вакансии986
  • AI вакансии955
  • Frontend вакансии745
  • Mobile вакансии44

По стеку

  • Go8 652
  • Java6 545
  • Node.js2 019
  • .NET1 721
  • Kotlin1 623
  • Rust1 453
  • C#710
  • PHP683
  • C++571

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

  • Kubernetes7 766
  • DevOps вакансии6 060
  • Linux-инфраструктура5 491
  • Terraform / IaC4 262
  • CI/CD3 241
  • Мониторинг и Observability1 787
  • SRE567
  • Кибербезопасность453

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

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

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

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

По регионам

  • Вакансии в США44 321
  • Вакансии в Европе23 862
  • Вакансии в Канаде4 479
  • Работа в России3 913

По формату

  • Удалённые вакансии75 064
  • Релокация в США44 314
  • Гибридная работа12 393
  • Офисная работа7 089

По уровню

  • Senior вакансии42 691
  • Middle вакансии20 905
  • Junior вакансии6 727

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

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab138 вакансий
  • Celonis39 вакансий
  • Spotify36 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 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 Engineering Manager, Co-Intelligent Coaching
  • Senior Software Engineer (iOS) – Digital Products
  • Senior Software Engineer, Bio - iOS
  • Middle iOS Engineer (Lviv only) (#6003)
  • Senior Calypso Support Analyst (Relocation to Sweden)