Swift | Вопросы собесов
Відкрити в Telegram
Cайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+bn3i_aLL0-A2ZGMy Задачи t.me/+JQkI4zSOEXtkYzg6 Вакансии t.me/+3o9-Ytdiv_E5OGIy
Показати більше2 217
Підписники
+124 години
+47 днів
-330 день
Триває завантаження даних...
Схожі канали
Хмара тегів
Вхідні та вихідні згадування
---
---
---
---
---
---
Залучення підписників
червень '26
червень '26
+19
в 0 каналах
травень '26
+21
в 0 каналах
Get PRO
квітень '26
+23
в 0 каналах
Get PRO
березень '26
+35
в 0 каналах
Get PRO
лютий '26
+45
в 1 каналах
Get PRO
січень '26
+58
в 0 каналах
Get PRO
грудень '25
+28
в 0 каналах
Get PRO
листопад '25
+156
в 1 каналах
Get PRO
жовтень '25
+26
в 0 каналах
Get PRO
вересень '25
+41
в 0 каналах
Get PRO
серпень '25
+38
в 0 каналах
Get PRO
липень '25
+27
в 0 каналах
Get PRO
червень '25
+34
в 0 каналах
Get PRO
травень '25
+50
в 0 каналах
Get PRO
квітень '25
+87
в 0 каналах
Get PRO
березень '25
+151
в 2 каналах
Get PRO
лютий '25
+123
в 1 каналах
Get PRO
січень '25
+127
в 53 каналах
Get PRO
грудень '24
+55
в 1 каналах
Get PRO
листопад '24
+75
в 0 каналах
Get PRO
жовтень '24
+193
в 42 каналах
Get PRO
вересень '24
+348
в 251 каналах
Get PRO
серпень '24
+98
в 0 каналах
Get PRO
липень '24
+140
в 54 каналах
Get PRO
червень '24
+411
в 244 каналах
Get PRO
травень '24
+646
в 191 каналах
Get PRO
квітень '24
+353
в 23 каналах
| Дата | Залучення підписників | Згадування | Канали | |
| 16 червня | 0 | |||
| 15 червня | +2 | |||
| 14 червня | +1 | |||
| 13 червня | +3 | |||
| 12 червня | +1 | |||
| 11 червня | +1 | |||
| 10 червня | +1 | |||
| 09 червня | +1 | |||
| 08 червня | +2 | |||
| 07 червня | 0 | |||
| 06 червня | +1 | |||
| 05 червня | 0 | |||
| 04 червня | +2 | |||
| 03 червня | 0 | |||
| 02 червня | +3 | |||
| 01 червня | +1 |
Дописи каналу
🤔 Что такое синхронная задача?
Синхронная задача в программировании выполняется последовательно в текущем потоке, блокируя его до завершения задачи. Это контрастирует с асинхронной задачей, которая позволяет выполнение другого кода, пока задача обрабатывается.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
| 2 | 🤔 Какие можно выделить главные принципы ООП?
Объектно-ориентированное программирование (ООП) — это парадигма, основанная на концепции "объектов", которые могут содержать данные в виде полей (часто называемых атрибутами или свойствами) и код в виде процедур (часто называемых методами). ООП фокусируется на использовании объектов для моделирования реального мира (или абстракций), облегчая разработку и поддержку сложных программ. Существует четыре основных принципа:
🟠Инкапсуляция
Механизм ООП, который объединяет данные (атрибуты) и код (методы), манипулирующий этими данными, внутри одного объекта и скрывает детали реализации от внешнего использования. Это позволяет защитить внутреннее состояние объекта от прямого доступа извне и обеспечить контролируемый интерфейс для работы с этим объектом.
🟠Наследование
Позволяет создавать новый класс на основе уже существующего класса, перенимая его свойства и методы. Новый класс может добавлять собственные свойства и методы или модифицировать унаследованные. Наследование обеспечивает повторное использование кода, упрощает его расширение и поддержку.
🟠Полиморфизм
Способность объектов с одинаковым интерфейсом предоставлять различную реализацию для одного и того же метода. Это означает, что функция или метод могут использоваться для различных типов объектов, и каждый тип может реализовать эту функцию или метод по-своему. Полиморфизм упрощает написание общего кода для работы с объектами разных классов и обеспечивает гибкость в его использовании.
🟠Абстракция
Позволяет скрыть сложность системы, представляя её ключевые аспекты и скрывая детали реализации. Это достигается за счёт использования абстрактных классов и интерфейсов, которые определяют шаблон для классов-наследников. Абстракция помогает сосредоточиться на взаимодействии объектов на более высоком уровне, игнорируя ненужные детали.
Ставь 👍 и забирай 📚 Базу знаний | 174 |
| 3 | 🤔 Как очищается стек?
Стек очищается автоматически, когда завершается функция. Как только стековая рамка функции выходит за пределы контекста вызова — вся память, связанная с ней, сбрасывается. Это обеспечивает высокую производительность, но требует строгой структуры вызовов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 219 |
| 4 | 🤔 Зачем нужны свойства "Content Hugging Priority"?
Свойства "Content Hugging Priority" и "Content Compression Resistance Priority" играют ключевую роль в системе Auto Layout. Эти свойства помогают определить, как вьюшки (views) должны быть отформатированы и как они реагируют на изменения в доступном пространстве в интерфейсе пользователя. Рассмотрим подробнее, что означает каждое из этих свойств и как они используются в разработке интерфейсов.
🚩Content Hugging Priority
Определяет, насколько сильно вьюшка должна "обнимать" своё содержимое. Это свойство указывает на желательность вьюшки быть как можно ближе к своим внутренним размерам, основанным на своем содержимом.
🚩Content Compression Resistance Priority
Определяет, насколько сильно вьюшка должна противостоять сжатию размеров меньше, чем размеры её содержимого.
Ставь 👍 и забирай 📚 Базу знаний | 230 |
| 5 | 🤔 Что такое поток безопасности (thread-safety)?
Потокобезопасность — это свойство кода/объекта, означающее, что он может использоваться из разных потоков одновременно без ошибок и гонок данных.
Потокобезопасный код:
- Не вызывает крашей.
- Не вызывает конфликтов доступа.
- Защищает внутреннее состояние при параллельном использовании.
В Swift thread-safety достигается через:
- Синхронизацию (DispatchQueue, lock).
- Immutable-структуры.
- Использование actor и @MainActor.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 214 |
| 6 | 🤔 Какие есть фрейм ворк механизмы в айос для выполненной бэкраунд задач?
В iOS для выполнения фоновых задач существуют несколько ключевых механизмов:
🚩Основные механизмы
🟠Grand Central Dispatch (GCD): Используется для асинхронного выполнения задач на глобальных или пользовательских очередях.
DispatchQueue.global(qos: .background).async {
// Фоновая задача
}
🟠OperationQueue: Высокоуровневый API для управления очередями операций с возможностью указания зависимостей.
let queue = OperationQueue()
queue.addOperation {
// Фоновая операция
}
🟠Background Fetch: Позволяет приложению периодически загружать новые данные в фоновом режиме.
func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
// Фоновое обновление данных
completionHandler(.newData)
}
🟠BGTaskScheduler: Новый фреймворк для планирования и выполнения фоновых задач.
import BackgroundTasks
func scheduleBackgroundTask() {
let request = BGAppRefreshTaskRequest(identifier: "com.example.app.refresh")
request.earliestBeginDate = Date(timeIntervalSinceNow: 15 * 60)
try? BGTaskScheduler.shared.submit(request)
}
🟠URLSession Background Transfers: Выполнение загрузки и выгрузки данных в фоновом режиме.
let configuration = URLSessionConfiguration.background(withIdentifier: "com.example.app.background")
let session = URLSession(configuration: configuration)
let url = URL(string: "https://example.com/largefile")!
let task = session.downloadTask(with: url)
task.resume()
Ставь 👍 и забирай 📚 Базу знаний | 238 |
| 7 | 🤔 Что такое escaping closure?
Escaping closure — это замыкание, которое используется после выхода из функции, в которую его передали.
Например, если замыкание сохраняется в свойстве или передаётся асинхронно. Его нужно отметить @escaping, чтобы компилятор знал, что оно будет жить дольше тела функции.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 229 |
| 8 | 🤔 Какой путь проделывает ивент , когда пользователь нажимает на приложение?
Когда пользователь нажимает на иконку приложения на домашнем экране, iOS проходит несколько этапов перед тем, как приложение становится активным.
🚩Разберём путь события подробнее
🟠Пользователь нажимает на иконку (SpringBoard)
iOS-устройства управляются системой SpringBoard – это оболочка, отвечающая за домашний экран, иконки, фоновые процессы.
Когда пользователь тапает на иконку приложения, SpringBoard отправляет событие UIApplicationLaunchOptionsKey в систему.
🟠iOS загружает процесс приложения
Если приложение не запущено:
- iOS создаёт новый процесс и выделяет память.
- Загружаются зависимости (библиотеки, фреймворки).
- Создаётся объект UIApplication.
🟠Вызывается `application(_:didFinishLaunchingWithOptions:)`
Здесь приложение инициализируется и загружается основной UI.
Метод в AppDelegate:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
print("Приложение запущено")
return true
}
Ставь 👍 и забирай 📚 Базу знаний | 273 |
| 9 | 🤔 Можно ли наследовать структуру от нескольких родителей?
Нет, структуры не поддерживают наследование. Однако можно использовать протоколы (protocol) для реализации общих интерфейсов и функциональности.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 279 |
| 10 | 🤔 Какие виды ссылок бывают в Swift?
– strong — по умолчанию, удерживает объект в памяти.
– weak — не увеличивает счётчик ссылок и становится nil, когда объект освобождён.
– unowned — не увеличивает счётчик, но не обнуляется (используется, когда объект точно не должен быть уничтожен до использования).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 317 |
| 11 | 🤔 С какими типами можно использовать ссылки?
Ссылки (strong, weak, unowned) применимы только к reference-типа — то есть к экземплярам классов. Value-типы (например, struct, enum) копируются при передаче, и на них нельзя создать ссылку в обычном понимании.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 344 |
| 12 | 🤔 Есть ли функция первого класса в языке?
Да. В Swift функции — объекты первого класса. Их можно передавать как параметры, возвращать из других функций и сохранять в переменные.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 379 |
| 13 | 🤔 За что отвечают Compression Resistance Priority?
Отвечают за сопротивление сжатию UI-элемента в ограниченном пространстве. Элемент с более высоким приоритетом будет меньше сжиматься, чем элемент с более низким значением.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 385 |
| 14 | 🤔 Как приложения реагируют на нажатия?
Система распознаёт событие касания, передаёт его объекту UIResponder, который находится в иерархии view. Объект может обработать его или передать дальше по цепочке.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 399 |
| 15 | 🤔 Как инициализация классов связана с выделением памяти?
При инициализации класса происходит выделение памяти в heap, а затем инициализация всех его свойств. После завершения инициализации объект готов к использованию. Это отличается от структур, которые хранятся в stack (если не вложены в ссылочный тип).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 409 |
| 16 | 🤔 Что нужно сделать, чтобы вызвать жизненный цикл view-контроллера?
Жизненный цикл UIViewController запускается:
- При инициализации и отображении контроллера (вручную или через навигацию).
- Основные методы:
- viewDidLoad()
- viewWillAppear()
- viewDidAppear()
- viewWillDisappear()
- viewDidDisappear()
Чтобы вызвать жизненный цикл вручную:
- Представить контроллер:
- Или встроить в навигацию:
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 408 |
| 17 | 🤔 Если обозначить внутри метода Synchronized , что будет монитору?
Это высокоуровневый механизм синхронизации, который объединяет взаимное исключение (mutex) и условные переменные (condition variables) для управления доступом к объектам в многопоточной среде.
🚩Как работает
🟠Взаимное исключение (Mutual Exclusion)
Только один поток может выполнить защищенный блок кода в любой момент времени.
🟠Условные переменные (Condition Variables)
Позволяют потокам ожидать определенных условий, а другим потокам уведомлять их о наступлении этих условий.
🚩Примеры
class ThreadSafeClass {
private var internalState = 0
private let queue = DispatchQueue(label: "com.example.threadSafeQueue")
func increment() {
queue.sync {
internalState += 1
}
}
func getState() -> Int {
return queue.sync {
internalState
}
}
}
С NSLock
class ThreadSafeClass {
private var internalState = 0
private let lock = NSLock()
func increment() {
lock.lock()
internalState += 1
lock.unlock()
}
func getState() -> Int {
lock.lock()
let state = internalState
lock.unlock()
return state
}
}
С objc_sync_enter и objc_sync_exit
class ThreadSafeClass: NSObject {
private var internalState = 0
func increment() {
objc_sync_enter(self)
internalState += 1
objc_sync_exit(self)
}
func getState() -> Int {
objc_sync_enter(self)
let state = internalState
objc_sync_exit(self)
return state
}
}
Ставь 👍 и забирай 📚 Базу знаний | 388 |
| 18 | 🤔 В каком методе жизненного цикла контроллера нам в первый раз известны финальные размеры view?
Финальные размеры UIView гарантированно известны в методе viewDidLayoutSubviews(). На этом этапе система уже рассчитала Auto Layout и определила финальный frame всех вью.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 309 |
| 19 | 🤔 Есть функция, принимающая аргумент, а туда закинут integer — что произойдёт?
В языках со строгой типизацией (Swift, Kotlin, Java) произойдёт ошибка компиляции, если типы не совпадают. В динамически типизированных языках (Python, JavaScript) может быть попытка приведения типа — и тогда поведение зависит от реализации функции.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 327 |
| 20 | 🤔 Что такое многопоточность?
Это возможность центрального процессора (ЦПУ) или программы выполнять несколько задач (потоков) одновременно. В контексте программирования она используется для улучшения производительности приложений за счёт параллельной обработки задач. Это особенно важно для задач, требующих интенсивных вычислений, или приложений, которые должны одновременно реагировать на множество входных данных, таких как пользовательский интерфейс.
🚩Основные понятия
🟠Поток (Thread)
Минимальная единица обработки, которая может быть выполнена операционной системой.
🟠Конкуренция (Concurrency)
Способность программы делать прогресс в нескольких задачах одновременно. Конкуренция достигается за счёт переключения между задачами.
🟠Параллелизм (Parallelism)
Способность программы выполнять несколько операций одновременно, используя множество процессоров или ядер.
Ставь 👍 и забирай 📚 Базу знаний | 333 |
Вже доступно! Дослідження Telegram за 2025 — головні інсайти року 
