Swift | Тесты
1.22K subscribers
25 photos
361 links
Cайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp

Вопросы собесов t.me/+wtkjBoN6OI5hNGEy
Задачи t.me/+JQkI4zSOEXtkYzg6
Вакансии t.me/+3o9-Ytdiv_E5OGIy
Download Telegram
🤔 Что такое dispatch группа?

DispatchGroup в GCD (Grand Central Dispatch) позволяет объединить несколько асинхронных задач и дождаться их завершения.
1. Удобен для координации задач, выполняемых параллельно.
2. Используется для уведомления, когда все задачи завершены.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Как в Swift ограничить видимость свойства в рамках одного файла?
Anonymous Quiz
1%
open
2%
public
88%
fileprivate
9%
private
🤔 К каким типам относятся протоколы?

Протоколы в Swift — это абстрактные типы, которые можно использовать как интерфейсы. Они могут быть class-only, @objc, associatedtype и поддерживают множественное наследование.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
🤔 Какой модификатор доступа делает метод или свойство доступными только в пределах того же файла, в котором они объявлены?
Anonymous Quiz
5%
private
95%
fileprivate
0%
internal
0%
public
💊4
🤔 Как в Swift запустить задержанную операцию на фоновом потоке и затем обновить UI на главном потоке?
Anonymous Quiz
78%
Использование DispatchQueue.global().async и DispatchQueue.main.async
14%
Применение asyncAfter и sync
4%
Использование OperationQueue
4%
Использование performSelector(inBackground:)
🤔 Наследником чего является UIWindow?

UIWindow наследуется от UIView, а значит, участвует в иерархии отображения. Она представляет основное окно, в котором располагаются все видимые элементы приложения.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Как в Swift создать структуру с приватным конструктором, ограничивающим создание экземпляров извне?
Anonymous Quiz
92%
Определение private init()
3%
Использование closed init()
1%
Использование public init()
4%
Определение protected init()
🤔 Какой метод в Swift позволяет обеспечить отложенную загрузку содержимого вью, когда оно действительно требуется?
Anonymous Quiz
82%
lazy var
4%
deferred loading
6%
onAppear
7%
loadViewIfNeeded
💊4
🤔 Как остановить подписку, когда пользователь не видит экран?

Подписку следует удалить в момент, когда экран становится невидимым:
- В UIKit: viewWillDisappear или viewDidDisappear.
- В SwiftUI: onDisappear.
Также важно:
- Для Combine использовать AnyCancellable и занулять его (cancellable = nil).
- В RxSwift — использовать disposeBag или вручную вызывать dispose().
Это предотвращает утечки памяти и ненужную работу подписки в фоне.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Как в Swift реализовать систему событий, которая позволяет объектам подписываться на определенные события и реагировать на них?
Anonymous Quiz
94%
Использование паттерна "Observer" с NotificationCenter
5%
Применение делегатов и протоколов
2%
Разработка кастомной системы событий с использованием замыканий
0%
Внедрение обработчиков событий через наследование
💊6
🤔 Каким образом SwiftUI позволяет упростить создание динамичных пользовательских интерфейсов?
Anonymous Quiz
76%
Использование declarative syntax
20%
Применение imperative programming
2%
Использование manual layout
3%
Применение direct manipulation
🤔 Какие есть нюансы при использовании Core Data в разных потоках?

- Каждый поток должен использовать отдельный NSManagedObjectContext.
- Контексты не являются потокобезопасными, и попытка использовать один и тот же контекст из разных потоков приведёт к сбоям.
- Для передачи объектов между контекстами нужно использовать NSManagedObjectID, а не сами объекты.
- При сохранении одного контекста необходимо либо вручную уведомлять другие контексты об изменениях, либо включить automaticallyMergesChangesFromParent.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3💊1
🤔 Какой инструмент используется для профилирования производительности и нахождения утечек памяти в Swift?
Anonymous Quiz
47%
Xcode Instruments
11%
Swift Profiler
38%
Memory Analyzer
4%
Performance Monitor
💊1
🤔 Каким способом можно обеспечить выполнение кода в Swift только после завершения нескольких асинхронных операций?
Anonymous Quiz
80%
Использование DispatchGroup
12%
Применение нескольких DispatchQueue.async
8%
Запуск последовательных DispatchQueue.sync
0%
Создание массива Future объектов
🤔 Сколько будет весить массив, в зависимости от того, сколько и что туда положил?

Вес массива зависит от количества элементов и их типа. Например, массив из 100 Int (по 8 байт каждый) займёт примерно 800 байт. Если массив содержит объекты, то он хранит ссылки, а сами объекты лежат в куче. Также учитывается внутренний буфер и выравнивание.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊2
🤔 Какой оператор в Swift используется для безопасного разыменования опционалов?
Anonymous Quiz
46%
?
3%
!
49%
??
3%
&
🤔 Каким образом можно в Swift динамически изменять поведение объекта в зависимости от его состояния без изменения его класса?
Anonymous Quiz
53%
Использование паттерна State
26%
Применение инъекций зависимостей
5%
Модификация свойств объекта
16%
Создание наследников класса
🤔 Почему плохо загружать главный поток, и какие есть способы этого не делать?

Почему плохо:
1. Главный поток отвечает за обновление пользовательского интерфейса.
2. Его блокировка приводит к зависанию приложения и ухудшению пользовательского опыта.
3. Возможна ошибка "Application Not Responding" (ANR).
Как избежать:
1. Выполняйте ресурсоемкие задачи (сеть, вычисления) в фоновых потоках с использованием DispatchQueue, NSOperationQueue или Coroutines.
2. Используйте асинхронные операции с callback-ами, Promise, или реактивными библиотеками (RxSwift).
3. Минимизируйте время выполнения операций, требующих обновления UI, чтобы быстрее возвращаться в главный поток.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM