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

Senior iOS (Swift)Питання на співбесіді iOS розробника

Senior · 5+ років досвіду

Співбесіда iOS-розробника перевіряє систему типів Swift, розуміння ARC і вміння міркувати про стан інтерфейсу — плюс обов'язково трапиться питання, де retain cycle ховається на видноті. Нижче — питання, які ставлять найчастіше, кожне з еталонною відповіддю. Senior: архітектуру, трейд-офи, менторство та прийняття рішень.

Спробувати — без реєстрації
Готуємо питання…

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

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

6 питань рівня Senior з відповідями

1

Як обирати між MVVM, MVC і чимось на кшталт TCA?

Відповідь

За тим, якою є складність застосунку насправді. Apple-івський MVC достатній для екрана, що показує і править одну сутність; MVVM виправданий, коли стан вʼю достатньо складний, щоб тестувати його окремо; односпрямована архітектура окупається, коли стан розділений між багатьма екранами і баги саме про його розсинхронізацію. Взяти найважче одразу — втратити швидкість на роки.

2

Як пришвидшити збірку великої iOS-кодової бази?

Відповідь

Спершу виміряти: зведення часу збірки називає файли, що домінують, і зазвичай це жменька з важким виведенням типів. Далі явні типи там, де виведення дороге, модуляризація, щоб правка перезбирала один модуль, і менше whole-module оптимізацій у налагодженні. Загальні поради без заміру зазвичай не рухають нічого.

3

Що робити з крешем, який не відтворюється?

Відповідь

Почати з частоти й групування у звіті: які версії ОС, які пристрої, яка версія застосунку і що робив користувач. Додати логування навколо підозрюваного шляху і викотити — найшвидший спосіб відтворити рідкісне — інструментувати тих, хто в нього потрапляє. Вгадати фікс і викотити не навчить нічого, якщо частота не зміниться.

4

Як проводити міграцію схеми в Core Data чи SwiftData?

Відповідь

Lightweight migration впорається з додаванням автоматично; усе, що перетворює дані, потребує mapping model і перевіреного шляху з кожної версії, яка ще в ужитку. Забувають про обмеження: користувачі перескакують версії — хтось оновлюється з релізу дворічної давнини, тому ланцюг міграцій мусить працювати з кожної, а не лише з останньої.

5

Як планувати реліз, якщо оновлення не можна навʼязати?

Відповідь

Виходячи з того, що старі версії живуть нескінченно: API лишається зворотно сумісним, фічі, що потребують змін у клієнті, вмикаються прапорцем із сервера, а все видалене має переживатися клієнтами, які й далі це кличуть. Kill switch варто завести до того релізу, якому він знадобиться. Поетапна викатка обмежує радіус помилки, якої ви ще не знайшли.

6

Як вирішувати, що тестувати в мобільному застосунку?

Відповідь

Бізнес-логіку і все, де є правило — ціни, валідація, скінченні автомати — юніт-тестами, бо вони швидкі та стабільні. Невелику кількість UI-тестів на критичні шляхи, які не мають ламатися ніколи, з прийняттям того, що вони повільні й інколи нестабільні. Перевірка, що кнопка синя, — це те, на що набори перетворюються, стаючи тягарем.

🦎

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

На співбесіді ти говориш вголос під тиском. Кем поставить ті самі питання, оцінить кожну відповідь і покаже, що саме підтягнути.

Пройти інтерв'ю Senior iOS (Swift) →
Безкоштовно · 3 інтерв'ю на місяць

Інші рівні — iOS (Swift)

Junior iOS (Swift)Middle iOS (Swift)Усі питання iOS (Swift)

Інші спеціалізації

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