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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python7 042
  • Облачные технологии5 085
  • QA вакансии1 814
  • Android1 199
  • Инженер данных831
  • Продакт-менеджер339

Разработка

  • iOS1 135
  • Backend вакансии1 131
  • Fullstack вакансии475
  • AI вакансии458
  • Frontend вакансии404
  • Mobile вакансии27

По стеку

  • Go4 093
  • Java2 435
  • Kotlin990
  • Node.js827
  • Rust665
  • .NET525
  • PHP282
  • C++223
  • C#199

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

  • Kubernetes2 931
  • Linux-инфраструктура2 312
  • DevOps вакансии2 110
  • Terraform / IaC1 714
  • CI/CD872
  • Мониторинг и Observability825
  • SRE253
  • Кибербезопасность50

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

  • Аналитик данных497
  • Data Scientist463
  • Бизнес-аналитик374
  • Системный аналитик54

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

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

По регионам

  • Вакансии в США25 531
  • Вакансии в Европе9 792
  • Работа в России3 193
  • Вакансии в Канаде2 236

По формату

  • Удалённые вакансии43 578
  • Релокация в США25 531
  • Гибридная работа4 289
  • Офисная работа3 340

По уровню

  • Senior вакансии21 650
  • Middle вакансии12 211
  • Junior вакансии3 886

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

Все компании
  • Rakuten188 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Wise125 вакансий
  • Celonis28 вакансий
  • Infobip28 вакансий
  • Spotify24 вакансии
  • Adyen17 вакансий
  • Darktrace17 вакансий
  • Monzo13 вакансий

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

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

В чём разница между let и var в Swift?

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

let объявляет константу — после первого присваивания изменить нельзя; var объявляет переменную. Для value types let полностью замораживает содержимое, для reference types — фиксирует лишь ссылку.

let и var в Swift: константы и переменные

let объявляет неизменяемое значение (константу): после первого присваивания изменить его нельзя. var объявляет изменяемую переменную, значение которой можно перезаписывать сколько угодно раз.

let maxRetries = 3
// maxRetries = 5  // ошибка компиляции: cannot assign to value: 'maxRetries' is a 'let' constant

var currentRetry = 0
currentRetry += 1  // OK

Семантика для value types и reference types

Для value types (struct, enum, tuple) let полностью замораживает содержимое: нельзя мутировать ни поля, ни вызывать mutating методы.

struct Point {
    var x: Double
    var y: Double
    mutating func move(dx: Double, dy: Double) {
        x += dx; y += dy
    }
}

let fixed = Point(x: 0, y: 0)
// fixed.x = 1        // ошибка
// fixed.move(dx: 1, dy: 0)  // ошибка: cannot use mutating member on immutable value

var movable = Point(x: 0, y: 0)
movable.move(dx: 1, dy: 0)  // OK

Для reference types (class) let фиксирует ссылку, но не сам объект. Поля объекта по-прежнему можно менять через методы, если сам класс это позволяет.

class Counter {
    var count = 0
    func increment() { count += 1 }
}

let counter = Counter()
counter.increment()  // OK — ссылка не меняется, только поле
// counter = Counter()  // ошибка — нельзя переназначить ссылку

Отложенная инициализация

let разрешает однократную отложенную инициализацию: можно объявить константу без начального значения и присвоить его позже — но ровно один раз, до первого чтения.

let result: Int
if Bool.random() {
    result = 1
} else {
    result = 2
}
print(result)  // всегда инициализировано

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

Компилятор Swift активно использует let для оптимизаций: исключает ненужные копии, применяет inlining, убирает проверки изменяемости. Предпочитайте let по умолчанию и переходите на var только при необходимости.

let в замыканиях

В замыканиях let-значения захватываются по значению (для value types) или по ссылке (для reference types). var тоже захватывается по ссылке — изменения внутри замыкания влияют на оригинал.

var x = 10
let closure = { x += 1 }  // захват x по ссылке
closure()
print(x)  // 11

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

  • let на классе не делает объект иммутабельным — только ссылку. Разработчики часто ошибочно считают, что let counter = Counter() защищает поля counter от изменений.
  • mutating в протоколах — если протокол требует mutating func, а переменная объявлена через let, вызов невозможен даже если тип реализует протокол.
  • Захват var в замыкании — замыкание захватывает ящик переменной, а не копию; это классический источник bagов при работе с циклами и async-кодом.
  • Computed properties не зависят от let/var — вы можете определить вычисляемое свойство в struct с let-хранимыми полями; путаница возникает, когда новичок думает, что var нужен для computed.
  • Отложенная инициализация let строго однократна — попытка присвоить второе значение — ошибка компиляции, даже если первое ещё не было прочитано.
  • Optional let — let x: Int? = nil законно; значение nil не нарушает правило константы, но может вызвать путаницу при unwrap-ах.

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

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

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

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

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

  • Формулирует точную модель для «let и var в Swift» и подтверждает ее корректным примером.
  • Умеет связать ответ с Swift Concurrency, тестированием и отладкой на устройстве.
  • Называет ограничения подхода swift-1, включая производительность, память и сопровождение.

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

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

Источники

  • https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html
←Предыдущий вопросЧто такое ключевое слово `some` и opaque return types в Swift?Следующий вопрос→Что такое `@MainActor` в Swift и когда его следует использовать?

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

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.