Swift | Вопросы собесов
Открыть в Telegram
Cайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+bn3i_aLL0-A2ZGMy Задачи t.me/+JQkI4zSOEXtkYzg6 Вакансии t.me/+3o9-Ytdiv_E5OGIy
Больше2 214
Подписчики
-124 часа
+37 дней
-430 день
Загрузка данных...
Похожие каналы
Облако тегов
Входящие и исходящие упоминания
---
---
---
---
---
---
Привлечение подписчиков
июнь '26
июнь '26
+20
в 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 каналах
| Дата | Привлечение подписчиков | Упоминания | Каналы | |
| 17 июня | +1 | |||
| 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 |
Посты канала
🤔 Что такое work right?
Если речь о work right в контексте GCD или планировщика задач — это стратегия, при которой задачи выполняются максимально близко ко времени их планирования. Также термин может использоваться в смысле правильной, согласованной работы потоков без гонки за ресурсами.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
| 2 | 🤔 Что из себя представляет структура данных stack?
Stack (стек) – это структура данных, работающая по принципу LIFO (Last In, First Out – "последним пришел, первым ушел").
🚩Пример реализации стека в Swift
В Swift нет встроенного стека (кроме Array), но можно создать свой:
struct Stack<T> {
private var elements: [T] = []
mutating func push(_ item: T) {
elements.append(item)
}
mutating func pop() -> T? {
return elements.popLast() // Удаляет и возвращает верхний элемент
}
func peek() -> T? {
return elements.last // Возвращает верхний элемент без удаления
}
func isEmpty() -> Bool {
return elements.isEmpty
}
}
// Пример использования:
var stack = Stack<Int>()
stack.push(10)
stack.push(20)
stack.push(30)
print(stack.pop()!) // 30
print(stack.peek()!) // 20
print(stack.isEmpty()) // false
🚩Где используется стек?
Обратный порядок выполнения (рекурсия) – стек вызовов функций.
Алгоритмы (обратная польская нотация, DFS – поиск в глубину)
История действий (назад-вперед в браузере, отмена в редакторе).
Ставь 👍 и забирай 📚 Базу знаний | 172 |
| 3 | 🤔 Почему Swift не может сам сгенерировать memberwise инициализатор для классов?
1. Классы поддерживают наследование, что делает сложным автоматическое создание инициализатора, учитывающего все поля, включая родительские.
2. Инициализация в классах может включать дополнительные логики, которые сложно определить на этапе компиляции.
3. Структуры, в отличие от классов, не имеют этих ограничений, поэтому memberwise инициализатор создаётся автоматически.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 203 |
| 4 | 🤔 Что такое синхронная задача?
Синхронная задача в программировании выполняется последовательно в текущем потоке, блокируя его до завершения задачи. Это контрастирует с асинхронной задачей, которая позволяет выполнение другого кода, пока задача обрабатывается.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 213 |
| 5 | 🤔 Какие можно выделить главные принципы ООП?
Объектно-ориентированное программирование (ООП) — это парадигма, основанная на концепции "объектов", которые могут содержать данные в виде полей (часто называемых атрибутами или свойствами) и код в виде процедур (часто называемых методами). ООП фокусируется на использовании объектов для моделирования реального мира (или абстракций), облегчая разработку и поддержку сложных программ. Существует четыре основных принципа:
🟠Инкапсуляция
Механизм ООП, который объединяет данные (атрибуты) и код (методы), манипулирующий этими данными, внутри одного объекта и скрывает детали реализации от внешнего использования. Это позволяет защитить внутреннее состояние объекта от прямого доступа извне и обеспечить контролируемый интерфейс для работы с этим объектом.
🟠Наследование
Позволяет создавать новый класс на основе уже существующего класса, перенимая его свойства и методы. Новый класс может добавлять собственные свойства и методы или модифицировать унаследованные. Наследование обеспечивает повторное использование кода, упрощает его расширение и поддержку.
🟠Полиморфизм
Способность объектов с одинаковым интерфейсом предоставлять различную реализацию для одного и того же метода. Это означает, что функция или метод могут использоваться для различных типов объектов, и каждый тип может реализовать эту функцию или метод по-своему. Полиморфизм упрощает написание общего кода для работы с объектами разных классов и обеспечивает гибкость в его использовании.
🟠Абстракция
Позволяет скрыть сложность системы, представляя её ключевые аспекты и скрывая детали реализации. Это достигается за счёт использования абстрактных классов и интерфейсов, которые определяют шаблон для классов-наследников. Абстракция помогает сосредоточиться на взаимодействии объектов на более высоком уровне, игнорируя ненужные детали.
Ставь 👍 и забирай 📚 Базу знаний | 210 |
| 6 | 🤔 Как очищается стек?
Стек очищается автоматически, когда завершается функция. Как только стековая рамка функции выходит за пределы контекста вызова — вся память, связанная с ней, сбрасывается. Это обеспечивает высокую производительность, но требует строгой структуры вызовов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 233 |
| 7 | 🤔 Зачем нужны свойства "Content Hugging Priority"?
Свойства "Content Hugging Priority" и "Content Compression Resistance Priority" играют ключевую роль в системе Auto Layout. Эти свойства помогают определить, как вьюшки (views) должны быть отформатированы и как они реагируют на изменения в доступном пространстве в интерфейсе пользователя. Рассмотрим подробнее, что означает каждое из этих свойств и как они используются в разработке интерфейсов.
🚩Content Hugging Priority
Определяет, насколько сильно вьюшка должна "обнимать" своё содержимое. Это свойство указывает на желательность вьюшки быть как можно ближе к своим внутренним размерам, основанным на своем содержимом.
🚩Content Compression Resistance Priority
Определяет, насколько сильно вьюшка должна противостоять сжатию размеров меньше, чем размеры её содержимого.
Ставь 👍 и забирай 📚 Базу знаний | 247 |
| 8 | 🤔 Что такое поток безопасности (thread-safety)?
Потокобезопасность — это свойство кода/объекта, означающее, что он может использоваться из разных потоков одновременно без ошибок и гонок данных.
Потокобезопасный код:
- Не вызывает крашей.
- Не вызывает конфликтов доступа.
- Защищает внутреннее состояние при параллельном использовании.
В Swift thread-safety достигается через:
- Синхронизацию (DispatchQueue, lock).
- Immutable-структуры.
- Использование actor и @MainActor.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 233 |
| 9 | 🤔 Какие есть фрейм ворк механизмы в айос для выполненной бэкраунд задач?
В 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()
Ставь 👍 и забирай 📚 Базу знаний | 260 |
| 10 | 🤔 Что такое escaping closure?
Escaping closure — это замыкание, которое используется после выхода из функции, в которую его передали.
Например, если замыкание сохраняется в свойстве или передаётся асинхронно. Его нужно отметить @escaping, чтобы компилятор знал, что оно будет жить дольше тела функции.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 243 |
| 11 | 🤔 Какой путь проделывает ивент , когда пользователь нажимает на приложение?
Когда пользователь нажимает на иконку приложения на домашнем экране, 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
}
Ставь 👍 и забирай 📚 Базу знаний | 287 |
| 12 | 🤔 Можно ли наследовать структуру от нескольких родителей?
Нет, структуры не поддерживают наследование. Однако можно использовать протоколы (protocol) для реализации общих интерфейсов и функциональности.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 290 |
| 13 | 🤔 Какие виды ссылок бывают в Swift?
– strong — по умолчанию, удерживает объект в памяти.
– weak — не увеличивает счётчик ссылок и становится nil, когда объект освобождён.
– unowned — не увеличивает счётчик, но не обнуляется (используется, когда объект точно не должен быть уничтожен до использования).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 328 |
| 14 | 🤔 С какими типами можно использовать ссылки?
Ссылки (strong, weak, unowned) применимы только к reference-типа — то есть к экземплярам классов. Value-типы (например, struct, enum) копируются при передаче, и на них нельзя создать ссылку в обычном понимании.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 352 |
| 15 | 🤔 Есть ли функция первого класса в языке?
Да. В Swift функции — объекты первого класса. Их можно передавать как параметры, возвращать из других функций и сохранять в переменные.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 394 |
| 16 | 🤔 За что отвечают Compression Resistance Priority?
Отвечают за сопротивление сжатию UI-элемента в ограниченном пространстве. Элемент с более высоким приоритетом будет меньше сжиматься, чем элемент с более низким значением.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 402 |
| 17 | 🤔 Как приложения реагируют на нажатия?
Система распознаёт событие касания, передаёт его объекту UIResponder, который находится в иерархии view. Объект может обработать его или передать дальше по цепочке.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 407 |
| 18 | 🤔 Как инициализация классов связана с выделением памяти?
При инициализации класса происходит выделение памяти в heap, а затем инициализация всех его свойств. После завершения инициализации объект готов к использованию. Это отличается от структур, которые хранятся в stack (если не вложены в ссылочный тип).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 413 |
| 19 | 🤔 Что нужно сделать, чтобы вызвать жизненный цикл view-контроллера?
Жизненный цикл UIViewController запускается:
- При инициализации и отображении контроллера (вручную или через навигацию).
- Основные методы:
- viewDidLoad()
- viewWillAppear()
- viewDidAppear()
- viewWillDisappear()
- viewDidDisappear()
Чтобы вызвать жизненный цикл вручную:
- Представить контроллер:
- Или встроить в навигацию:
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 411 |
| 20 | 🤔 Если обозначить внутри метода 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
}
}
Ставь 👍 и забирай 📚 Базу знаний | 393 |
Уже доступно! Исследование Telegram 2025 — ключевые инсайты года 
