Cómo aprobar una entrevista de Swift: preguntas y respuestas principales

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Cómo pasar una entrevista de Swift: preguntas principales



Una entrevista para un puesto de desarrollador iOS no solo evalúa el conocimiento de frameworks, sino también una comprensión profunda del lenguaje Swift. Los empleadores quieren ver un candidato que entienda la gestión de memoria, la concurrencia y las particularidades de la sintaxis. En este artículo hemos recopilado las preguntas principales que suelen hacer en las entrevistas, con respuestas detalladas y ejemplos de código. El artículo será útil tanto para juniors como para desarrolladores experimentados que deseen refrescar conocimientos antes de la entrevista.



1. Fundamentos de Swift: tipos, opcionales y gestión de memoria



Las preguntas básicas verifican qué tan bien comprendes los conceptos fundamentales del lenguaje. Empecemos con el más popular: los opcionales.



Pregunta 1: ¿Qué son los opcionales y para qué sirven?



Respuesta: Los opcionales son un mecanismo de seguridad de tipos que permite que una variable contenga un valor o sea nil (ausencia de valor). Resuelven el problema de los punteros null, común en otros lenguajes.



// Declaración de un opcionalvar name: String? = "Ana"name = nil // ahora la variable no contiene valor

// Extracción segura (optional binding)if let unwrappedName = name { print("Hola, \\(unwrappedName)")} else { print("Nombre ausente")}

// Extracción forzada (force unwrap) — ¡peligroso!// let forcedName = name! // crash si name == nil


Pregunta 2: ¿Cuál es la diferencia entre struct y class?



Respuesta: struct es un tipo valor (value type), mientras que class es un tipo referencia (reference type). Las estructuras se copian al asignarse, las clases se pasan por referencia. Además, las clases soportan herencia, las estructuras no.



struct Point {    var x: Int    var y: Int}

class Person { var name: String init(name: String) { self.name = name }}

var pointA = Point(x: 1, y: 2)var pointB = pointA // copiapointB.x = 10print(pointA.x) // 1 — el original no cambió

var personA = Person(name: "Iván")var personB = personA // referencia al mismo objetopersonB.name = "Pedro"print(personA.name) // "Pedro" — cambió


Pregunta 3: ¿Cómo funciona Automatic Reference Counting (ARC)?



Respuesta: ARC cuenta automáticamente la cantidad de referencias fuertes a un objeto de clase. Cuando el contador llega a cero, el objeto se libera de la memoria. Los problemas surgen con referencias cíclicas (retain cycles), que se resuelven usando referencias weak o unowned.



class Parent {    var child: Child?}

class Child { weak var parent: Parent? // weak previene retain cycle}

var parent: Parent? = Parent()var child: Child? = Child()parent?.child = childchild?.parent = parent


2. Conceptos avanzados: closures, protocolos y genéricos



En la siguiente etapa, el entrevistador verifica si sabes usar las capacidades funcionales de Swift.



Pregunta 4: ¿Qué son los closures y cómo capturan valores?



Respuesta: Un closure es un bloque de código que se puede pasar y usar como una función. Captura (captures) variables del contexto circundante. La captura puede ser fuerte o débil.



func makeIncrementer(incrementAmount: Int) -> () -> Int {    var total = 0    let incrementer: () -> Int = {        total += incrementAmount // captura total        return total    }    return incrementer}

let incrementByTwo = makeIncrementer(incrementAmount: 2)print(incrementByTwo()) // 2print(incrementByTwo()) // 4


Pregunta 5: ¿Cuál es la diferencia entre un protocolo y una clase abstracta?



Respuesta: En Swift no hay clases abstractas. Un protocolo define un contrato (requisitos) que deben implementar clases, estructuras o enu

Blogs

Book Recommendations