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
598
28.10.2026
598
28.10.2026
Sin valoraciones
598
28.10.2026
Redirección segura vía bot
О канале

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

Подписчиков 2,142
Тематика 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
🔒Открыть пост
и посмотреть медиа
🤔 В чем особенность верстки каждой ячейки на фрейме? При верстке UITableViewCell через фреймы приходится вручную рассчитывать все размеры и положения элементов. Это быстрее по производительности, но требует точности и большой ответственности при адаптации под разные экраны. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Preguntas de entrevista de Swift
Preguntas de entrevista de Swift
🔒Открыть пост
и посмотреть медиа
🤔 Расскажи про структуры Структуры (struct) – это один из основных типов данных в Swift. Они значимые (value type), то есть при передаче копируются, а не передаются по ссылке. 🚩Главные особенности `struct` Value type – при передаче копируется (в отличие от классов) Нет ARC (автоматического подсчета ссылок) – производительность выше Могут иметь методы, свойства, инициализаторы Работают с протоколами (protocol-oriented programming) Не поддерживают наследование 🚩Пример структуры struct Car { var model: String var year: Int func description() -> String { return "\(model) – \(year)" } } let car1 = Car(model: "Tesla", year: 2023) var car2 = car1 // Создается копия print(car1.description()) // Tesla – 2023 print(car2.description()) // Tesla – 2023 car2.year = 2024 // Изменяем car2, но car1 остается прежним print(car1.year) // 2023 print(car2.year) // 2024 🚩Мутируемые структуры (`mutating`) По умолчанию методы не могут изменять свойства структуры. Чтобы изменить их внутри метода, нужно использовать mutating struct Counter { var count = 0 mutating func increment() { count += 1 } } var counter = Counter() counter.increment() print(counter.count) // 1 Ставь 👍 и забирай 📚 Базу знаний
Preguntas de entrevista de Swift
Preguntas de entrevista de Swift
🔒Открыть пост
и посмотреть медиа
🤔 Какие минусы ООП? – Сложность при большом количестве классов, – Избыточное наследование, – Низкая гибкость при изменении структуры, – Возможные циклы зависимостей, – Переусложнение при решении простых задач. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Preguntas de entrevista de Swift
Preguntas de entrevista de Swift
🔒Открыть пост
и посмотреть медиа
🤔 Что означает принцип open closed? Принцип OCP (Open-Closed Principle) гласит: "Программные сущности должны быть открыты для расширения, но закрыты для модификации." Это значит, что код должен позволять добавлять новый функционал без изменения существующего кода. 🚩Почему это важно? Меньше багов – изменения не ломают старый код. Лучшая поддержка – новый функционал добавляется без переписывания старого. Гибкость – можно расширять систему без изменения её базовой логики. 🚩Пример нарушения принципа OCP Допустим, у нас есть класс, который рисует фигуры: class ShapeDrawer { func draw(shape: String) { if shape == "circle" { print("Рисуем круг") } else if shape == "square" { print("Рисуем квадрат") } } } 🚩Как исправить? Используем OCP! Лучше использовать наследование или протоколы, чтобы расширять функциональность, не меняя существующий код: protocol Drawable { func draw() } class Circle: Drawable { func draw() { print("Рисуем круг") } } class Square: Drawable { func draw() { print("Рисуем квадрат") } } class ShapeDrawer { func draw(shape: Drawable) { shape.draw() } } Ставь 👍 и забирай 📚 Базу знаний
Preguntas de entrevista de Swift
Preguntas de entrevista de Swift
🔒Открыть пост
и посмотреть медиа
🤔 Если нужен максимальный контроль над потоками, что можно использовать? Для максимального контроля используют POSIX-потоки (pthread), OperationQueue с кастомной реализацией или GCD с DispatchWorkItem и приоритетами. Также можно использовать NSLock, semaphore и dispatch group. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
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
🔒Открыть пост
и посмотреть медиа
🤔 Почему порядок ключей будет сохраняться между мутациями в словаре? Начиная с Swift 4, стандартный Dictionary сохраняет порядок вставки ключей. Даже при изменении значений или добавлении новых элементов порядок сохраняется, пока явным образом не удаляются ключи или не происходит массовая перераспределённая перестройка. Это стало возможным благодаря обновлённой реализации хеш-таблицы внутри Dictionary. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Preguntas de entrevista de Swift
Preguntas de entrevista de Swift
🔒Открыть пост
и посмотреть медиа
🤔 Какие паттерны знаешь? Паттерны проектирования – это готовые решения частых задач, улучшающие структуру кода, его поддержку и масштабируемость. 🚩Порождающие паттерны (Creational) Помогают упростить создание объектов и сделать его гибким. Определяет интерфейс для создания объекта, но поручает подклассам выбрать его тип. protocol Button { func press() } class iOSButton: Button { func press() { print("iOS button pressed") } } class AndroidButton: Button { func press() { print("Android button pressed") } } class ButtonFactory { static func createButton(for os: String) -> Button { return os == "iOS" ? iOSButton() : AndroidButton() } } let button = ButtonFactory.createButton(for: "iOS") button.press() // "iOS button pressed" 🟠Одиночка (Singleton) Гарантирует, что у класса будет только один экземпляр. class Database { static let shared = Database() // Единственный экземпляр private init() { } func query() { print("Запрос в базу данных") } } Database.shared.query() 🟠Строитель (Builder) Позволяет пошагово создавать сложные объекты. class Burger { var cheese = false var bacon = false } class BurgerBuilder { private var burger = Burger() func addCheese() -> Self { burger.cheese = true return self } func addBacon() -> Self { burger.bacon = true return self } func build() -> Burger { return burger } } let myBurger = BurgerBuilder().addCheese().addBacon().build() print(myBurger.cheese) // true print(myBurger.bacon) // true 🚩Структурные паттерны (Structural) Определяют удобные способы связи между объектами. 🟠Адаптер (Adapter) Позволяет совместить несовместимые интерфейсы. protocol EuropeanSocket { func provide220V() } class EuropeanPlug: EuropeanSocket { func provide220V() { print("220V подано") } } class USPlug { func provide110V() { print("110V подано") } } // Адаптер для американской вилки class USAdapter: EuropeanSocket { private let usPlug: USPlug init(usPlug: USPlug) { self.usPlug = usPlug } func provide220V() { usPlug.provide110V() print("Адаптация до 220V") } } let adapter = USAdapter(usPlug: USPlug()) adapter.provide220V() // "110V подано" // "Адаптация до 220V" 🟠Декоратор (Decorator) Динамически добавляет объекту новое поведение. protocol Coffee { func cost() -> Int } class SimpleCoffee: Coffee { func cost() -> Int { return 100 } } // Декоратор "Молоко" class MilkDecorator: Coffee { private let coffee: Coffee init(_ coffee: Coffee) { self.coffee = coffee } func cost() -> Int { return coffee.cost() + 30 } } let coffee = MilkDecorator(SimpleCoffee()) print(coffee.cost()) // 130 Ставь 👍 и забирай 📚 Базу знаний
Preguntas de entrevista de Swift
Preguntas de entrevista de Swift
🔒Открыть пост
и посмотреть медиа
🤔 Что такое method dispatch? Method dispatch — это механизм, определяющий, какая реализация метода будет вызвана во время исполнения. Бывает: - Static dispatch — выбор метода происходит на этапе компиляции (быстрее). - Dynamic dispatch — через таблицу виртуальных функций (vtable), работает с наследованием, позволяет переопределение. - Message dispatch — как в Objective-C, через objc_msgSend. Swift использует комбинацию подходов в зависимости от контекста (классы, final, протоколы). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Preguntas de entrevista de Swift
Evolución de suscriptores
+-0.8% últimos 30 días
Actuales
2,142
Hace un mes
2,160
Crecimiento medio
+-1 / día
Actualizado
hace 2 días

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