Swift Interview - Вопросы для собеседований. Mobile митапы и конференции.
161 subscribers
9 photos
28 links
При интервью кандидаты часто сталкиваются с вопросами, которые не встречали или разбирали поверхностно. Это касается как и сложных, так и простых тем. На канале вопросы будут систематизироваться по сложности и темам
Download Telegram
Начальный уровень. Работа с памятью.

Расскажите про работу с памятью в Swift. 

Доброго времени суток! Сегодня мы начнём разбирать вопрос, который попадается на собеседовании в не зависимости от роли, на которую вы претендуете. В этом посте разберём что необходимо знать джуну для ответа, а именно что такое reference/value type, что хранится в стеке, а что в куче, принцип работы arc, как избежать зацикливания сильных ссылок.

Value/Reference Types

Value и Reference Types — это основные концепции Swift. В Swift есть три способа объявления типа: классы, структуры и перечисления. Их можно разделить на типы значений (структуры, перечисления, базовые типы) и ссылочные типы (классы, функции, замыкания). То, как они хранятся в памяти, определяет разницу между ними:

• Value Type — каждая переменная типа значения имеет свою собственную копию данных, и операции с одной не влияют на другую. За него отвечает стэк;

• Reference Type — у нас есть ссылка, указывающая на это место в памяти. Переменные ссылочного типа могут указывать на одни и те же данные; следовательно, операции с одной переменной могут повлиять на данные, указанные другой переменной. За него отвечает куча.

ARC

Количество ссылок на один объект может увеличиваться и уменьшаться. В Swift для того чтобы отслеживать этого количество и при уменьшении его до нуля освобождать объект из памяти существует механизм ARC (Automatic Reference Counter).

Retain cycle

При подсчете ссылок может возникнуть ситуация, когда два объекта ссылаются друг на друга, что делает невозможным их высвобождение из памяти, потому что оба их счетчика ссылок (retain count) всегда будут равны единице или больше. То есть происходит ситуация зацикливания сильных ссылок (retain cycle). Для ее исправления нужно сделайте одну из ссылок weak или unowned.

• Слабая(weak) ссылка: не увеличивает счетчик ссылок. Слабые ссылки всегда объявляются как необязательные (optional) типы. Когда счетчик ссылок становится равным нулю, объект автоматически будет деаллоцирован.

• Unowned ссылки: тут точно так же, как и со слабыми ссылками. Она не увеличивает счетчик ссылок. Основное отличие в том, что это не необязательный тип. Если вы попытаетесь получить доступ к unowned свойству, которое ссылается на деинициализированный объект, вы получите ошибку времени выполнения, сравнимую с принудительной распаковкой необязательного типа с nil.

Это краткий ответ по основным пунктам, более подробно в том числе про кучу и стек по ссылке снизу 👇👇👇

#SwiftInterviewBeginner
#SwiftInterviewMemory

https://habr.com/ru/company/otus/blog/649329/
👍8🔥3
Mobius — большая техническая конференция по мобильной разработке.

🗓 Ближайшая конференция: Mobius 2022 Autumn, 9–10 ноября · Online
🗓 Offline-день + Online: 21 ноября · Москва

Темы конференции:

Работа платформ (iOS / Android) и языков программирования (Swift / Kotlin / Flutter / Java) под капотом;
Software Craftsmanship (подходы и практики в разработке мобильных приложений и работе с фреймворками);
Архитектура (архитектурные паттерны, legacy и рефакторинг, модуляризация);
Качество продукта (производительность, UI/UX, безопасность);
Тренды в мобильной разработке (SPM, open source-решения и лучшие практики)

А кроме этого — еще 41 спикер из Яндекса, Сбера, Gradle, VK, Тинькофф, Skyeng и других компаний 🔥🔥🔥

На Mobius вы сможете не только послушать выступления, но и задать вопросы спикерам, а также пообщаться с другими единомышленниками. И промокоды mobileproglib2022JRGpc, iosheads2022JRGpc дадут скидку от 20% на билеты из категории «Для частных лиц».

👉 Подробности и билеты:  mobiusconf.com
👍8
Общие вопросы

Подготовка к нетехнической части собеседования

Друзья, всем привет! Хочу поделиться радостной новостью - вчера на Хабре вышла моя первая, так сказать, вводная статья - «Подготовка к нетехнической части собеседования». В дальнейшем планирую выкладывать там важный материал, связанный напрямую с темой моего телеграмм-канала. Возможно, часть информации, необходимой для подготовки к собеседованиям, будет выкладываться там раньше, поэтому буду признателен, если подпишитесь на меня на Хабре. Заранее спасибо и хорошего дня! Ссылка на статью👇👇👇https://habr.com/ru/post/701962/

#SwiftInterviewGeneral
#SwiftInterviewBeginner
#SwiftInterviewMedium
#SwiftInterviewAdvanced
🔥81