Swift | Вопросы собесов
Kanalga Telegram’da o‘tish
Cайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+bn3i_aLL0-A2ZGMy Задачи t.me/+JQkI4zSOEXtkYzg6 Вакансии t.me/+3o9-Ytdiv_E5OGIy
Ko'proq ko'rsatish2 216
Obunachilar
-124 soatlar
Ma'lumot yo'q7 kunlar
-230 kunlar
Ma'lumot yuklanmoqda...
O'xshash kanallar
Taglar buluti
Kirish va chiqish esdaliklari
---
---
---
---
---
---
Obunachilarni jalb qilish
Iyun '26
Iyun '26
+24
0 kanalda
May '26
+21
0 kanalda
Get PRO
Aprel '26
+23
0 kanalda
Get PRO
Mart '26
+35
0 kanalda
Get PRO
Fevral '26
+45
1 kanalda
Get PRO
Yanvar '26
+58
0 kanalda
Get PRO
Dekabr '25
+28
0 kanalda
Get PRO
Noyabr '25
+156
1 kanalda
Get PRO
Oktabr '25
+26
0 kanalda
Get PRO
Sentabr '25
+41
0 kanalda
Get PRO
Avgust '25
+38
0 kanalda
Get PRO
Iyul '25
+27
0 kanalda
Get PRO
Iyun '25
+34
0 kanalda
Get PRO
May '25
+50
0 kanalda
Get PRO
Aprel '25
+87
0 kanalda
Get PRO
Mart '25
+151
2 kanalda
Get PRO
Fevral '25
+123
1 kanalda
Get PRO
Yanvar '25
+127
53 kanalda
Get PRO
Dekabr '24
+55
1 kanalda
Get PRO
Noyabr '24
+75
0 kanalda
Get PRO
Oktabr '24
+193
42 kanalda
Get PRO
Sentabr '24
+348
251 kanalda
Get PRO
Avgust '24
+98
0 kanalda
Get PRO
Iyul '24
+140
54 kanalda
Get PRO
Iyun '24
+411
244 kanalda
Get PRO
May '24
+646
191 kanalda
Get PRO
Aprel '24
+353
23 kanalda
| Sana | Obunachilarni jalb qilish | Esdaliklar | Kanallar | |
| 20 Iyun | 0 | |||
| 19 Iyun | +3 | |||
| 18 Iyun | +1 | |||
| 17 Iyun | +1 | |||
| 16 Iyun | 0 | |||
| 15 Iyun | +2 | |||
| 14 Iyun | +1 | |||
| 13 Iyun | +3 | |||
| 12 Iyun | +1 | |||
| 11 Iyun | +1 | |||
| 10 Iyun | +1 | |||
| 09 Iyun | +1 | |||
| 08 Iyun | +2 | |||
| 07 Iyun | 0 | |||
| 06 Iyun | +1 | |||
| 05 Iyun | 0 | |||
| 04 Iyun | +2 | |||
| 03 Iyun | 0 | |||
| 02 Iyun | +3 | |||
| 01 Iyun | +1 |
Kanal postlari
🤔 Какие есть фреймворки для выполнения бэкраунд задач?
1. GCD (Grand Central Dispatch): для управления потоками и выполнения задач.
2. OperationQueue: более высокоуровневая абстракция над GCD.
3. URLSession: для выполнения сетевых запросов в фоне.
4. BackgroundTasks: для выполнения долгосрочных задач в фоне.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
| 2 | Привет, ребята!
У нас для вас отличные новости — на easyoffer вышло сразу несколько крупных обновлений:
1. Автоотклики на HeadHunter
Снова работают в полную силу — можно смело возвращаться к активному поиску.
2. Новый раздел «Резюмейкер»
Теперь вы можете быстро создавать уникальные резюме, адаптированные под каждую вакансию, и сразу добавлять сопроводительное письмо. Это заметно повышает шансы получить приглашение на собеседование.
3. База вопросов стала чище
Мы навели порядок и удалили около 30% дубликатов.
Ориентироваться стало проще.
––––––––––––––––––
🔥 Акция в честь обновления
Пожизненный тариф easyoffer PRO — по цене одного года.
Успейте до 23 июня:
👉 https://easyoffer.ru/pro
––––––––––––––––––
Что дальше?
В ближайшие пару недель добавим ещё два раздела:
1. Сообщество с чатами по всем профессиональным направлениям.
2. Агрегатор вакансий, чтобы поиск работы стал ещё удобнее. | 179 |
| 3 | 🤔 Чем отличается virtual table от witness table?
VTable — это таблица методов для классов (динамическое наследование), используется для переопределения.
Witness table — механизм Swift для протоколов, в ней хранится соответствие реализаций протокольным методам.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 174 |
| 4 | 🤔 Когда используется runloop?
RunLoop используется для поддержки непрерывного ожидания и обработки событий в потоке. Он нужен, когда поток не должен завершаться, а должен обрабатывать входящие события, таймеры, сигналы или сообщения, особенно в UI и фоновых задачах.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 208 |
| 5 | 🤔 Что такое work right?
Если речь о work right в контексте GCD или планировщика задач — это стратегия, при которой задачи выполняются максимально близко ко времени их планирования. Также термин может использоваться в смысле правильной, согласованной работы потоков без гонки за ресурсами.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 261 |
| 6 | 🤔 Что из себя представляет структура данных 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 – поиск в глубину)
История действий (назад-вперед в браузере, отмена в редакторе).
Ставь 👍 и забирай 📚 Базу знаний | 275 |
| 7 | 🤔 Почему Swift не может сам сгенерировать memberwise инициализатор для классов?
1. Классы поддерживают наследование, что делает сложным автоматическое создание инициализатора, учитывающего все поля, включая родительские.
2. Инициализация в классах может включать дополнительные логики, которые сложно определить на этапе компиляции.
3. Структуры, в отличие от классов, не имеют этих ограничений, поэтому memberwise инициализатор создаётся автоматически.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 259 |
| 8 | 🤔 Что такое синхронная задача?
Синхронная задача в программировании выполняется последовательно в текущем потоке, блокируя его до завершения задачи. Это контрастирует с асинхронной задачей, которая позволяет выполнение другого кода, пока задача обрабатывается.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 268 |
| 9 | 🤔 Какие можно выделить главные принципы ООП?
Объектно-ориентированное программирование (ООП) — это парадигма, основанная на концепции "объектов", которые могут содержать данные в виде полей (часто называемых атрибутами или свойствами) и код в виде процедур (часто называемых методами). ООП фокусируется на использовании объектов для моделирования реального мира (или абстракций), облегчая разработку и поддержку сложных программ. Существует четыре основных принципа:
🟠Инкапсуляция
Механизм ООП, который объединяет данные (атрибуты) и код (методы), манипулирующий этими данными, внутри одного объекта и скрывает детали реализации от внешнего использования. Это позволяет защитить внутреннее состояние объекта от прямого доступа извне и обеспечить контролируемый интерфейс для работы с этим объектом.
🟠Наследование
Позволяет создавать новый класс на основе уже существующего класса, перенимая его свойства и методы. Новый класс может добавлять собственные свойства и методы или модифицировать унаследованные. Наследование обеспечивает повторное использование кода, упрощает его расширение и поддержку.
🟠Полиморфизм
Способность объектов с одинаковым интерфейсом предоставлять различную реализацию для одного и того же метода. Это означает, что функция или метод могут использоваться для различных типов объектов, и каждый тип может реализовать эту функцию или метод по-своему. Полиморфизм упрощает написание общего кода для работы с объектами разных классов и обеспечивает гибкость в его использовании.
🟠Абстракция
Позволяет скрыть сложность системы, представляя её ключевые аспекты и скрывая детали реализации. Это достигается за счёт использования абстрактных классов и интерфейсов, которые определяют шаблон для классов-наследников. Абстракция помогает сосредоточиться на взаимодействии объектов на более высоком уровне, игнорируя ненужные детали.
Ставь 👍 и забирай 📚 Базу знаний | 264 |
| 10 | 🤔 Как очищается стек?
Стек очищается автоматически, когда завершается функция. Как только стековая рамка функции выходит за пределы контекста вызова — вся память, связанная с ней, сбрасывается. Это обеспечивает высокую производительность, но требует строгой структуры вызовов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 261 |
| 11 | 🤔 Зачем нужны свойства "Content Hugging Priority"?
Свойства "Content Hugging Priority" и "Content Compression Resistance Priority" играют ключевую роль в системе Auto Layout. Эти свойства помогают определить, как вьюшки (views) должны быть отформатированы и как они реагируют на изменения в доступном пространстве в интерфейсе пользователя. Рассмотрим подробнее, что означает каждое из этих свойств и как они используются в разработке интерфейсов.
🚩Content Hugging Priority
Определяет, насколько сильно вьюшка должна "обнимать" своё содержимое. Это свойство указывает на желательность вьюшки быть как можно ближе к своим внутренним размерам, основанным на своем содержимом.
🚩Content Compression Resistance Priority
Определяет, насколько сильно вьюшка должна противостоять сжатию размеров меньше, чем размеры её содержимого.
Ставь 👍 и забирай 📚 Базу знаний | 272 |
| 12 | 🤔 Что такое поток безопасности (thread-safety)?
Потокобезопасность — это свойство кода/объекта, означающее, что он может использоваться из разных потоков одновременно без ошибок и гонок данных.
Потокобезопасный код:
- Не вызывает крашей.
- Не вызывает конфликтов доступа.
- Защищает внутреннее состояние при параллельном использовании.
В Swift thread-safety достигается через:
- Синхронизацию (DispatchQueue, lock).
- Immutable-структуры.
- Использование actor и @MainActor.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 251 |
| 13 | 🤔 Какие есть фрейм ворк механизмы в айос для выполненной бэкраунд задач?
В 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()
Ставь 👍 и забирай 📚 Базу знаний | 287 |
| 14 | 🤔 Что такое escaping closure?
Escaping closure — это замыкание, которое используется после выхода из функции, в которую его передали.
Например, если замыкание сохраняется в свойстве или передаётся асинхронно. Его нужно отметить @escaping, чтобы компилятор знал, что оно будет жить дольше тела функции.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 257 |
| 15 | 🤔 Какой путь проделывает ивент , когда пользователь нажимает на приложение?
Когда пользователь нажимает на иконку приложения на домашнем экране, 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
}
Ставь 👍 и забирай 📚 Базу знаний | 311 |
| 16 | 🤔 Можно ли наследовать структуру от нескольких родителей?
Нет, структуры не поддерживают наследование. Однако можно использовать протоколы (protocol) для реализации общих интерфейсов и функциональности.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 311 |
| 17 | 🤔 Какие виды ссылок бывают в Swift?
– strong — по умолчанию, удерживает объект в памяти.
– weak — не увеличивает счётчик ссылок и становится nil, когда объект освобождён.
– unowned — не увеличивает счётчик, но не обнуляется (используется, когда объект точно не должен быть уничтожен до использования).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 351 |
| 18 | 🤔 С какими типами можно использовать ссылки?
Ссылки (strong, weak, unowned) применимы только к reference-типа — то есть к экземплярам классов. Value-типы (например, struct, enum) копируются при передаче, и на них нельзя создать ссылку в обычном понимании.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 376 |
| 19 | 🤔 Есть ли функция первого класса в языке?
Да. В Swift функции — объекты первого класса. Их можно передавать как параметры, возвращать из других функций и сохранять в переменные.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 408 |
| 20 | 🤔 За что отвечают Compression Resistance Priority?
Отвечают за сопротивление сжатию UI-элемента в ограниченном пространстве. Элемент с более высоким приоритетом будет меньше сжиматься, чем элемент с более низким значением.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний | 409 |
Endi mavjud! Telegram Tadqiqoti 2025 — yilning asosiy insaytlari 
