P
prepair.app
Пройти интервью →
EnglishУкраїнськаРусскийDeutsch
🍏

Junior iOS (Swift)Вопросы на собеседовании iOS разработчика

Junior · без опыта / до 1 года

Собеседование iOS-разработчика проверяет систему типов Swift, понимание ARC и умение рассуждать о состоянии интерфейса — плюс обязательно найдётся вопрос, где retain cycle прячется на виду. Ниже — вопросы, которые задают чаще всего, каждый с эталонным ответом. Junior: базовая теория, определения и простые практические кейсы.

Попробовать — без регистрации
Готовим вопрос…

Темы для подготовки

Swift и опционалы
ARC и управление памятью
SwiftUI и UIKit
Конкурентность: async/await, Combine, GCD
Архитектура и состояние
Хранение данных и сеть

7 вопросов уровня Junior с ответами

1

Чем struct отличается от class в Swift?

Ответ

Struct — значимый тип: присваивание копирует. Class — ссылочный: присваивание разделяет. Стандартная библиотека Swift построена на структурах, и рекомендация та же — начинать со struct и брать class, когда нужны идентичность, наследование или deinit.

2

Что такое optional и чего стоит принудительное извлечение?

Ответ

Optional — тип, который может содержать значение или nil, и компилятор заставляет обработать оба случая. Восклицательный знак говорит «я уверен» — и роняет приложение, если вы ошиблись. if let, guard let и ?? выражают то же намерение, не ставя на кон процесс.

3

Чем `weak` отличается от `unowned`?

Ответ

Обе не создают сильную ссылку, то есть не удерживают объект. weak становится nil, когда объект уходит, и потому обязана быть optional; unowned не становится, и обращение после исчезновения объекта роняет приложение. weak берут, когда другой объект законно может исчезнуть первым, unowned — только когда не может.

4

Что такое цикл удержания и где он обычно возникает?

Ответ

Два объекта держат сильные ссылки друг на друга, счётчик ни у одного не доходит до нуля, и ни один не освобождается. На практике это замыкания, захватывающие self — обработчик завершения, сохранённый в том же объекте. Стандартное лечение — [weak self] в списке захвата.

5

Чем `frame` отличается от `bounds`?

Ответ

frame — прямоугольник вью в координатах родителя; bounds — собственные координаты, начало обычно в нуле. Поверните или трансформируйте вью, и frame станет описанным прямоугольником, а bounds не изменится. Рисуют по bounds, размещают по frame.

6

Каков жизненный цикл вью-контроллера?

Ответ

viewDidLoad один раз при создании вью, затем viewWillAppear и viewDidAppear при каждом показе, и парные Disappear на выходе. Разовая настройка идёт в viewDidLoad; всё, что должно обновляться при каждом показе, — в viewWillAppear. Сетевой запрос в viewDidLoad — причина, по которой экран показывает старые данные при втором заходе.

7

Что такое ARC и чего он не умеет?

Ответ

Automatic Reference Counting расставляет retain и release на этапе компиляции и освобождает объект при нуле — детерминированно, в отличие от сборщика мусора. Не умеет он разрывать цикл: два объекта, ссылающиеся друг на друга, до нуля не дойдут, ради чего и существуют weak и unowned.

🦎

Прочитать ответы недостаточно

На собеседовании ты говоришь вслух под давлением. Кем задаст эти же вопросы, оценит каждый ответ и покажет, что именно подтянуть.

Пройти интервью Junior iOS (Swift) →
Бесплатно · 3 интервью в месяц

Другие уровни — iOS (Swift)

Middle iOS (Swift)Senior iOS (Swift)Все вопросы iOS (Swift)

Другие специализации

🔍Junior QA Manual🤖Junior QA AutomationJunior Java Backend🐍Junior Python Backend🐘Junior PHP Backend🦫Junior Go Backend🟢Junior Node.js Backend💎Junior Ruby on Rails🟣Junior .NET Backend Developer🔷Junior C++