¿Qué puede aprender al entrevistar a ingenieros de desarrollo de iOS?
Ya hay muchas respuestas excelentes a esta pregunta, pero entrevisté a muchos desarrolladores de iOS la semana pasada y preparé algunas preguntas, así que no pude evitar publicarlas...
En primer lugar, necesito hacer una declaración. Lo interesante es que la mayoría de los entrevistados esta vez tienen de 1 a 3 años de experiencia en desarrollo de iOS y no necesitan encontrar un verdadero experto, por lo que creo que la mayoría. Algunas de las preguntas que preparé son relativamente básicas y pueden entenderse a este nivel humano. Si también es un practicante con aproximadamente 3 años de experiencia en desarrollo, también puede intentarlo.
Al inicio de la entrevista, pediré al entrevistador que elija un proyecto con el que esté más familiarizado y nos presente su arquitectura técnica, así como los módulos y trabajos específicos en los que participa el entrevistador. Como odio tener que presentarme durante las entrevistas, normalmente voy directo al grano y empiezo a hablar sobre el proyecto. De hecho, muchos desarrolladores no entienden el significado específico de la "arquitectura" que mencioné. Algunas personas hablan de muchas funciones del producto y otras lo hacen en términos muy generales (por ejemplo, seguir la arquitectura MVC, etc.). .). En términos generales, este tipo de veces los interrumpía y les pedía directamente que me contaran sobre la estructura jerárquica de la aplicación, o los módulos principales, etc.
Haré dos preguntas más adelante:
1. Cuente una historia sobre un momento en esta aplicación en el que el usuario activó un evento, provocó una solicitud de servicio y luego obtuvo la devolución del servidor. y El proceso de actualización de la interfaz de usuario. Sea más detallado, como por ejemplo, ¿qué tipos de procesamiento se han realizado los datos y cuál es el formato de cada transferencia?
2. ¿Cómo maneja la APP en la que participa el inicio simultáneo de múltiples servicios?
Luego pídale al entrevistador que hable sobre la estructura de la interfaz de la aplicación. Esto es más informal.
Después de preguntar sobre el proyecto, comencemos con las preguntas de conocimientos básicos~
1. (¿Para qué se creó el arco?)
2. Explique la diferencia entre las siguientes palabras clave: asignar vs débil, __bloque vs __débil
3. arco ¿Significa lo mismo?
4. ¿El uso de atomic es necesariamente seguro para subprocesos?
5. Describe un ejemplo de un ciclo de retención que hayas encontrado. (No mientas, debes haberlo encontrado)
6. (void)load (void)inicializar;
7. ¿Por qué se llama llamada a función en otros lenguajes, pero en Objective C envía mensajes a objetos (o habla sobre la comprensión del tiempo de ejecución)?
8. ¿Swizzling?
9. ¿Cuál es la relación entre UIView y CALayer?
10. ¿Cómo agregar esquinas redondeadas a UIImageView con alto rendimiento? (¡No digas Layer.cornerRadius!)
11. ¿Cuáles son los efectos de usar drawRect? (Esto puede ser profundo o superficial, al menos debes haberlo usado...)
12. ¿Cuál es la lógica de cargar imágenes en UIImageView en ASIHttpRequest o SDWebImage? (Sería mejor colocar UIImageView dentro de UITableViewCell)
13. ¿Podrías diseñar una memoria caché de imagen simple (se debe mencionar la estrategia de eliminación)?
14. tu experiencia usando Instrument para optimizar el rendimiento de la animación (no me preguntes qué es Instrument)
15.
16. viewWillLayoutSubView siempre lo sabes. .
17. ¿Qué tipos de colas hay en GCD? ¿Alguna vez ha creado usted mismo una cola en serie? ¿Cuál es el modelo de subprocesos detrás de esto?
18. ¿Has usado alguna vez coredata o sqlite? ¿La lectura y la escritura están interconectadas? ¿Alguna vez te has encontrado con un punto muerto? ¿Cómo solucionarlo?
19. ¿Cuál es la diferencia entre publicación http y obtención? (Hay bastantes diferencias, cuénteme más)
20. Sé que no ha estado expuesto a estructuras de datos algorítmicas desde que se graduó de la universidad, pero dígame qué es un árbol de búsqueda binaria. Tiempo de búsqueda ¿Cuál es la complejidad? ¡Me encantaría saberlo!