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
🔒Открыть пост
и посмотреть медиа
🤔 Какие объекты участвуют в зависимостях? В зависимости от контекста, под "объектами, участвующими в зависимостях" можно понимать различные концепции. В программировании под зависимостями чаще всего подразумеваются связи между объектами или модулями, где один объект зависит от другого для выполнения своих функций. 🚩Объект-зависимый и объект-зависимость Когда один объект (например, ViewController) зависит от другого (NetworkManager), первый становится клиентом, а второй – зависимостью. class NetworkManager { func fetchData() { print("Данные загружены") } } class ViewController { let networkManager: NetworkManager init(networkManager: NetworkManager) { self.networkManager = networkManager } func loadData() { networkManager.fetchData() } } 🚩Протоколы как способ ослабления зависимостей Жесткие зависимости можно ослабить, используя протоколы. protocol NetworkService { func fetchData() } class NetworkManager: NetworkService { func fetchData() { print("Данные загружены") } } class ViewController { let networkService: NetworkService init(networkService: NetworkService) { self.networkService = networkService } func loadData() { networkService.fetchData() } } 🚩Зависимости в архитектурах (MVVM, VIPER, DI) В MVVM зависимость между ViewController и ViewModel. В VIPER модули зависят друг от друга, но слабо связаны через протоколы. В DI (Dependency Injection) зависимости передаются снаружи, что повышает тестируемость и гибкость. 🚩Менеджеры зависимостей Чтобы управлять внешними зависимостями (библиотеками), используются Swift Package Manager (SPM) CocoaPods Carthage Ставь 👍 и забирай 📚 Базу знаний
Preguntas de entrevista de Swift
Preguntas de entrevista de Swift
🔒Открыть пост
и посмотреть медиа
🤔 В чём разница между as, as! и as? Эти три оператора связаны с приведением типов: - as используется для безопасного восходящего приведения, когда тип объекта гарантированно может быть приведён к указанному типу (например, суперклассу или протоколу). - as! — это принудительное нисходящее приведение. Оно требует уверенности в типе объекта, иначе приложение упадёт при ошибке. - as? — это безопасное нисходящее приведение, при котором результат будет опционалом. Если приведение невозможно, возвращается nil. Таким образом: - as — безопасно и для "поднятия" вверх по иерархии. - as! — рискованно, используется только если уверен в типе. - as? — гибко и безопасно, но требует работы с опционалом. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Preguntas de entrevista de Swift
Preguntas de entrevista de Swift
🔒Открыть пост
и посмотреть медиа
🤔 Для каких сущностей работает copy on write? Механизм Copy-on-Write (CoW) используется для оптимизации производительности и использования памяти при копировании объектов. Этот механизм особенно полезен для неизменяемых (immutable) структур данных. CoW часто ассоциируется со стандартными коллекциями и собственными типами данных, реализованными как структуры (value types), такие как Array, String, Dictionary, и Set. 🚩Принцип работы Copy-on-Write Работает так, что копия объекта создаётся только в тот момент, когда происходит попытка модификации. До этого момента все копии объекта фактически ссылаются на одни и те же данные в памяти. Это позволяет сэкономить как время, так и память, поскольку избегается ненужное дублирование данных, когда оно не требуется. 🚩Как это работает в Swift Автоматически применяет механизм CoW к своим стандартным коллекциям, таким как Array, String, Dictionary, и Set. Это означает, что при передаче этих объектов в функции или при их копировании реальное дублирование данных происходит только в случае модификации одной из копий. Таким образом, если вы создаёте копию массива и не изменяете его, обе переменные будут указывать на одни и те же данные в памяти. Как только вы модифицируете одну из копий, Swift создаст реальную копию данных для этой копии, обеспечивая независимость данных между оригиналом и копией. var originalArray = [1, 2, 3] var copiedArray = originalArray // На этом этапе данные не дублируются copiedArray.append(4) // Теперь данные копируются, потому что copiedArray модифицируется Ставь 👍 и забирай 📚 Базу знаний
Preguntas de entrevista de Swift
Preguntas de entrevista de Swift
🔒Открыть пост
и посмотреть медиа
🤔 Какие ещё бывают type? – Int, Double, String, Bool — базовые типы, – struct, class, enum, tuple, – Optional, – Protocol, – Function, – Any, AnyObject, Never. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Preguntas de entrevista de Swift
Preguntas de entrevista de Swift
🔒Открыть пост
и посмотреть медиа
🤔 Расскажи про механизм отмены в operatsion В Operation (ранее NSOperation) в Foundation есть встроенный механизм отмены, который позволяет корректно завершить операцию, если она больше не нужна. Однако отмена не прерывает выполнение автоматически – код внутри операции должен сам проверять флаг отмены и корректно завершаться. 🚩Как работает отмена `Operation`? Вызывается cancel() – операция помечается как отмененная. Флаг isCancelled становится true, но операция продолжает выполняться, если не проверяет этот флаг. Операция должна самостоятельно проверять isCancelled и прерываться. class MyOperation: Operation { override func main() { for i in 1...10 { if isCancelled { return } // Проверяем, отменена ли операция print("Выполняется шаг \(i)") sleep(1) // Симуляция работы } } } let queue = OperationQueue() let operation = MyOperation() queue.addOperation(operation) DispatchQueue.main.asyncAfter(deadline: .now() + 3) { operation.cancel() // Отменяем через 3 секунды } 🚩Отмена асинхронных операций Если операция асинхронная (isAsynchronous = true), просто проверять isCancelled недостаточно. Надо корректно управлять состояниями (isExecuting, isFinished). class AsyncOperation: Operation { private var _executing = false private var _finished = false override var isAsynchronous: Bool { true } override var isExecuting: Bool { get { return _executing } set { willChangeValue(for: \.isExecuting) _executing = newValue didChangeValue(for: \.isExecuting) } } override var isFinished: Bool { get { return _finished } set { willChangeValue(for: \.isFinished) _finished = newValue didChangeValue(for: \.isFinished) } } override func start() { if isCancelled { isFinished = true return } isExecuting = true executeTask() } private func executeTask() { DispatchQueue.global().asyncAfter(deadline: .now() + 3) { if self.isCancelled { self.complete() return } print("Асинхронная операция завершена") self.complete() } } private func complete() { isExecuting = false isFinished = true } } let queue = OperationQueue() let asyncOp = AsyncOperation() queue.addOperation(asyncOp) DispatchQueue.main.asyncAfter(deadline: .now() + 1) { asyncOp.cancel() // Отменяем через 1 секунду } 🚩Отмена зависимых операций Если у вас есть зависимости между операциями, отмена одной может автоматически отменить все последующие: let op1 = MyOperation() let op2 = MyOperation() op2.addDependency(op1) let queue = OperationQueue() queue.addOperations([op1, op2], waitUntilFinished: false) // Отменяем первую операцию, вторая тоже не выполнится op1.cancel() Ставь 👍 и забирай 📚 Базу знаний
Preguntas de entrevista de Swift
Preguntas de entrevista de Swift
🔒Открыть пост
и посмотреть медиа
🤔 Расскажи про capture list? Capture list в замыканиях Swift используется для управления захватом переменных, предотвращая сильные ссылки ([weak self]) или обеспечивая их копирование ([x]). Это помогает управлять памятью и избегать утечек. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Preguntas de entrevista de Swift
Preguntas de entrevista de Swift
🔒Открыть пост
и посмотреть медиа
🤔 Где могут располагаться стеки помимо структуры В программировании стек (stack) — это структура данных и область памяти, используемая для хранения временных данных. В зависимости от контекста, стек может существовать в нескольких местах. 🟠Стек вызовов (Call Stack) Это главная область памяти в оперативной памяти (RAM), где хранятся: - Локальные переменные функций. - Адреса возврата после завершения функции. - Контекст выполнения программы. func functionA() { functionB() } func functionB() { print("Вызов B") } functionA() func infiniteRecursion() { infiniteRecursion() // ❌ Бесконечный вызов } 🟠Стек в структуре данных (например, `Array`) В Swift можно реализовать стек вручную, используя массив (Array). struct Stack { private var elements: [T] = [] mutating func push(_ item: T) { elements.append(item) } mutating func pop() -> T? { return elements.popLast() } } var stack = Stack() stack.push(10) stack.push(20) print(stack.pop()!) // 20 🟠Потоковый стек (Thread Stack) Каждый поток (Thread) в многопоточном программировании получает свой стек. DispatchQueue.global().async { print("Фоновый поток") } print("Главный поток") 🟠Стек в автоматическом управлении памятью (ARC) Swift использует Automatic Reference Counting (ARC) для управления памятью. Когда объект больше не нужен, он удаляется из памяти (в том числе из стека). func createPerson() { let person = "Иван" // Создаётся в стеке print(person) } createPerson() // Переменная person удаляется при выходе из функции Ставь 👍 и забирай 📚 Базу знаний
Preguntas de entrevista de Swift
Preguntas de entrevista de Swift
🔒Открыть пост
и посмотреть медиа
🤔 В каких моментах жизненного цикла лучше поместить подписку? Подписку на уведомления (NotificationCenter), KVO или Combine в жизненном цикле UIViewController лучше размещать в методах, где гарантируется её актуальность и корректное удаление. 🟠Подписка в `viewDidLoad()` Подписка на события обычно происходит в `viewDidLoad()`, так как этот метод вызывается один раз при создании контроллера. override func viewDidLoad() { super.viewDidLoad() NotificationCenter.default.addObserver( self, selector: #selector(handleNotification), name: .someNotification, object: nil ) } @objc func handleNotification(_ notification: Notification) { print("Получено уведомление") } 🟠Подписка в `viewWillAppear()` – если уведомления нужны только при отображении экрана Если подписка должна работать только когда экран на экране, используем viewWillAppear(). var cancellable: AnyCancellable? override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) cancellable = NotificationCenter.default.publisher(for: .someNotification) .sink { _ in print("Событие получено") } } 🟠`viewWillDisappear()` – отписка от событий Когда контроллер скрывается, подписки можно удалить, чтобы избежать ненужных вызовов. Удаление подписки на NotificationCenter: override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) NotificationCenter.default.removeObserver(self, name: .someNotification, object: nil) } Удаление Combine подписки (cancellable) override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) cancellable?.cancel() cancellable = nil } 🟠`deinit` – отписка, если подписка создаётся в `viewDidLoad()` Если подписка работает на протяжении всего жизненного цикла контроллера, её можно удалить в `deinit`. deinit { NotificationCenter.default.removeObserver(self) } Ставь 👍 и забирай 📚 Базу знаний
Preguntas de entrevista de Swift
Preguntas de entrevista de Swift
🔒Открыть пост
и посмотреть медиа
🤔 Какие есть известные проблемы с многопоточностью? Известные проблемы с многопоточностью включают гонки данных, блокировки и взаимоблокировки (deadlocks). Гонки данных происходят, когда несколько потоков одновременно пытаются изменить одни и те же данные без должной синхронизации. Блокировки возникают, когда потоки ждут освобождения ресурсов друг от друга, что замедляет работу программы. Взаимоблокировки случаются, когда два потока захватывают ресурсы и не могут завершить работу из-за зависимостей. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
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 5 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