P
prepair.app
Comenzar entrevista →
EnglishУкраїнськаРусскийDeutsch
🍏

Middle iOS (Swift)Preguntas de entrevista iOS developer

Middle · 2–4 años de experiencia

Las entrevistas de iOS testean el sistema de tipos de Swift, cómo ARC maneja la memoria, y si puedes razonar sobre el estado de la UI — más al menos una pregunta donde un retain cycle se esconde a plena vista. Aquí están las preguntas hechas más a menudo, cada una con una respuesta modelo. Middle: comprensión más profunda, optimización y situaciones reales de trabajo.

Pruébalo — sin cuenta necesaria
Preparando tu pregunta…

Temas para prepararte

Lenguaje Swift y optionals
ARC y gestión de memoria
SwiftUI y UIKit
Concurrencia: async/await, Combine, GCD
Arquitectura y estado
Persistencia y networking

7 preguntas de nivel Middle con respuestas

1

¿Cuál es la diferencia entre `@State`, `@Binding` y `@ObservedObject`?

Respuesta

@State es un valor que una vista posee y muta. @Binding es una referencia al @State de alguien más, pasada hacia abajo para que un hijo pueda escribirlo. @ObservedObject observa un tipo de referencia que publica cambios y es poseído en otro lugar. El error relacionado es @ObservedObject donde se necesitaba @StateObject — el objeto entonces se recrea en cada re-render.

2

¿En qué se diferencia `async/await` de los completion handlers?

Respuesta

Expresan la misma suspensión, pero await mantiene el código lineal y deja que los errores viajen con throws en vez de un parámetro de error que puedes olvidar revisar. El compilador también exige concurrencia estructurada: los hijos de una tarea se cancelan con ella. La trampa de migración es llamar a una función async desde un contexto síncrono, que necesita un Task explícito.

3

¿Qué garantiza `@MainActor`?

Respuesta

Que el código anotado corre en el hilo principal, verificado por el compilador en vez de por convención. El trabajo de UI debe estar en main, y antes de los actors esto era una aserción de runtime que descubrías crasheando. Marcar un view model como @MainActor usualmente es más simple que despachar en cada call site.

4

¿Por qué es necesario `reuseIdentifier`, y qué se rompe sin una reutilización cuidadosa?

Respuesta

Porque una table o collection view mantiene un pequeño pool de celdas y las re-vincula mientras haces scroll, en vez de asignar una por fila. Lo que se rompe es estado dejado en la celda de su ocupante anterior — una imagen de la fila tres apareciendo en la fila cuarenta. prepareForReuse y cancelar el request de imagen en vuelo son los arreglos.

5

¿Cómo encuentras la causa de una fuga de memoria en iOS?

Respuesta

El memory graph debugger muestra qué sigue vivo y quién lo tiene, que usualmente nombra el ciclo directamente. Leaks y Allocations de Instruments responden la misma pregunta a través del tiempo. Los culpables frecuentes son closures capturando self fuertemente, un delegate declarado strong en vez de weak, y observers nunca removidos.

6

¿Cómo mantienes el scroll suave?

Respuesta

No hagas nada costoso en el hilo principal durante un scroll: decodifica imágenes fuera de main, cachea el resultado decodificado en vez de los datos, y evita layout que se recalcula en cada frame. El renderizado off-screen de sombras y máscaras es el silencioso — un corner radius con masksToBounds en muchas celdas cuesta más de lo que parece.

7

¿Cómo manejas los errores de una capa de red sensatamente?

Respuesta

Modélalos: un error tipado que distingue sin conectividad, un 5xx del servidor, un 4xx que causaste, y un fallo de decodificación — porque cada uno merece un mensaje distinto y una política de reintento distinta. Reintentar un 400 para siempre es el modo de fallo. Los errores de decodificación especialmente deberían ser ruidosos en desarrollo y nunca tragados silenciosamente.

🦎

Leer respuestas no es suficiente

En una entrevista real hablas bajo presión. Cam hace estas mismas preguntas, evalúa cada respuesta y muestra exactamente qué mejorar.

Practicar entrevista de Middle iOS (Swift) →
Gratis · 3 entrevistas al mes

Otros niveles — iOS (Swift)

Junior iOS (Swift)Senior iOS (Swift)Todas las preguntas de iOS (Swift)

Otras especializaciones

🔍Middle Manual QA🤖Middle QA AutomationMiddle Java Backend🐍Middle Python Backend🐘Middle PHP Backend🦫Middle Go Backend🟢Middle Node.js Backend💎Middle Ruby on Rails🔷Middle C++🟨Middle JavaScript