Logo
TGCATALOG
Catalog Collections Blog
Swift | Interview Questions

Swift | Interview Questions

Swift interview questions, tests and tasks for iOS developers in Telegram.

No ratings
598
28.10.2026
598
28.10.2026
No ratings
598
28.10.2026
Safe redirect via bot
О канале

Swift interview questions, tests and tasks for iOS developers in Telegram.

Подписчиков 2,142
Тематика Technology
Язык English
Ссылка t.me/easy_swift

We also recommend

Kekaton AI | Voiceover and voice clone
Kekaton AI | Voiceover and voice clone
Bot

AI bot for text-to-speech and voice cloning in Telegram. Create audio using neural network quickly and easily.

Description

The channel is dedicated to preparing for Swift language interviews. It contains current questions, tests, practical tasks and vacancy information. Ideal for beginner and experienced iOS developers who want to refresh their knowledge and successfully pass interviews.

Latest posts

Swift | Interview Questions
Swift | Interview Questions
🔒Открыть пост
и посмотреть медиа
🤔 В чем особенность верстки каждой ячейки на фрейме? При верстке UITableViewCell через фреймы приходится вручную рассчитывать все размеры и положения элементов. Это быстрее по производительности, но требует точности и большой ответственности при адаптации под разные экраны. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Swift | Interview Questions
Swift | Interview Questions
🔒Открыть пост
и посмотреть медиа
🤔 Расскажи про структуры Структуры (struct) – это один из основных типов данных в Swift. Они значимые (value type), то есть при передаче копируются, а не передаются по ссылке. 🚩Главные особенности `struct` Value type – при передаче копируется (в отличие от классов) Нет ARC (автоматического подсчета ссылок) – производительность выше Могут иметь методы, свойства, инициализаторы Работают с протоколами (protocol-oriented programming) Не поддерживают наследование 🚩Пример структуры struct Car { var model: String var year: Int func description() -> String { return "\(model) – \(year)" } } let car1 = Car(model: "Tesla", year: 2023) var car2 = car1 // Создается копия print(car1.description()) // Tesla – 2023 print(car2.description()) // Tesla – 2023 car2.year = 2024 // Изменяем car2, но car1 остается прежним print(car1.year) // 2023 print(car2.year) // 2024 🚩Мутируемые структуры (`mutating`) По умолчанию методы не могут изменять свойства структуры. Чтобы изменить их внутри метода, нужно использовать mutating struct Counter { var count = 0 mutating func increment() { count += 1 } } var counter = Counter() counter.increment() print(counter.count) // 1 Ставь 👍 и забирай 📚 Базу знаний
Swift | Interview Questions
Swift | Interview Questions
🔒Открыть пост
и посмотреть медиа
🤔 Какие минусы ООП? – Сложность при большом количестве классов, – Избыточное наследование, – Низкая гибкость при изменении структуры, – Возможные циклы зависимостей, – Переусложнение при решении простых задач. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Swift | Interview Questions
Swift | Interview Questions
🔒Открыть пост
и посмотреть медиа
🤔 Что означает принцип open closed? Принцип OCP (Open-Closed Principle) гласит: "Программные сущности должны быть открыты для расширения, но закрыты для модификации." Это значит, что код должен позволять добавлять новый функционал без изменения существующего кода. 🚩Почему это важно? Меньше багов – изменения не ломают старый код. Лучшая поддержка – новый функционал добавляется без переписывания старого. Гибкость – можно расширять систему без изменения её базовой логики. 🚩Пример нарушения принципа OCP Допустим, у нас есть класс, который рисует фигуры: class ShapeDrawer { func draw(shape: String) { if shape == "circle" { print("Рисуем круг") } else if shape == "square" { print("Рисуем квадрат") } } } 🚩Как исправить? Используем OCP! Лучше использовать наследование или протоколы, чтобы расширять функциональность, не меняя существующий код: protocol Drawable { func draw() } class Circle: Drawable { func draw() { print("Рисуем круг") } } class Square: Drawable { func draw() { print("Рисуем квадрат") } } class ShapeDrawer { func draw(shape: Drawable) { shape.draw() } } Ставь 👍 и забирай 📚 Базу знаний
Swift | Interview Questions
Swift | Interview Questions
🔒Открыть пост
и посмотреть медиа
🤔 Если нужен максимальный контроль над потоками, что можно использовать? Для максимального контроля используют POSIX-потоки (pthread), OperationQueue с кастомной реализацией или GCD с DispatchWorkItem и приоритетами. Также можно использовать NSLock, semaphore и dispatch group. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Swift | Interview Questions
Swift | Interview Questions
🔒Открыть пост
и посмотреть медиа
🤔 В каких моментах жизненного цикла лучше поместить подписку? Подписку на уведомления (NotificationCenter), KVO или Combine в жизненном цикле UIViewController лучше размещать в методах, где гарантируется её актуальность и корректное удаление. 🟠Подписка в `viewDidLoad()` Подписка на события обычно происходит в `viewDidLoad()`, так как этот метод вызывается один раз при создании контроллера. override func viewDidLoad() { super.viewDidLoad() NotificationCenter.default.addObserver( self, selector: #selector(handleNotification), name: .someNotification, object: nil ) } @objc func handleNotification(_ notification: Notification) { print("Получено уведомление") } 🟠Подписка в `viewWillAppear()` – если уведомления нужны только при отображении экрана Если подписка должна работать только когда экран на экране, используем viewWillAppear(). var cancellable: AnyCancellable? override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) cancellable = NotificationCenter.default.publisher(for: .someNotification) .sink { _ in print("Событие получено") } } 🟠`viewWillDisappear()` – отписка от событий Когда контроллер скрывается, подписки можно удалить, чтобы избежать ненужных вызовов. Удаление подписки на NotificationCenter: override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) NotificationCenter.default.removeObserver(self, name: .someNotification, object: nil) } Удаление Combine подписки (cancellable) override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) cancellable?.cancel() cancellable = nil } 🟠`deinit` – отписка, если подписка создаётся в `viewDidLoad()` Если подписка работает на протяжении всего жизненного цикла контроллера, её можно удалить в `deinit`. deinit { NotificationCenter.default.removeObserver(self) } Ставь 👍 и забирай 📚 Базу знаний
Swift | Interview Questions
Swift | Interview Questions
🔒Открыть пост
и посмотреть медиа
🤔 Почему порядок ключей будет сохраняться между мутациями в словаре? Начиная с Swift 4, стандартный Dictionary сохраняет порядок вставки ключей. Даже при изменении значений или добавлении новых элементов порядок сохраняется, пока явным образом не удаляются ключи или не происходит массовая перераспределённая перестройка. Это стало возможным благодаря обновлённой реализации хеш-таблицы внутри Dictionary. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Swift | Interview Questions
Swift | Interview Questions
🔒Открыть пост
и посмотреть медиа
🤔 Какие паттерны знаешь? Паттерны проектирования – это готовые решения частых задач, улучшающие структуру кода, его поддержку и масштабируемость. 🚩Порождающие паттерны (Creational) Помогают упростить создание объектов и сделать его гибким. Определяет интерфейс для создания объекта, но поручает подклассам выбрать его тип. protocol Button { func press() } class iOSButton: Button { func press() { print("iOS button pressed") } } class AndroidButton: Button { func press() { print("Android button pressed") } } class ButtonFactory { static func createButton(for os: String) -> Button { return os == "iOS" ? iOSButton() : AndroidButton() } } let button = ButtonFactory.createButton(for: "iOS") button.press() // "iOS button pressed" 🟠Одиночка (Singleton) Гарантирует, что у класса будет только один экземпляр. class Database { static let shared = Database() // Единственный экземпляр private init() { } func query() { print("Запрос в базу данных") } } Database.shared.query() 🟠Строитель (Builder) Позволяет пошагово создавать сложные объекты. class Burger { var cheese = false var bacon = false } class BurgerBuilder { private var burger = Burger() func addCheese() -> Self { burger.cheese = true return self } func addBacon() -> Self { burger.bacon = true return self } func build() -> Burger { return burger } } let myBurger = BurgerBuilder().addCheese().addBacon().build() print(myBurger.cheese) // true print(myBurger.bacon) // true 🚩Структурные паттерны (Structural) Определяют удобные способы связи между объектами. 🟠Адаптер (Adapter) Позволяет совместить несовместимые интерфейсы. protocol EuropeanSocket { func provide220V() } class EuropeanPlug: EuropeanSocket { func provide220V() { print("220V подано") } } class USPlug { func provide110V() { print("110V подано") } } // Адаптер для американской вилки class USAdapter: EuropeanSocket { private let usPlug: USPlug init(usPlug: USPlug) { self.usPlug = usPlug } func provide220V() { usPlug.provide110V() print("Адаптация до 220V") } } let adapter = USAdapter(usPlug: USPlug()) adapter.provide220V() // "110V подано" // "Адаптация до 220V" 🟠Декоратор (Decorator) Динамически добавляет объекту новое поведение. protocol Coffee { func cost() -> Int } class SimpleCoffee: Coffee { func cost() -> Int { return 100 } } // Декоратор "Молоко" class MilkDecorator: Coffee { private let coffee: Coffee init(_ coffee: Coffee) { self.coffee = coffee } func cost() -> Int { return coffee.cost() + 30 } } let coffee = MilkDecorator(SimpleCoffee()) print(coffee.cost()) // 130 Ставь 👍 и забирай 📚 Базу знаний
Swift | Interview Questions
Swift | Interview Questions
🔒Открыть пост
и посмотреть медиа
🤔 Что такое method dispatch? Method dispatch — это механизм, определяющий, какая реализация метода будет вызвана во время исполнения. Бывает: - Static dispatch — выбор метода происходит на этапе компиляции (быстрее). - Dynamic dispatch — через таблицу виртуальных функций (vtable), работает с наследованием, позволяет переопределение. - Message dispatch — как в Objective-C, через objc_msgSend. Swift использует комбинацию подходов в зависимости от контекста (классы, final, протоколы). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Swift | Interview Questions
FAQ

Open Swift | Interview Questions in Telegram and press the Start button. No separate registration is required.

Yes. The service is designed to be straightforward: open the resource, follow the on-screen instructions and start using it.

No. You can use Swift | Interview Questions directly in Telegram unless the resource description says otherwise.

Access depends on the resource. Check the current information in Telegram after opening Swift | Interview Questions.

The exact features depend on the resource. Open Swift | Interview Questions to see its current functions, content and access conditions.
Subscriber dynamics
+-0.8% last 30 days
Current
2,142
Month ago
2,160
Average growth
+-1 / day
Updated
2 days ago

Reviews for channel Swift | Interview Questions

Log in to leave a review

Only registered users can share their opinion.

No reviews yet

Be the first to share your impression of this resource!

Similar resources

Loading
Switch to Light Theme
Home Catalog Collections Blog Login