Logo
TGCATALOG
Catálogo Selecciones Blog
Preguntas de entrevista de Swift

Preguntas de entrevista de Swift

Preguntas, pruebas y tareas para desarrolladores de iOS en Telegram.

Sin valoraciones
626
29.10.2026
626
29.10.2026
Sin valoraciones
626
29.10.2026
Redirección segura vía bot
О канале

Preguntas, pruebas y tareas para desarrolladores de iOS en Telegram.

Подписчиков 2,148
Тематика Tecnología
Язык Español
Ссылка t.me/easy_swift

También te recomendamos

Kekaton AI  Voz en off y clon de voz
Kekaton AI Voz en off y clon de voz
Bot

bot de IA para clonar texto a voz y voz en Telegram. Cree audio utilizando la red neuronal de forma rápida y fácil.

Descripción

El canal está dedicado a la preparación de entrevistas en idioma Swift. Contiene preguntas actuales, pruebas, tareas prácticas e información de vacantes. Ideal para desarrolladores iOS principiantes y experimentados que quieren refrescar sus conocimientos y pasar con éxito entrevistas.

Últimas publicaciones

Preguntas de entrevista de Swift
Preguntas de entrevista de Swift
🔒Открыть пост
и посмотреть медиа
🤔 Расскажи жизненный цикл vue контроллера В iOS жизненный цикл UIViewController определяет последовательность вызовов методов, происходящих во время создания, отображения, скрытия и уничтожения контроллера. 🚩Подробное объяснение стадий 🟠Создание (Initialization) На этом этапе создаётся экземпляр UIViewController, но его view ещё не загружено. - Можно переопределить init() или init(coder:), если контроллер создаётся из Storyboard. - Можно передавать данные через инициализатор. class MyViewController: UIViewController { var titleText: String init(titleText: String) { self.titleText = titleText super.init(nibName: nil, bundle: nil) } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } } 🟠Загрузка View (Loading) Когда контроллеру нужно отобразить свой view, вызывается loadView() (если представление создаётся программно) и viewDidLoad() (если загружается из Storyboard или XIB). loadView() – создаёт view программно (обычно не переопределяется). viewDidLoad() – вызывается один раз после загрузки view. override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .white print("viewDidLoad - View загружено в память") } 🟠Отображение на экране (Appearing & Disappearing) Когда UIViewController добавляется в иерархию UIWindow и становится видимым, вызываются следующие методы: viewWillAppear(_:) – вызывается перед появлением на экране. viewDidAppear(_:) – вызывается после появления на экране. viewWillDisappear(_:) – вызывается перед скрытием. viewDidDisappear(_:) – вызывается после скрытия. override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) print("viewWillAppear - View скоро появится на экране") } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) print("viewDidAppear - View уже на экране") } 🟠Удаление из памяти (Deallocation) Когда UIViewController больше не нужен, вызывается deinit(), а его view может быть выгружено с вызовом viewDidUnload() (но сейчас это редко используется). deinit { print("deinit - Контроллер удалён из памяти") } Ставь 👍 и забирай 📚 Базу знаний
Preguntas de entrevista de Swift
Preguntas de entrevista de Swift
🔒Открыть пост
и посмотреть медиа
🤔 Как отличить Domain Driven Design в приложении? Приложения с DDD фокусируются на логике предметной области и разделении модулей по бизнес-контекстам. Выделяются сущности, агрегаты, репозитории и фабрики. Основная цель — обеспечение точного моделирования бизнес-логики, независимого от технической реализации. Это позволяет создавать масштабируемую и легко поддерживаемую архитектуру. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Preguntas de entrevista de Swift
Preguntas de entrevista de Swift
🔒Открыть пост
и посмотреть медиа
🤔 Какие виды диспетчеризации существуют в свифт? В Swift существует несколько видов диспетчеризации, которые определяют, как и когда вызываются методы или функции. Основные виды диспетчеризации включают статическую диспетчеризацию (static dispatch), диспетчеризацию по таблице виртуальных функций (vtable dispatch), диспетчеризацию по свидетелю (witness table dispatch) и динамическую диспетчеризацию (dynamic dispatch). Рассмотрим их подробнее: 🟠Статическая диспетчеризация (Static Dispatch) Вызов функции или метода определяется на этапе компиляции. Используется для функций и методов, которые не переопределяются в подклассах или не являются динамическими. Для структур, перечислений и final классов. struct MyStruct { func printMessage() { print("Hello from MyStruct") } } let instance = MyStruct() instance.printMessage() // Вызов определяется на этапе компиляции 🟠Диспетчеризация по таблице виртуальных функций (Vtable Dispatch) Используется для вызова методов класса, которые могут быть переопределены в подклассах. Виртуальная таблица (vtable) используется для определения, какой метод вызывать. Для классов и их подклассов. class BaseClass { func printMessage() { print("Hello from BaseClass") } } class SubClass: BaseClass { override func printMessage() { print("Hello from SubClass") } } let instance: BaseClass = SubClass() instance.printMessage() // Вызов определяется в runtime с использованием vtable 🟠Диспетчеризация по свидетелю (Witness Table Dispatch) Используется для вызова методов протоколов, реализованных типами. Таблица свидетелей (witness table) используется для определения, какой метод вызывать. Для типов, соответствующих протоколам. protocol MyProtocol { func printMessage() } struct MyStruct: MyProtocol { func printMessage() { print("Hello from MyStruct") } } let instance: MyProtocol = MyStruct() instance.printMessage() // Вызов определяется в runtime с использованием witness table 🟠Динамическая диспетчеризация (Dynamic Dispatch) Используется для вызова методов, отмеченных как dynamic или методов Objective-C. Метод определяется в runtime с использованием Objective-C runtime. Для методов, которые должны быть динамически разрешены в runtime, обычно для взаимодействия с Objective-C. import Foundation class MyClass: NSObject { @objc dynamic func printMessage() { print("Hello from MyClass") } } let instance = MyClass() instance.printMessage() // Вызов определяется в runtime с использованием Objective-C runtime Ставь 👍 и забирай 📚 Базу знаний
Preguntas de entrevista de Swift
Preguntas de entrevista de Swift
🔒Открыть пост
и посмотреть медиа
🤔 Может ли у UI View не быть layer'а и наоборот? UIView всегда имеет CALayer, так как UIView — это обёртка над CALayer в UIKit. CALayer может существовать без UIView, потому что это низкоуровневый элемент Core Animation, который не зависит от UIKit. 🚩`UIView` всегда содержит `CALayer` Каждый UIView внутри себя содержит CALayer, который отвечает за отрисовку. let view = UIView() print(view.layer) // Всегда существует! 🚩`CALayer` может существовать без `UIView` CALayer можно создать и добавить в иерархию без UIView. let layer = CALayer() layer.frame = CGRect(x: 50, y: 50, width: 100, height: 100) layer.backgroundColor = UIColor.red.cgColor if let window = UIApplication.shared.windows.first { window.layer.addSublayer(layer) // Добавляем без UIView! } Ставь 👍 и забирай 📚 Базу знаний
Preguntas de entrevista de Swift
Preguntas de entrevista de Swift
🔒Открыть пост
и посмотреть медиа
🤔 Какие есть варианты обезопасить работу с историей images? Обеспечение безопасности работы с историей изображений в iOS-приложениях может включать несколько уровней защиты: 🟠Контроль доступа к изображениям - Используйте Privacy Settings (NSPhotoLibraryUsageDescription, NSCameraUsageDescription) для контроля доступа к фотоальбому. - Для ограниченного доступа в iOS 14+ используйте PHPickerViewController. let status = PHPhotoLibrary.authorizationStatus(for: .readWrite) if status == .authorized { // Доступ есть } else { // Запросить разрешение PHPhotoLibrary.requestAuthorization { newStatus in if newStatus == .authorized { print("Доступ получен") } } } 🟠Шифрование изображений - Если изображения сохраняются локально, используйте AES-шифрование. - Можно хранить ключ в Keychain или использовать Secure Enclave. import CommonCrypto func encryptImage(data: Data, key: Data) -> Data? { var buffer = Data(count: data.count + kCCBlockSizeAES128) var numBytesEncrypted: size_t = 0 let status = CCCrypt( CCOperation(kCCEncrypt), CCAlgorithm(kCCAlgorithmAES), CCOptions(kCCOptionPKCS7Padding), key.bytes, key.count, nil, data.bytes, data.count, &buffer, buffer.count, &numBytesEncrypted ) return status == kCCSuccess ? buffer.prefix(numBytesEncrypted) : nil } 🟠Безопасное хранение изображений Core Data с Encrypted Store – можно использовать зашифрованные базы данных, такие как SQLCipher. FileManager + Data Protection – файлы можно хранить в Application Support с флагом .completeFileProtection. Keychain – если нужно хранить ссылки на изображения или ключи. let fileURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("secure_image.jpg") try? imageData.write(to: fileURL, options: .completeFileProtection) 🟠Ограничение кеширования изображений - Если изображение чувствительное, отключите кеширование в URLSession: let config = URLSessionConfiguration.default config.urlCache = nil // Отключаем кеш let session = URLSession(configuration: config) 🟠Защита от утечек в памяти - Убедитесь, что ссылки на изображения не создают retain cycle. - Используйте weak ссылки в кэше изображений. class ImageCache { private let cache = NSCache() func store(image: UIImage, forKey key: String) { cache.setObject(image, forKey: key as NSString) } func retrieve(forKey key: String) -> UIImage? { return cache.object(forKey: key as NSString) } } 🟠Безопасная загрузка изображений (защита от MITM) - Используйте HTTPS вместо HTTP. - Включите App Transport Security (ATS) в Info.plist. - Верифицируйте SSL-сертификаты при загрузке. func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) { if let serverTrust = challenge.protectionSpace.serverTrust { let credential = URLCredential(trust: serverTrust) completionHandler(.useCredential, credential) } else { completionHandler(.cancelAuthenticationChallenge, nil) } } Ставь 👍 и забирай 📚 Базу знаний
Preguntas de entrevista de Swift
Preguntas de entrevista de Swift
🔒Открыть пост
и посмотреть медиа
🤔 Можно ли изменить push, пока он тебе не показался? Да, если используется Notification Service Extension, можно перехватить и изменить UNNotificationRequest. Это должно быть сделано быстро, так как система ограничивает время на обработку. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Preguntas de entrevista de Swift
Preguntas de entrevista de Swift
🔒Открыть пост
и посмотреть медиа
🤔 Что такое мьютекс (mutex)? Мьютекс (от англ. "mutex" - mutual exclusion, взаимное исключение) — это механизм синхронизации, используемый в многопоточном программировании для предотвращения одновременного доступа нескольких потоков к общим ресурсам, таким как переменные, структуры данных или файлы. Он помогает избежать состояния гонки (race condition), когда результат выполнения программы зависит от неопределённого порядка доступа потоков к ресурсу. 🚩Основные концепции мьютекса 🟠Взаимное исключение Мьютекс обеспечивает доступ к общему ресурсу только одному потоку в каждый момент времени. Когда один поток захватывает мьютекс, другие потоки должны ждать, пока мьютекс не будет освобождён. 🟠Захват и освобождение Поток захватывает мьютекс перед доступом к общему ресурсу и освобождает его после завершения работы с этим ресурсом. Если мьютекс уже захвачен другим потоком, текущий поток будет блокирован до тех пор, пока мьютекс не будет освобождён. 🚩Пример использования мьютекса в Swift import Foundation class SafeCounter { private var value = 0 private let lock = NSLock() func increment() { lock.lock() // Захват мьютекса value += 1 lock.unlock() // Освобождение мьютекса } func getValue() -> Int { lock.lock() // Захват мьютекса let currentValue = value lock.unlock() // Освобождение мьютекса return currentValue } } let counter = SafeCounter() DispatchQueue.global().async { for _ in 0..
Preguntas de entrevista de Swift
Preguntas de entrevista de Swift
🔒Открыть пост
и посмотреть медиа
🤔 Что такое Quality of Service? Quality of Service (QoS) — это система приоритетов, определяющая, насколько срочно и важно выполнить задачу. От этого зависит, сколько ресурсов система выделит. Например, для UI используется самый высокий уровень (user-interactive), а для фоновых задач — низкий (background). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Preguntas de entrevista de Swift
Preguntas de entrevista de Swift
🔒Открыть пост
и посмотреть медиа
🤔 Чем отличается garbage collector и подсчет ссылок? Garbage Collector (GC) и Automatic Reference Counting (ARC) – это два разных подхода к управлению памятью в программировании. Они решают одну задачу: автоматическое освобождение неиспользуемой памяти, но делают это по-разному. 🚩Garbage Collector (GC) Java, Kotlin, C#, Python, JavaScript - GC периодически просматривает всю память приложения и ищет объекты, на которые больше нет ссылок. - Когда такие объекты находятся, они удаляются, а память освобождается. - Это автоматический процесс, который запускается по мере необходимости. 🚩Подсчет ссылок (ARC - Automatic Reference Counting) Где используется: Swift, Objective-C - Каждый объект имеет счетчик ссылок (reference count). - Когда переменная создает ссылку на объект, счетчик увеличивается. - Когда переменная перестает ссылаться на объект, счетчик уменьшается. - Когда счетчик достигает нуля, объект удаляется из памяти сразу же. class Person { var pet: Pet? } class Pet { var owner: Person? } let person = Person() let pet = Pet() person.pet = pet pet.owner = person // Теперь оба объекта держат друг друга, и ARC их не удалит Решение – использовать weak: class Pet { weak var owner: Person? // Теперь утечки памяти не будет } Ставь 👍 и забирай 📚 Базу знаний
Preguntas de entrevista de Swift
Evolución de suscriptores
+-0.6% últimos 30 días
Actuales
2,148
Hace un mes
2,161
Crecimiento medio
+0 / día
Actualizado
hace 7 horas

Reseñas de canal Preguntas de entrevista de Swift

Inicia sesión para dejar una reseña

Solo los usuarios registrados pueden compartir su opinión.

Aún no hay reseñas

¡Sé el primero en compartir tu experiencia con este recurso!

Recursos similares

Loading
Cambiar a tema claro
Inicio Catálogo Selecciones Blog Entrar