Logo
TGCATALOG
Каталог Подборки Блог
Swift | Вопросы собесов

Swift | Вопросы собесов

Вопросы для собеседований по Swift, тесты и задачи для iOS-разработчиков в Telegram.

Нет оценок
598
28.10.2026
598
28.10.2026
Нет оценок
598
28.10.2026
Безопасный переход через бот
О канале

Вопросы для собеседований по Swift, тесты и задачи для iOS-разработчиков в Telegram.

Подписчиков 2,142
Тематика Технологии
Язык Русский
Ссылка t.me/easy_swift

Также рекомендуем

Kekaton AI | Озвучка и клон голоса
Kekaton AI | Озвучка и клон голоса
Бот

AI бот для озвучки текста и клонирования голоса в Telegram. Создавай аудио с помощью нейросети быстро и просто.

Описание

Канал посвящен подготовке к собеседованиям по языку Swift. Здесь собраны актуальные вопросы, тесты, практические задачи и информация о вакансиях. Идеально для начинающих и опытных iOS-разработчиков, желающих освежить знания и успешно пройти интервью.

Последние посты

Swift | Вопросы собесов
Swift | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Почему Apple предпочитает использовать value type по умолчанию? Apple предпочитает value types (структуры struct) по умолчанию в Swift по нескольким причинам 🟠Безопасность многопоточного кода struct копируется при передаче, а не передается по ссылке, как class. Это снижает вероятность гонки данных (data race), когда один поток изменяет объект, а другой читает его одновременно. В многопоточной среде это делает код более безопасным. struct Point { var x: Int var y: Int } var p1 = Point(x: 1, y: 2) var p2 = p1 // p2 - это копия, изменения в p2 не затронут p1 p2.x = 10 print(p1.x) // 1 print(p2.x) // 10 🟠Производительность struct хранятся в стеке, а не в куче, что делает их создание и удаление быстрее. Куча (heap) требует управления памятью (ARC – Automatic Reference Counting), а struct — нет. class MyClass { var value = 0 } // В куче (heap), управляется ARC struct MyStruct { var value = 0 } // В стеке (stack), копируется при передаче 🟠Предсказуемость и неизменяемость struct ведут себя как примитивные типы (Int, Double), что делает код предсказуемым. Их изменение происходит локально, без неожиданных эффектов в других частях программы. class Car { var speed: Int init(speed: Int) { self.speed = speed } } var car1 = Car(speed: 60) var car2 = car1 // car2 - это ссылка на тот же объект car2.speed = 100 // Изменение затрагивает car1! print(car1.speed) // 100 (хотя мы меняли car2!) 🟠Использование в стандартной библиотеке Swift изначально построен на struct: Int, Double, Bool, Array, Dictionary, String — это структуры. Это делает язык более безопасным и производительным. var arr1 = [1, 2, 3] var arr2 = arr1 // Копия массива, а не ссылка! arr2.append(4) print(arr1) // [1, 2, 3] (не изменился!) print(arr2) // [1, 2, 3, 4] (новый массив) 🚩Когда использовать `class`? Хотя struct — предпочтительный выбор, class нужен, когда: Нужна ссылочная семантика (например, объект должен изменяться в разных местах кода). Есть сложные иерархии наследования. Требуется работа с Objective-C (NSObject). Ставь 👍 и забирай 📚 Базу знаний
Swift | Вопросы собесов
Swift | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Когда не имеет смысла вызывать hitTest у UIView? hitTest не будет вызван или вернёт nil, если вью: - Скрыта (isHidden = true) - Прозрачна (alpha
Swift | Вопросы собесов
Swift | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Чем опасна утечка памяти? Утечка памяти (memory leak) – это ситуация, когда память остаётся выделенной, но больше не используется программой и не освобождается. class Person { var pet: Pet? deinit { print("Person удалён") } } class Pet { var owner: Person? deinit { print("Pet удалён") } } var person: Person? = Person() var pet: Pet? = Pet() person?.pet = pet pet?.owner = person person = nil pet = nil 🚩Как избежать утечек памяти? 🟠Использовать `weak` или `unowned` ссылки Слабые (weak) или безвладельческие (unowned) ссылки не увеличивают счётчик ссылок, что разрывает цикл. class Person { var pet: Pet? deinit { print("Person удалён") } } class Pet { weak var owner: Person? // Слабая ссылка deinit { print("Pet удалён") } } var person: Person? = Person() var pet: Pet? = Pet() person?.pet = pet pet?.owner = person person = nil // "Person удалён" pet = nil // "Pet удалён" 🟠Использовать `unowned`, если объект всегда будет существовать unowned похож на weak, но он не может быть `nil`. class Owner { var car: Car? deinit { print("Owner удалён") } } class Car { unowned var owner: Owner // Безвладельческая ссылка init(owner: Owner) { self.owner = owner } deinit { print("Car удалён") } } var owner: Owner? = Owner() owner?.car = Car(owner: owner!) owner = nil // "Owner удалён", "Car удалён" 🟠Разрывать циклы в замыканиях (`[weak self]`) Замыкания захватывают объекты, создавая циклические ссылки. Проблема: self удерживается замыканием class ViewController { var closure: (() -> Void)? func setup() { closure = { print(self) // Удерживает self, создавая цикл! } } deinit { print("ViewController удалён") } } var vc: ViewController? = ViewController() vc?.setup() vc = nil // ❌ "ViewController" НЕ удалится 🚩Как найти утечки памяти? 🟠Использовать `Instrument – Leaks` в Xcode - Открываем Xcode > Product > Profile. - Выбираем Leaks. - Запускаем приложение и проверяем, остаются ли объекты в памяти. 🟠Проверить `deinit` Если метод deinit не вызывается – значит, объект утёк в память. class Test { deinit { print("Test удалён") } } var obj: Test? = Test() obj = nil // Должно напечатать "Test удалён" 🟠Включить `Malloc Stack Logging` - В Xcode открываем "Debug Memory Graph" (нажимая значок в Debugger). - Смотрим, какие объекты остались в памяти. Ставь 👍 и забирай 📚 Базу знаний
Swift | Вопросы собесов
Swift | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Что такое Generics (обобщённое программирование)? Generics позволяют писать обобщённый код, который может работать с разными типами, сохраняя типовую безопасность. Например, можно создать функцию, которая сортирует любые массивы, не указывая конкретный тип. Это снижает дублирование кода и делает библиотеки гибкими. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Swift | Вопросы собесов
Swift | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Есть ли в свифте множественное наследование? В Swift нет множественного наследования классов, но можно использовать множественное наследование через протоколы. 🚩Почему нет множественного наследования классов? Swift запрещает множественное наследование классов, потому что оно может привести к конфликтам и алмазной проблеме (diamond problem). Допустим, в языке с поддержкой множественного наследования у нас есть два родительских класса с одинаковым методом: class A { public: void greet() { cout
Swift | Вопросы собесов
Swift | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Какие инструменты Xcode есть? Xcode предлагает: - Интегрированную среду разработки (IDE). - Инструменты отладки: LLDB, Breakpoints, Debug View Hierarchy. - Инструменты профилирования: Instruments. - Интерфейсный редактор: Storyboard, Interface Builder. - Симуляторы, автотесты, Git-интеграция, Code Review, Device logs. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Swift | Вопросы собесов
Swift | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Какие можно выделить главные принципы ООП? Объектно-ориентированное программирование (ООП) — это парадигма, основанная на концепции "объектов", которые могут содержать данные в виде полей (часто называемых атрибутами или свойствами) и код в виде процедур (часто называемых методами). ООП фокусируется на использовании объектов для моделирования реального мира (или абстракций), облегчая разработку и поддержку сложных программ. Существует четыре основных принципа: 🟠Инкапсуляция Механизм ООП, который объединяет данные (атрибуты) и код (методы), манипулирующий этими данными, внутри одного объекта и скрывает детали реализации от внешнего использования. Это позволяет защитить внутреннее состояние объекта от прямого доступа извне и обеспечить контролируемый интерфейс для работы с этим объектом. 🟠Наследование Позволяет создавать новый класс на основе уже существующего класса, перенимая его свойства и методы. Новый класс может добавлять собственные свойства и методы или модифицировать унаследованные. Наследование обеспечивает повторное использование кода, упрощает его расширение и поддержку. 🟠Полиморфизм Способность объектов с одинаковым интерфейсом предоставлять различную реализацию для одного и того же метода. Это означает, что функция или метод могут использоваться для различных типов объектов, и каждый тип может реализовать эту функцию или метод по-своему. Полиморфизм упрощает написание общего кода для работы с объектами разных классов и обеспечивает гибкость в его использовании. 🟠Абстракция Позволяет скрыть сложность системы, представляя её ключевые аспекты и скрывая детали реализации. Это достигается за счёт использования абстрактных классов и интерфейсов, которые определяют шаблон для классов-наследников. Абстракция помогает сосредоточиться на взаимодействии объектов на более высоком уровне, игнорируя ненужные детали. Ставь 👍 и забирай 📚 Базу знаний
Swift | Вопросы собесов
Swift | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Что означают IBOutlet и IBAction, для чего они нужны, и что значат для препроцессора? - IBOutlet – указывает, что свойство связано с элементом интерфейса (Storyboard/XIB). - IBAction – указывает, что метод вызывается при взаимодействии пользователя (например, нажатие кнопки). Оба являются атрибутами (@property в Objective-C, аннотациями в Swift), но игнорируются препроцессором и служат только для связи с Interface Builder. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Swift | Вопросы собесов
Swift | Вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Какие плюсы и минусы layout'а? Каждый способ создания макетов (layout'а) в iOS-разработке имеет свои преимущества и недостатки. 🚩Interface Builder (IB) ➕Визуальное редактирование Удобный графический интерфейс для быстрой настройки и визуального просмотра изменений. ➕Интеграция с Auto Layout Простая настройка ограничений (constraints) для адаптивного интерфейса. ➕Быстрое прототипирование Возможность быстрого создания и изменения макетов без написания кода. ➖Меньшая гибкость Ограниченные возможности для создания сложных и динамических макетов. ➖Конфликты при совместной работе Трудности при слиянии изменений в storyboard или xib файлах в больших командах. ➖Производительность Более медленное время загрузки по сравнению с программными подходами. 🚩Auto Layout ➕Адаптивность Поддержка различных устройств и ориентаций экрана. ➕Мощные инструменты Возможность создания сложных и адаптивных макетов с помощью ограничений. ➕Интеграция с Interface Builder Упрощенная настройка ограничений через визуальный интерфейс. ➖Крутая кривая обучения Может быть сложно освоить, особенно для новичков. ➖Управление сложными макетами Требует тщательного планирования и может стать сложным при работе с большим количеством ограничений. 🚩Programmatic Layout ➕Полный контроль Возможность точной настройки макета с помощью кода. ➕Гибкость Легкость создания динамических и условных макетов. ➕Управление версиями Легче управлять изменениями в коде по сравнению с визуальными файлами. ➖Большая трудоемкость Требует больше времени и усилий для настройки, особенно для сложных макетов. ➖Меньшая наглядность Отсутствие визуального редактора может затруднить представление конечного результата. 🚩Stack Views ➕Упрощение макетов Легкость создания и управления сложными макетами с минимальными усилиями. ➕Интеграция с Auto Layout Автоматическое управление ограничениями для вложенных элементов. ➕Адаптивность Поддержка различных ориентаций и размеров экранов. ➖Ограниченная гибкость Менее гибкие по сравнению с чистым Auto Layout или программными подходами. ➖Поддержка Не всегда подходят для всех типов макетов, особенно для более сложных компоновок. 🚩SwiftUI ➕Декларативный синтаксис Простота и понятность кода благодаря декларативному подходу. ➕Превью в реальном времени Мгновенное обновление интерфейса при изменении кода. ➕Интеграция с Swift Современные возможности языка и тесная интеграция с экосистемой Apple. ➕Кроссплатформенность Поддержка различных платформ (iOS, macOS, watchOS, tvOS). ➖Требования к версии iOS Поддержка только iOS 13 и выше, что может ограничить использование на старых устройствах. ➖Зрелость фреймворка Некоторые функции еще находятся в стадии разработки, и могут быть ограничены возможности по сравнению с UIKit. Ставь 👍 и забирай 📚 Базу знаний
Swift | Вопросы собесов
Динамика подписчиков
+-0.8% за 30 дней
Текущие
2,142
Месяц назад
2,160
Средний рост
+-1 / день
Обновлено
2 дня назад

Отзывы о канале Swift | Вопросы собесов

Авторизуйтесь, чтобы оставить отзыв

Только зарегистрированные пользователи могут делиться своим мнением.

Пока нет отзывов

Станьте первым, кто поделится своим впечатлением об этом ресурсе!

Похожие ресурсы

Loading
Переход на светлую тему
Главная Каталог Подборки Блог Вход