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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 105
  • Облачные технологии14 068
  • QA вакансии3 460
  • Backend вакансии2 098
  • Инженер данных1 796
  • Продакт-менеджер1 248

Разработка

  • Android1 866
  • iOS1 699
  • Fullstack вакансии979
  • AI вакансии951
  • Frontend вакансии742
  • Mobile вакансии44

По стеку

  • Go8 651
  • Java6 544
  • Node.js2 018
  • .NET1 719
  • Kotlin1 623
  • Rust1 453
  • C#709
  • PHP683
  • C++571

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

  • Kubernetes7 761
  • DevOps вакансии6 057
  • Linux-инфраструктура5 492
  • Terraform / IaC4 259
  • CI/CD3 240
  • Мониторинг и Observability1 782
  • SRE565
  • Кибербезопасность450

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

  • Data Scientist1 127
  • Бизнес-аналитик925
  • Аналитик данных845
  • Системный аналитик154

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

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

По регионам

  • Вакансии в США43 685
  • Вакансии в Европе23 684
  • Вакансии в Канаде4 413
  • Работа в России3 909

По формату

  • Удалённые вакансии73 887
  • Релокация в США43 685
  • Гибридная работа12 392
  • Офисная работа7 088

По уровню

  • Senior вакансии42 236
  • Middle вакансии20 545
  • Junior вакансии6 653

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

Все компании
  • 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 Software Engineer, Bio - iOS
  • Middle iOS Engineer (Lviv only) (#6003)
  • Senior Calypso Support Analyst (Relocation to Sweden)
  • Staff Validation Engineer
  • iOS Developer