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++