Colección de citas famosas - Slogan de motivación - ¿Cuáles son las preguntas de la entrevista de iOS?

¿Cuáles son las preguntas de la entrevista de iOS?

Preguntas de la entrevista de iOS

1. ¿Pueden las clases de Object-c tener herencia múltiple? ¿Se pueden implementar múltiples interfaces? ¿Qué es la categoría? Al reescribir una clase, ¿es mejor utilizar herencia o clasificación? ¿Por qué?

Respuesta: No, se pueden implementar múltiples interfaces; la categoría es una clasificación y, en general, la clasificación es buena. La reescritura con categoría solo afectará la categoría en sí y no afectará la relación entre otras clases y la original. clase. .

2. ¿Cuál es la diferencia entre #importar e #incluir? ¿Cuál es la diferencia entre #importar> e #importar""?

Respuesta: #import es la palabra clave para que oc importe archivos de encabezado, #include es la palabra clave para que c/c++ importe archivos de encabezado, #import se importará automáticamente una vez, no se importará repetidamente y No causa compilación cruzada, @class le dice al compilador la declaración de una determinada clase y solo verifica el archivo ejecutable de la clase cuando se ejecuta. Cuando dos archivos de clase tienen una dependencia circular (A se refiere a B y B se refiere a. A), es necesario usar @class.

Para hacer referencia a una clase en la interfaz, use @class, que usará la clase como un tipo en el archivo que implementa la interfaz, si es necesario. haga referencia a las variables de entidad o métodos de esta clase, aún necesita importar la clase declarada en @class.

#import>Archivo de sistema de referencia, que se utiliza para hacer referencia al archivo de encabezado que viene con el sistema. El compilador buscará el archivo en el directorio de archivos del sistema.

#import. "" : Los archivos definidos por el usuario se citan entre comillas dobles. El compilador buscará primero en el directorio del usuario y luego en el directorio de instalación.

2.1 Referencias repetidas (

ClassA y Se hace referencia a ClassB al mismo tiempo que ClassC, cuando se hace referencia a ClassA en ClassD al mismo tiempo sin un procesamiento de referencia repetido, la compilación de ClassB generará un error de referencia repetida a ClassC.

#import resuelve este problema

)

3. ¿Cuáles son los significados de las declaraciones de variables de clase @protected, @private, @public y @package?

Respuesta: El alcance de las variables es diferente. Los métodos @protected en esta clase y todas las subclases pueden acceder directamente a dichas variables. Este es el valor predeterminado.

@private Los métodos pueden hacerlo. acceder a tales variables, las subclases no pueden.

Además de sus propios métodos y subclases, también se puede acceder a @public mediante métodos de otras clases u otros módulos

@package

Declarado por 4. id ¿Qué propiedades tiene el objeto?

Respuesta:

El objeto declarado por Id tiene características de tiempo de ejecución, es decir, puede apuntar a cualquier tipo de objeto objcetive-c

5. MVC? ¿Cuáles son las características? ¿Por qué se usa mucho en iPhone?

Respuesta: Es un patrón de diseño que diseña el código de acuerdo con la estructura de la vista y el controlador del modelo

6 Para la declaración NSString* testObject = [[NSData alloc] init. ]; ¿Qué tipo de objeto es testObject en tiempo de compilación y de ejecución?

Respuesta: nsstring, nsdata

7. ¿Qué es la liberación segura?

Respuesta: [_instance release], _instance = nil;

8. ¿Por qué algunas funciones de Objective-C exclusivas de 4.0 informan errores cuando se ejecutan en 3.1 y las funciones exclusivas de 4.0? ¿La clase no informará un error al asignar memoria en 3.1? ¿Cuál es el resultado de la tarea?

En tiempo de ejecución, debido a que no hay una implementación de función correspondiente en el SDK 3.1, no se puede encontrar el puntero @selector correspondiente.

Y debe asignar memoria. términos del mecanismo de creación

9. ¿Por qué la función C exclusiva de 4.0 se ejecuta en una máquina 3.1 sin informar un error (sin llamarla?), mientras que el nombre de clase exclusivo de 4.0 se ejecuta en una máquina 3.1. ¿Se produce un error tan pronto como se ejecuta?

10. ¿Cómo detectar una excepción? ¿Cuál es la sobrecarga en diferentes estructuras de CPU? ¿Existe algún método similar en C?

11.¿Cuáles son los significados de los atributos retener, copiar y asignar en propiedad? ¿Cuál es la diferencia? ¿Cómo convertirlo en un método get/set? ¿Hay alguna precaución?

- (void)setInstance:(id)instancia{

if (_instance != instancia) {

[_versión de instancia];

_instance = [retener instancia];

}

}

copiar

Copiar código

- (void)setInstance:(id)instancia{

if (_instance!= instancia) {

[_versión de instancia];

_instance = [copia de instancia] ;

}

}

assgin

Copiar código

- (void)setInstance:(id) instancia{

if (_instance != instancia) {

_instance = instancia;

}

}

12.¿Qué es la delegación? ¿Qué atributos se utilizan en la declaración de propiedad delegada? ¿Por qué?

asignación delegada

13. ¿Cuál es la diferencia entre copia superficial y copia profunda?

Respuesta: Copia superficial: solo se copia el puntero al objeto, no el objeto al que se hace referencia en sí.

Copia profunda: Copia el propio objeto referenciado.

14. ¿Existe un concepto de clase base virtual en Cocoa? ¿Cómo implementarlo de manera concisa?

Sin delegado

15. ¿Cuál es la diferencia entre el grupo de lanzamiento automático y GC? ¿Existe GC en iPhone? ¿Cuál es la diferencia entre [liberación de piscina] y [drenaje de piscina]?

Sin GC

16

1

2

3

4.

5

6

7

for(int índice = 0; índice < 20; índice ++){

NSString *tempStr = @”tempStr”;

NSLog(tempStr);

NSNumber *tempNumber = [NSNumber numberWithInt:2];

NSLog(tempNumber);

}

¿Qué hay de malo en este código? ¿Causará pérdidas de memoria (multiproceso)? Al realizar un bucle grande en un dispositivo con poca memoria, ¿es mejor escribir el grupo de liberación automática dentro o fuera del bucle? ¿Por qué?

17. ¿Cuáles son los principios de la gestión de la memoria? De acuerdo con las reglas predeterminadas, ¿los objetos generados por palabras clave deben liberarse manualmente? ¿Cómo evitar eficazmente las pérdidas de memoria cuando se combinan con propiedades?

Respuesta: Quien lo solicite será liberado.

18. Antes de que se libere un objeto, si se agrega al Centro de notificaciones, ¿qué problemas pueden ocurrir si el objeto no se elimina en el Centro de notificaciones?

19. Cómo implementar una clase singleton. Dar ideas.

20. ¿Qué es la serialización o Acrchiving, para qué se puede utilizar, cómo combinarlo con la copia y cuál es el principio?

21. ¿Cuáles son las precauciones?

22. Hay dos cosas que hacer en el iPhone. ¿Es más eficiente hacerlas secuencialmente en un hilo o en dos hilos? ¿Por qué?

23.¿Qué es runloop? Cuando se llama a una función asincrónica en una función en el hilo principal, ¿cómo puedo bloquear el hilo actual y también responder al evento del temporizador, evento táctil, etc. del hilo actual?

24. persistir datos en la plataforma ios ¿Existe alguna conexión necesaria entre coredata y sqlite? ¿Coredata es una base de datos relacional?

25. Describe el ciclo de vida que atraviesa un objeto nulo cuando es generado por el constructor de interfaz, cargado en el espacio de ejecución del programa y finalmente liberado.

26. ¿Kvo es síncrono o asíncrono? ¿La notificación es una notificación en todo el espacio del proceso? ¿Qué pasa con kvo?

27. ¿Qué es kvc? ¿Qué es kvo?

28. ¿Qué es la cadena de respuesta?

29. ¿Cómo se comunican los procesos en Unix?

¿Es preciso el período de intervalo de 30 temporizadores? ¿Por qué? ¿Cómo implementar un temporizador preciso?

31.¿Qué patrones de diseño utiliza UIscrollVew? ¿Aún puedo encontrar algo similar en la biblioteca de la fundación?

32 Si desea desarrollar un software similar a eclipse, se admite la estructura del complemento. Y abierto al desarrollo de terceros. ¿Cómo lo diseñarías? (Idea general)

33. ¿Cómo gestiona Objective-C la memoria? Cuéntenos sus opiniones y soluciones.

Hay tres formas principales de gestión de memoria en Objective-C: ARC ( Conteo automático de memoria), conteo manual de memoria, grupos de memoria.

34. ¿Cuál es el método para crear un hilo en el Objeto C? Si el código se ejecuta en el hilo principal, ¿cuál es el método? Si desea retrasar la ejecución del código, ¿cuál es el método?

Hay tres formas de crear subprocesos: use NSThread para crear, use el envío de GCD, use NSOperation subclasificado y luego agréguelo a NSOperationQueue, ejecute el código en el subproceso principal, el método es performSelectorOnMainThread, si lo desea; quiero retrasar la ejecución El código puede usar performSelector:onThread:withObject:waitUntilDone:

35. ¿Qué son KVO y KVC?

Respuesta: kvc: la codificación clave-valor es un acceso indirecto. a las propiedades de un objeto. Una cadena que identifica una propiedad, en lugar de llamar a un método de acceso, directamente o mediante un mecanismo de acceso a variables de instancia.

El código del programa se puede simplificar en muchos casos.

kvo: Mecanismo de observación de valores clave, que proporciona un método para observar cambios en un determinado atributo, simplificando enormemente el código.

Uno de los lugares específicos donde lo he usado es para monitorear el estado de cambio de los clics en los botones.

Por ejemplo, un botón que personalicé

[self addObserver:self forKeyPath:@"highlighted" options:0 context:nil]; KVO

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)cambio de objeto:(NSDictionary *)cambiar contexto:(void *)context

{

if ([keyPath isEqualToString:@"highlighted"] ) {

[self setNeedsDisplay]

}

}

<; p>Para el sistema, el valor correspondiente se cambia según la ruta clave. En teoría, es el mismo que el mecanismo kvc.

¿Cómo encuentra el mecanismo kvc el valor a través de la clave:

36. ¿Diferencia entre método y selector?

¿Cuál es la diferencia entre método y selector?

Respuesta: selector es el nombre de un método y método es una combinación que incluye nombre e implementación.