Si estás buscando trabajo como desarrollador de iOS, has llegado al lugar correcto, aquí te proporciono las 20 preguntas más comunes de entrevista iOS.
Estas preguntas te serán útiles, no solo te ayudarán a mejorar tus habilidades, sino que también te preparará para tu gran día.
Preguntas más comunes de entrevista iOS:
Para las preguntas básicas ya debes estar preparado. Pueden parecer obvias, pero te sorprendería saber cuántos ingenieros han fallado durante las entrevistas técnicas.
El entrevistador logra medir el nivel de experiencia del candidato de iOS, por medio de estas preguntas, así que, aunque te parezcan simples, trata de entenderlas muy bien.
A continuación, 20 preguntas más comunes de entrevista iOS con sus respuestas:
1- ¿Cuáles son las principales ventajas de Swift?
Esta puede parecer una pregunta para principiantes, pero no lo es, recuerda que lo principal que le interesa al entrevistador es saber tu experiencia en el área.
Respuesta esperada
Algunas de las principales ventajas de Swift son:
- Tipos opcionales, que hacen que las aplicaciones sean resistentes a los crashes
- Manejo de errores incorporado
- Cláusulas/Cierres
- Mucho más rápido en comparación con otros idiomas
- Lenguaje de tipo seguro
- Admite la coincidencia de patrones
Más información acerca de la pregunta: 8 ventajas de usar Swift para el desarrollo de iOS
2- ¿Explica los estilos populares para probar las aplicaciones iOS?
La pregunta es simple, se debe destacar los hechos importantes a tener en cuenta al probar aplicaciones iOS.
Respuesta esperada
Puede probar las aplicaciones en un simulador o en los propios dispositivos. Un simulador es un software especial que ayuda a ejecutar aplicaciones en el sistema con éxito.
Se puede disfrutar de la experiencia del usuario real sin dañar los dispositivos reales, son de fácil instalación, fácil de usar y realmente más rápido en comparación con dispositivos reales.
Cuidado en esta pregunta:
En caso de utilizar los dispositivos, hay posibilidades de que se bloqueen, pero estas situaciones se pueden evitar en el caso de los simuladores.
3- ¿Cuáles son las desventajas de usar simulador para probar aplicaciones iOS?
Con esta pregunta, el entrevistador desea saber cómo manejas las posibles desventajas al probar aplicaciones iOS en simulador.
Respuesta esperada:
Al tener pérdidas de memoria o cualquier otro problema relacionado con la memoria, se debe evitar los simuladores.
Además, el simulador no puede detectar ningún problema relacionado con la red o Internet.
Cuidado en esta pregunta:
Todos los casos de prueba se deben ejecutar tanto en el simulador como en el dispositivo real y verificar la aplicación en la versión diferente del sistema operativo iOS.
4- ¿Cómo se maneja la gestión de la memoria en iOS?
Las preguntas de memoria revelan mucho sobre el conocimiento de un desarrollador, especialmente porque muchas personas se están apoyando en ARC en estos días.
Respuesta esperada:
La gestión de la memoria es muy importante en cualquier aplicación, especialmente en las aplicaciones iOS que tienen memoria y otras limitaciones de hardware y sistema.
Swift utiliza el conteo automático de referencias (ARC). Esto es conceptualmente lo mismo en Swift que en Objective-C.
Cuidado en esta pregunta:
Aquí quieren escuchar una idea general del conteo de referencias. Cómo aumenta y qué pasará si el «contador» es igual a 0.
Más información acerca de la pregunta: Recuento automático de referencias
5- ¿Qué es el patrón de diseño Singleton?
Esta pregunta surge en las entrevistas para evaluar tu experiencia con los singleton o averiguar si tienes experiencia en algo que no sea solo iOS.
Respuesta esperada
Singleton es un patrón de diseño común que se utiliza en muchos lenguajes de programación orientada a objetos.
Este patrón asegura que solo exista una instancia para una clase determinada y es necesario otorgar acceso global a esa instancia en particular.
6- ¿Dónde usarías un patrón de diseño Singleton y dónde no?
Los singletons a veces se consideran un antipatrón. Sus principales desventajas son el estado global, el ciclo de vida del objeto y la inyección de dependencia.
Respuesta esperada
Cuando solo tienes una instancia de algo, es muy tentador hacer referencia y usarlo en todas partes directamente en lugar de inyectar en tus objetos, ocasionando un acoplamiento innecesario de la implementación en tu código.
A menudo, los singleton permiten compartir el estado global y desempeñan el papel de una «bolsa pública» que cada objeto utiliza para almacenar el estado, generando resultados impredecibles y errores o bloqueo si es anulado o eliminado por alguien.
Cuidado en esta pregunta:
Aunque en algunos lenguajes y plataformas se considera que los singleton son buenos, se deben minimizar su uso.
7- ¿Qué patrones de diseño se utilizan comúnmente en las aplicaciones de iOS?
Para trabajar con la plataforma iOS, debe estar familiarizado con las técnicas, la arquitectura y los patrones de diseño.
Respuesta esperada
Los patrones típicos al crear aplicaciones iOS son patrones de diseño de “competencias centrales”. Incluyen MVC, Singleton, Delegate y Observer.
Cuidado en esta pregunta:
El entrevistador lo que quiere saber es qué otros patrones de diseño usas comúnmente de forma inmediata, además de MVC.
8- ¿Por qué es importante el patrón de diseño?
Los patrones de diseño son las soluciones reutilizables a los problemas comunes en el diseño de software.
Respuesta esperada
Son plantillas especiales diseñadas en función del uso y los requisitos de la aplicación. El código de la plantilla se puede reutilizar cada vez que trabaja con la nueva aplicación.
Los patrones de diseño Cocoa más utilizados son: Singleton, delegate, factory, decorator, adapter, facade, observer, memento y hay muchos más
Más información acerca de la pregunta: Cocoa Design Patterns
9- ¿Cómo determinar el lugar de la usabilidad en el diseño?
Una entrevista iOS no se trata solo de código. Puede haber preguntas sobre áreas de desarrollo.
Respuesta esperada
Para determinar la usabilidad, necesitas dividir el proceso de diseño:
- Piensa como usuario y luego diseña la UX.
- Los usuarios son personas, no tus datos demográficos.
- Piensa en todas las situaciones en las que será útil la aplicación.
- Sigue trabajando en la usabilidad incluso después del lanzamiento.
10- ¿Cuáles son los principios SOLID en una aplicación iOS?
Los principios SOLID son conceptos relativamente antiguos, pero increíblemente útiles para aplicar a cualquier base de código OOP en cualquier idioma.
Respuesta esperada
S: Principio de responsabilidad única (SRP), cada clase una responsabilidad única.
O: Principio abierto/cerrado (OCP), entidades abiertas para extensión, pero cerradas para modificación.
L: Principio de sustitución de Liskov (LSP), funciones tipo base deberían poder usar subtipos del tipo base sin saberlo.
I: Principio de segregación de interfaz (ISP), muchas interfaces especializadas son mejores que una universal.
D: Principio de inversión de dependencia (DIP), los módulos de nivel superior es independiente de los módulos de nivel inferior.
Cuidado en esta pregunta:
No se trata solo de nombrar los principios, sino también de dar una breve descripción de cada uno.
Más información acerca de la pregunta:
SOLID: 5 Principios esenciales para desarrollar código de calidad
11- ¿Cuáles son los estados de ejecución comunes en iOS?
Casi nadie responde bien esta pregunta. Normalmente es mejor dar un ejemplo.
Respuesta esperada
Inactivo: La aplicación se ejecuta en primer plano sin recibir ningún evento.
Activo: La aplicación se ejecuta en primer plano y recibe eventos.
background: La aplicación ejecuta código en segundo plano.
Más información:
12- ¿Qué es MVC?
Este es un patrón de diseño fundamental, lo más probable es que todos los entrevistadores preguntan sobre esto independientemente del tipo de vacante solicitada.
Respuesta esperada
Model View Controller es un patrón de diseño de software que Apple eligió a sus inicios como el enfoque principal para el desarrollo de aplicaciones iOS.
Los modelos son responsables de los datos de dominio o una capa de acceso a datos, que pueden manipular los datos; las vistas dibujan cosas en la pantalla; los controladores gestionan el flujo de datos entre el modelo y la vista.
El modelo y la vista nunca se comunican entre sí directamente y dependen de un controlador para coordinar la comunicación.
Cuidado en esta pregunta:
MVC es un patrón de diseño de propósito general, pero es solo un patrón de diseño para la capa de vista y usarlo solo limita la arquitectura y a menudo conduce al notorio problema del «Controlador de Vista Masiva».
Saber qué es MVC es básico para cualquier desarrollo de iOS, pero muy poco usado actualmente, explora las otras alternativas: MVVM, MVP, VIPER y VIP.
Más información acerca de la pregunta: Massive View Controller
13- ¿Qué opciones tiene para implementar el almacenamiento y la persistencia en iOS?
Los entrevistadores hacen esta pregunta para comprender su comprensión de las herramientas y formas que tiene disponibles para almacenar y conservar datos en iOS.
Respuesta esperada
Por lo general, existen las siguientes formas de almacenar datos en orden de simple a complejo:
- Arrays en memoria, diccionarios y otras estructuras de datos en memoria
- UserDefaults / keychain
- Almacenamiento de archivos en disco
- Core Data, Realm
- SQLite
Cuidado en esta pregunta:
Debe conocer las diferentes formas en que podría almacenar datos en iOS y sus ventajas o desventajas. No se limite a una sola solución a la que está acostumbrado (como Core Data, por ejemplo). Sepa cuando uno es preferible a otro.
Más información acerca de la pregunta:
- Collection Types (docs.swift.org)
- Core Data (developer.apple.com)
- Realm (realm.io)
- SQLite With Swift Tutorial: Getting Started (raywenderlich.com)
14. ¿Cuál es la diferencia entre strong, weak, unowned, readonly?
Una entrevista también puede abordar estos problemas. Los atributos de propiedad asignada determinan cómo se administrará la memoria para esta propiedad.
Respuesta esperada
Strong significa que aumentará el recuento de referencias al objeto en uno y su valor se mantendrá durante la vida útil del objeto.
Weak significa que apunta a un objeto, pero sin incrementar el recuento de referencias. A menudo se utiliza al crear relaciones entre padres e hijos.
Unowned: al igual que las referencias weak, no incrementar el recuento de referencias. Sin embargo, tiene el beneficio adicional de no ser un Opcional.
Readonly: se utiliza para establecer la propiedad inicialmente, pero luego no se puede cambiar.
Puedes encontrar más detalles: Preguntas de la entrevista: ¿Qué son las propiedades y las variables de instancia en Objective-C y Swift?
Cuidado en esta pregunta:
No tienes que profundizar demasiado en los detalles de las implementaciones de propiedades y las características en Swift y Objective-C, pero debes conocer al menos los conceptos básicos de las referencias.
15- ¿Cuál es la diferencia entre bounds y frame?
En principio, una entrevista puede comenzar con esta pregunta. Es una pregunta bastante común, así que no pruebes tu suerte, ¡aprende!
Respuesta esperada
Solo hay una pequeña diferencia entre estos dos elementos. Los bounds están limitados a su propio sistema de coordenadas, mientras que un frame está relacionado con la supervista en la que está contenido.
Cuidado en esta pregunta:
Bounds en UIView tiene una ubicación (x, y) y un tamaño (ancho, alto) relativo a su propio sistema de coordenadas (0,0).
Un frame en una UIView tiene una ubicación (x, y) y un tamaño (alto, ancho) en relación con el elemento que contiene.
16- ¿Cuáles son las mejores prácticas de seguridad durante la programación de iOS?
Como desarrollador profesional, debe saber cómo prevenir los ataques man-in-middle en ataques públicos.
Respuesta esperada:
Se debe establecer comunicación con servidores remotos solo a través de HTTP y SSL, y asegurarse de que los datos confidenciales estén altamente seguros y protegidos mediante un proceso de sobrescritura de métodos.
Además, verificar que todas las validaciones de datos se hayan enviado ejecutándose en el lado del servidor.
17- ¿Qué significa KVC y KVO en iOS?
Esta pregunta evalúa el conocimiento de los diferentes patrones de mensajería utilizados en iOS.
Respuesta esperada
KVC es la codificación de valores clave. Mecanismo usado para acceder a las propiedades de un objeto usando cadenas en tiempo de ejecución en lugar de tener que conocer estáticamente los nombres de propiedad en tiempo de desarrollo.
KVO significa Observación de valores clave y permite que un controlador o una clase observe los cambios en el valor de la propiedad.
Más información acerca de la pregunta: KVC and KVO in iOS
18- ¿Cómo se puede definir un protocolo para la programación iOS?
Los protocolos permiten definir los métodos de las clases.
Respuesta esperada
Es similar a la interfaz Java que define una lista de métodos necesarios que deben ser implementados por una clase. Se puede implementar mediante cualquiera de las clases o métodos sin conocer su tipo.
Cuidado en esta pregunta:
También puede hablar sobre la extensión del protocolo. Debe comprender exactamente quiénes son los delegados y cómo funciona esta relación.
19- ¿Cuál es la diferencia entre delegados y KVO?
Con esta pregunta, el entrevistador está evaluando su conocimiento de los diferentes patrones de mensajería utilizados en iOS.
Respuesta esperada
Ambas son formas de tener relaciones entre objetos. Los delegados son relación uno a uno en la que un objeto implementa un protocolo de delegado y otro le envía mensajes, utilizando métodos definidos por el protocolo.
los KVO es una relación de muchos a muchos en la que un objeto transmite un mensaje y uno o más objetos lo escuchan y reaccionan. KVO no se basa en protocolos. KVO es el primer paso y el bloque fundamental de la programación reactiva (RxSwift, ReactiveCocoa, etc.)
Más información acerca de la pregunta:
20- ¿Cómo y cuándo serializar y mapear datos en iOS?
La serialización de datos es algo común al crear aplicaciones iOS. Los entrevistadores hacen esta pregunta para ver si reconoce dónde es adecuado y conoce las tareas necesarias cuando se trabaja con datos, ya sea en redes o datos de almacenamiento.
Respuesta esperada
Hay dos escenarios más comunes en los que necesitaría serializar y mapear datos en aplicaciones iOS, al recibir o enviar datos en la capa de red (como JSON o XML u otro) y persistir o recuperar modelos en la capa de almacenamiento (Data, NSManagedObject).
Más información acerca de la pregunta: NSJSONSerialization
Consejos para la entrevista:
A continuación, algunos consejos que pueden ayudarte en tu entrevista iOS:
- Debes estar bien versado en teoría, porque aprender a codificar no es difícil.
- Investiga la empresa y demuéstrale al entrevistador que estás interesado en trabajar para él.
- Piensa abiertamente. Si solo dices la respuesta, no significa nada. Cuando hablas abiertamente, el entrevistador analiza cómo piensas y cómo buscas soluciones en ciertas situaciones.
- Ensaya antes de ir a la entrevista. Prepárate con las preguntas de entrevista iOS relacionadas y trata de responderlas con claridad.
Conclusión
Estas 20 preguntas más comunes de entrevista iOS, están diseñadas para ayudar a todos los desarrolladores a encontrar una respuesta.
Algunas de los temas que he comentado no son tan usados o conocidos actualmente, desde la salida de Swift, pero para programadores con más años de experiencias son muy conocidas en el momento de programar con Objetive-c
Se pueden utilizar, por ejemplo, para llenar el vacío que se produce cuando se discuten temas técnicos complejos, por lo que el candidato debe pensar inmediatamente en las respuestas antes de la entrevista.