¿Qué preguntas hace el desarrollador junior de iOS en las primeras entrevistas?

¿Qué quieren escuchar los empleadores? ¿Qué necesita saber? Escriben mucho en Internet, pero en realidad el factor humano juega un papel importante y estás atrapado en preguntas simples para las que no estabas preparado.


Hola Habr En los últimos 7 meses, he eludido las entrevistas, en algún lugar de más de 20. Todos estaban en la posición de desarrollador Junior iOS. Como resultado, después de numerosos tormentos y pull-ups de varios matices de desarrollo móvil, me dieron una oferta a la compañía, lo cual me alegró muchísimo.

A mí, como una persona sin experiencia temprana en el desarrollo, un economista capacitándome a mí mismo, me gustaría compartir y dejar un poco claro a una persona que simplemente decidió tomar este camino, lo que debe esperar en las entrevistas y qué preguntas definitivamente necesita plantear o aprender.

Escribiré aquí solo para puestos de desarrollador Junior Swift para iOS. Otras entrevistas sobre esas posiciones no pasaron.

Enumeraré cosas que con una probabilidad del 99% le preguntarán, luego agregaré algunas palabras sobre cada elemento.

Vamos a empezar.

Lo que definitivamente te preguntarán (bueno, si de repente te olvidas de preguntar, obviamente esperarán de ti que lo sepas):

  • Ver el ciclo de vida del controlador
  • OOP
  • La diferencia entre clase y estructura.
  • Protocolos
  • Formas de transferir datos entre controladores
  • Storyboard o xib
  • Diseño automático
  • Guardar datos (CoreData, Realm, UserDefault, etc.)
  • Solicitudes y trabajo con datos recibidos del servidor (URLSession, Alamofire, Codable)
  • Cierres
  • Opcionales
  • Extensiones
  • Genéricos
  • ARCO
  • Multithreading (superficialmente, nadie requerirá un conocimiento profundo a partir de junio)
  • débil, sin dueño, privado, privado de archivos
  • La diferencia entre marco y límites
  • Cocoapods (SwiftPacketManager, carthage)
  • Git

Discutiremos brevemente algunos puntos.

  • Ver el ciclo de vida del controlador

Todo es simple aquí. Ellos quieren saber de usted:

viewDidLoad()
viewWillAppear(_ animated: Bool)
viewDidAppear(_ animated: Bool)
viewWillDisappear(_ animated: Bool)
viewDidDisappear(_ animated: Bool)

Por supuesto, todavía hay métodos, pero en principio serán suficientes.

  • OOP

Puedes buscar fácilmente en Google este momento y leer lo que hay allí.

  • Clase vs estructura

Aquí, de hecho, todo parecía ser simple, pero realmente necesitas saber en qué se diferencian. Debe comprender al menos en un ejemplo básico qué producirá print () y por qué.

let customClass = EasyQuestion()
let a = customClass
let b = a
b.someProperty = 4
print(a.someProperty)

Debe saber qué impresión le dará en estos dos casos.

También será una ventaja si agrega de quién se pueden heredar ViewControllers y de quién no. (PD de Struct'a - no)

  • Protocolos

Lea lo que es y para qué se utilizan (aunque creo que ya ha oído hablar de ellos).
También pueden preguntar sobre la extensión del protocolo. Debe comprender exactamente quiénes son los delegados y cómo funciona esta conexión.

  • Formas de transferir datos entre controladores

Te bastará con nombrar una pareja. Delegue métodos, cierres, a través de init si creamos un ViewController a través de xib, etc.

  • Storyboard o xib

Aquí probablemente se le preguntará si alguna vez ha creado un ViewController a través de xib. No le pedirán detalles y detalles. Junio, todavía no sabes mucho. Lo principal que deben entender es si puedes escribirlo. Bueno, será necesario dar una respuesta por qué crea a través de xib o viceversa.

  • Diseño automático

Aquí puedes pintar durante mucho tiempo sobre este tema. Te aconsejo que busques en Google lo que es. Comprende la esencia general, esto será suficiente.

  • Guardar datos (CoreData, Realm, UserDefault, etc.)

Esta pregunta te perseguirá por mucho tiempo. Lo más importante es saber cuándo usar UserDefault, qué guardar en KeyChain, qué es Realm. Guarde los datos un par de veces en los proyectos de su hogar en CoreData para tener una idea general de qué tipo de animal es y cómo domesticarlo.

  • Solicitudes y trabajo con datos recibidos del servidor (URLSession, Alamofire, Codable)

Aquí necesitas saber qué es POST, GET. Esto será preguntado.

Debe poder manejar los errores a pedido. La opción ideal es si le han dado los Términos de Referencia de la casa antes de la entrevista. Allí puedes demostrar todo el poder de tu mente.

El alamofire también es común en los proyectos, por lo que debería poder usarlo.
Debería poder analizar los datos que el servidor le devuelve utilizando Codable o algunas bibliotecas en el espíritu de SwiftyJSON u ObjectMapper.

  • Cierres (cierres)

Este es un punto muy importante. Puede suceder que realmente lo use a menudo, pero no profundizó en la esencia de este problema. Si sabes cómo escribirlos y cómo usarlos, ¡genial! Pero, ¿cómo le demuestra al empleador que lo sabe si no puede explicar en términos simples de qué se trata? Le aconsejo que susurre a fondo SwiftBook sobre este tema.

  • Opcionales

Este debería ser uno de los artículos más fáciles para usted. Debe saber acerca de este "Gato Schrödinger" y cuáles son los métodos de implementación. Asegúrese de decirles que no es partidario de Force Unwrap y desprecia profundamente a las personas que son tan "basura" en el proyecto.

  • Extensiones

Es poco probable que esto parezca un problema por separado. Lo más probable es que esté en conjunción con otros problemas (por ejemplo, una pregunta sobre protocolos). Escribe un par de veces Extension'y. Te aseguro que no hay nada complicado allí. Definitivamente lidiarás con este problema.

Pero, por ejemplo, tuve casos en que me preguntaron por qué las grandes mentes se le ocurrieron.
Puede marcar en alguna parte tal respuesta: "Para expandir la clase a la que no tenemos acceso". Por ejemplo, eplovskie nativo, en el que no podemos entrar, pero queremos expandirlo un poco para nuestra conveniencia.

  • Genéricos

¿Para qué son? ¿Qué es? Cuando lees sobre genéricos en SwiftBook, te puede parecer que esto es algo súper complicado para tu mente simple, pero en realidad todo es mucho más simple allí. Lo principal es simplemente comprender la esencia de lo que está escrito. Y siempre puedes espiar cómo crearlo. No se verá obligado a escribirlo en una entrevista. Solo quieren escuchar su comprensión de este problema.

  • ARC (superficialmente, nadie requerirá un conocimiento profundo a partir de junio)

Aquí quieren saber de usted una idea general de conteo de enlaces. Cómo aumenta y qué sucederá si el "contador" es 0. No le pedirán que se sumerja debajo del capó, y si lo hacen, es poco probable que comprendan que junio está sentado frente a ellos.

Aquí quieren entender que puede encontrar correctamente errores en el código cuando su ViewController, por ejemplo, no se "inicializa" (se mata, desaparece, se va) "accidentalmente".

  • Multithreading

Cómo transferir del hilo principal al fondo. Hay muchos matices. No lo entenderá todo de una vez, lo principal es lidiar con GCD y colas de envío. Aquí hay un gran artículo sobre este tema.

  • débil, sin dueño, privado, privado de archivos

Qué débiles son ellos. ¿Cuál es la diferencia entre débil y sin dueño?

¿Qué son privados y privados de archivos? Esta es una pregunta simple. Puede leer en Internet, no hay nada complicado, pero aún necesita saberlo.

También puede incluir la cuestión de la pereza aquí. Aquí todo es igual de simple. Léelo!

  • La diferencia entre marco y límites

Esta pregunta puede, en principio, comenzar una entrevista. Pero agrego que esta pregunta sorprendentemente no era tan común como las otras. Pero al susurrar en Internet, noté que esta es una pregunta bastante común, así que no pruebes tu suerte, ¡aprende! Piensa que seguramente te preguntarán. Aquí no hay nada complicado, solo necesita comprender la esencia (sí, sí, como con todos los demás temas).

  • Cocoapods (SwiftPacketManager, carthage)

Definitivamente deberías poder incorporar bibliotecas a tu proyecto. El más popular es CocoaPods. En principio, será suficiente para que lo conozcas. Pero si desea expandir el rango, también puede ver SwiftPacketManager, carthage.

  • Git

Bueno, aquí ni siquiera sé qué se puede agregar. Usa el git, haz commits (cuanto más, mejor).

Debe poder crear nuevas ramas, fusionar (fusionar) con otras ramas y resolver (resolver) conflictos de fusión.

En principio, he enumerado las preguntas más populares que he encontrado. Por supuesto, nadie ha cancelado el factor humano y pueden atraparte en cualquier otra pregunta, pero si estás bien versado en estos temas, entonces ya estás 90% listo. Todavía estoy en junio y entiendo que mi opinión está lejos de ser experta, pero decidí compartir con otros lo que sé con la esperanza de que sea muy útil para alguien y ayude a superar la etapa de una entrevista técnica.

¡Aprende, desarrolla y ayuda a los demás!

All Articles