A continuación presento algunas preguntas para preparar una entrevista técnica para rol de iOS, y enlaces a algunos artículos que pueden servir de guía.
Programación Orientada a Objetos
- ¿Cuál es la diferencia entre clase y objeto?
- ¿Qué es la sobrecarga de métodos y para qué sirve?
- ¿Cuáles son las características de la programación orientada a objetos?
- ¿Qué es herencia?
- ¿Qué es polimorfismo?
- ¿Qué es abstracción?
- ¿Qué es encapsulamiento?
- ¿Qué es programación orientada a objetos?
- ¿Qué es herencia múltiple?
- ¿Qué es una interfaz?
- ¿Qué es una clase abstracta?
Manejo de memoria
- ¿Cuál es la diferencia entre
strong,weakyunowned? - ¿Cuál es la diferencia entre
weakyunowneden Swift, y cómo afecta esto a la liberación de memoria bajo ARC? - ¿Qué es un "capture list"?
- ¿Cuál es la diferencia entre despacho estático y dinámico?
- ¿Se puede usar despacho dinámico en tipos de dato por valor?
- ¿Qué es un witness table?
- ¿Qué es una VTable?
Swift
- Diferencia entre clase y estructura.
- ¿Cuál es la diferencia entre
publicyopen? - ¿Cuál es la diferencia entre
fileprivateeinternal? - ¿Cuál es la diferencia entre
staticyclass func? - ¿Qué se entiende por programación orientada a protocolos?
- ¿Cuál es la función del protocolo
Identifiable? - ¿Qué son los macros de Swift?
Objective-C
UIKit
- ¿Qué es un
UIViewController? - ¿Quién controla el ciclo de vida de un
UIViewController?
SwiftUI
- ¿Qué es un environmnet value?
- ¿Qué es un environment object?
- ¿Cuál es la diferencia entre
StateObject,ObservedObjectyState? - ¿Cuál es la diferencia entre ejecutar trabajo asíncrono en
.taskvs.onAppear? - Una vista se está repintando, sin embargo, necesito ejecutar una tarea solo una vez. Al usar
.tasky.onAppear, la tarea se ejecuta varias veces (debido al repintado de la vista). ¿Qué se puede hacer al respecto? (task(id:priority:_:)) - ¿Cuál es la función de
ViewModifierdentro del sistema de diseño? - ¿Qué es la identidad de una vista en SwiftUI? (implícita y explícita)
Concurrencia
GCD
- ¿Cuál es la diferencia entre una cola serial y una concurrente?
- ¿Qué es un "dispatch barrier"?
Combine
RxSwift
Swift Concurrency
- ¿Qué es
nonisolated? - ¿Cómo prevenir data races en Swift 6.2? (
Sendable) - ¿Qué es "actor re-entrancy"? ¿Qué problemas puede causar?
Automatización de pruebas
- ¿Cómo funciona un framework de tipo
xUnit? - ¿Qué partes componen el framework "XCTest"?
- ¿Qué es una prueba unitaria? ¿Para qué sirve?
- ¿Qué es una prueba de integración?
- ¿Qué es una prueba de extremo a extremo?
- ¿Qué es una prueba de contrato?
- ¿Qué es una prueba de snapshot?
- ¿Qué es una prueba exploratoria?
- ¿Qué es una prueba de humo?
- ¿Qué prácticas ayuda dentro del código de producción a escribir pruebas? (e.g. inversión de control, inyección de dependencias)
- ¿Es posible construir pruebas automatizadas para un Singleton?
- ¿Está bien tener 100% de cobertura de las pruebas sobre el código?
Persistencia en base de datos
CoreData
- ¿Cuáles son las opciones de CodeGen de CoreData?
- ¿Cuáles son las clases que componen el stack de CoreData?
- ¿Qué tipos de migraciones existe?
- ¿Cuáles son las reglas de borrado?
- ¿Cómo se crea un modelo de datos?
- ¿Cómo se manipulan los datos de una base de datos?
Realm
SwiftData
SQLite
Consumo de servicios web
- ¿Cómo descargar un archivo grande y reanudar la descarga si el internet falla?
URLSession
Alamofire
Moya
DevOps
- ¿Cómo funciona un pipeline de CI/CD?
Algoritmos y complejidad computacional
- ¿Qué es la biblioteca
Algorithms?
Metodologías ágiles
- ¿En qué consiste SCRUM?
- ¿En qué consiste Waterfall?
- ¿En qué consiste Kanban?
- Cuéntame una situación en la que seguir estrictamente una metodología ágil (Scrum, Kanban, etc.) iba en contra de entregar valor. ¿Qué decidiste cambiar y por qué?
- ¿Cómo mantienes principios ágiles cuando el equipo depende de múltiples equipos, áreas no técnicas o stakeholders con mentalidad waterfall?
- ¿Qué métricas usas para saber si un equipo ágil está funcionando bien y cuáles evitarías usar? ¿Por qué?
- Háblame de un equipo “ágil” que no estaba funcionando. ¿Cómo identificaste el problema y qué acciones tomaste?
- ¿Cómo cambia tu rol como Senior/Staff Engineer o líder técnico en un equipo verdaderamente ágil frente a uno tradicional?
Flujo de trabajo
Arquitecturas de software
- ¿Qué es el Diseño Orientado al Dominio?
- ¿Qué es una arquitectura basada en capas?
- ¿Qué es Clean Architecture?
- ¿Cuál es la diferencia entre inyección de dependencias, inversión de control e inversión de dependencias?
MVC
MVP
MVVM
VIPER
TCA
Patrones de Diseño GoF
- ¿En qué consiste el Patrón: Abstract Factory?
- ¿En qué consiste el Patrón: Builder?
- ¿En qué consiste el Patrón: Factory Method?
- ¿En qué consiste el Patrón: Prototype?
- ¿En qué consiste el Patrón: Singleton?
- ¿En qué consiste el Patrón: Decorator?
- ¿En qué consiste el Patrón: Facade?
- ¿En qué consiste el Patrón: Iterator?
- ¿En qué consiste el Patrón: Observer?
- ¿En qué consiste el Patrón: Strategy?
- ¿En qué consiste el Patrón: State?
- ¿En qué consiste el Patrón: Template Method?
- ¿En qué consiste el Patrón: Visitor?
- ¿En qué consiste el Patrón: Bridge?
- ¿En qué consiste el Patrón: Composite?
- ¿En qué consiste el Patrón: Flyweight?
- ¿En qué consiste el Patrón: Proxy?
- ¿En qué consiste el Patrón: Adapter?
- ¿En qué consiste el Patrón: Chain of Responsibility?
- ¿En qué consiste el Patrón: Command?
- ¿En qué consiste el Patrón: Interpreter?
- ¿En qué consiste el Patrón: Mediator?
- ¿En qué consiste el Patrón: Memento?
- ¿Qué diferencias/similitudes encuentra entre los patrones Factory Method y Template Method?
- ¿Qué diferencias/similitudes encuentra entre los patrones Strategy y State?
- ¿Cuál es la categorización gamma?
- ¿Cuál es la característica de los patrones creacionales?
- ¿Cuál es la característica de los patrones estructurales?
- ¿Cuál es la característica de los patrones comportamentales?
Patrones GRASP
- ¿En qué consiste el Principio: Experto en información (Information expert)?
- ¿En qué consiste el Principio: Creador (Creator)?
- ¿En qué consiste el Principio: Bajo acoplamiento (Low coupling)?
- ¿En qué consiste el Principio: Alta cohesión (High cohesion)?
- ¿En qué consiste el Principio: Controlador (Controller)?
- ¿En qué consiste el Principio: Indirección (Indirection)?
- ¿En qué consiste el Principio: Polimorfismo (Polymorphism)?
- ¿En qué consiste el Principio: Fabricación pura (Pure fabrication)?
- ¿En qué consiste el Principio: Variaciones protegidas (Protected variations)?
- ¿Qué es cohesión?
- ¿Qué es acoplamiento?
Principios SOLID
- ¿En qué consiste el Principio de Responsabilidad Única?
- ¿En qué consiste el Principio de Abierto para extensión y Cerrado para modificación?
- ¿En qué consiste el Principio de Sustitución de Liskov?
- ¿En qué consiste el Principio de Segregación de Interfaces?
- ¿En qué consiste el Principio de Inversión de Dependencias?
Top comments (0)