Análisis del segundo concurso de cuestionarios de Android del stand de HeadHunter en Mobius 2018 Moscú

Fuera de la ventana hay humedad y aguanieve primaverales, pero en el otoño Mobius en el puesto de HeadHunter hacía mucho calor. Publicamos la primera parte del cuestionario , hoy publicamos la segunda, para que pueda estirar el cerebro antes de futuras conferencias.
Vamos!



Vamos!



Pregunta 1

La respuesta
 

Explicaciones
En general, Android fue desarrollado originalmente por Android Inc. Los creadores planearon que se usaría para crear "cámaras inteligentes". En 2005, Google compró Android Inc y cambió el vector de aplicación de la plataforma hacia dispositivos móviles.

"Exactamente la misma plataforma y sistema operativo que creamos para las cámaras, se convirtió en Android para teléfonos móviles", dijo el cofundador de Android, Andy Rubin.

Estadísticas de respuesta




Pregunta 2

La respuesta
 Android Debug Bridge 

Explicaciones
ADB (Android Debug Bridge) es una herramienta de línea de comandos que ejecuta comandos en dispositivos Android. Este es un programa cliente-servidor que consta de tres componentes:

- un cliente que le permite enviar comandos;
- un demonio que ejecuta comandos en un dispositivo;
- Un servidor que gestiona las comunicaciones entre el cliente y el demonio.

Estadísticas de respuesta




Pregunta 3

La respuesta
 Android Package 

Explicaciones
APK (Paquete de Android) es un formato de archivo ejecutable para Android. Equipado con aapt (herramienta de empaquetado de activos de Android). Condicionalmente, el trabajo de esta utilidad se puede dividir en dos etapas:
- Compilación En esta etapa, se están preparando recursos: se genera la clase R, los recursos XML se traducen a formato binario, procesamiento PNG, etc.
- Embalaje (enlace). Todos los archivos intermedios creados en la etapa de compilación se empaquetan en el APK.

El proceso de creación de una aplicación de Android se describe en la documentación .

Estadísticas de respuesta




Pregunta 4


La respuesta
 Agera 

Explicaciones
Agera es un marco de programación reactivo para Android. No incluido en JetPack.

Jetpack : un conjunto de bibliotecas que simplifican el desarrollo de nuevas aplicaciones para Android.

Slices : plantillas de IU para incrustar en otras aplicaciones.

Android KTX es un conjunto de características de extensión de Kotlin que simplifican el desarrollo de Android.

El enlace de datos es una tecnología con la que podemos enlazar automáticamente los datos directamente en código XML.



Estadísticas de respuesta




Pregunta 5


La respuesta
 val hh = 1. 

Explicaciones
La pregunta estaba en el horizonte de los lenguajes de programación.
La opción `hh = 1` se puede encontrar en Python,` def hh = 1` - en Groovy, y la última opción - en Java, en la que debemos especificar el tipo de datos.

Estadísticas de respuesta




Pregunta 6


La respuesta
 Remote 

Explicaciones
Normal : esta categoría incluye permisos que no requieren acceso a datos confidenciales del usuario o que no afectan el funcionamiento de otras aplicaciones. El sistema otorga automáticamente estos permisos a la aplicación durante la instalación y los usuarios no pueden revocarlos.

Firma : el sistema proporciona automáticamente a la aplicación durante la instalación, así como los permisos normales. Sin embargo, la diferencia es que no todas las aplicaciones pueden obtener estos permisos. Para hacer esto, debe estar firmado con el mismo certificado que la aplicación que anunció este permiso.

Peligroso : esta categoría incluye permisos que requieren acceso a datos confidenciales del usuario o pueden afectar el funcionamiento de otras aplicaciones.

Especial es SYSTEM_ALERT_WINDOW y WRITE_SETTINGS.

La documentación

Estadísticas de respuesta




Pregunta 7


La respuesta
 Principle Of Least Astonishment 

Explicaciones
Oh, esas cinco letras.

Principio de responsabilidad individual: una clase debe hacer una cosa.
Principio cerrado de O Pen: las entidades de software deben estar abiertas para la expansión, pero cerradas para el cambio.
Principio de sustitución de L iskov (principio de sustitución de Barbara Liskov): el comportamiento de la clase heredera no debe contradecir el comportamiento especificado por la clase padre.
Principio de segregación de interfaz: las entidades de software no deben depender de métodos que no utilizan
Principio de inversión de dependencia: las abstracciones no deben depender de los detalles. Los detalles deben depender de las abstracciones.

Pero el "Principio de menos asombro" no está incluido en SOLID . Esta regla establece que si el propósito de un elemento no está claro, entonces se debe esperar su comportamiento para el usuario (principio de menor sorpresa).

Estadísticas de respuesta




Pregunta 8


La respuesta
 Slices 

Explicaciones
Sobre enlace de datos y sectores hablamos un poco más alto. Toast y Snackbar son elementos para notificar a los usuarios en las aplicaciones de Android y no pueden integrarse en otras aplicaciones. Aunque se puede mostrar Toast después y después de minimizar la aplicación, a diferencia de Slices, no se puede incrustar en ninguna parte.

Estadísticas de respuesta




Pregunta 9


La respuesta
 64K 

Explicaciones
La especificación del archivo dex limita el número total de métodos a los que se puede hacer referencia a 65.536.
En versiones con Dalvik a bordo (era anterior a la API 21), para evitar esta limitación, es necesario conectar la biblioteca multidex, que se convierte en parte del archivo dex principal y controla el acceso al resto.
ART, a su vez, admite cargar muchos archivos dex fuera de la caja. Al instalar la aplicación, ART escanea los archivos classesN.dex y los compila en un solo archivo .oat para una mayor inicialización de la aplicación.

Multidex

Estadísticas de respuesta




Pregunta 10


La respuesta
 onPostPause() 

Explicaciones
onPostCreate () : se llama después de llamar a onStart () y onRestoreInstanceState ()
onPostResume () - llamado después de llamar a onResume ()
onResumeFragments () es una versión fragmentada del método onResume (). Llamado dentro de onPostResume (), después de que onResume () invoca los fragmentos.

Estadísticas de respuesta




Pregunta 11


La respuesta
   

Explicaciones
9-patch es una imagen .png normal, en la que los bordes de 1px contienen información de servicio, interpretada por el subsistema de gráficos de Android de la siguiente manera:
los bordes izquierdo y superior definen el área de contenido que se ampliará.
los bordes derecho e inferior definen el área en la que se colocará el contenido.

Estadísticas de respuesta




Pregunta 12


La respuesta
 Zygote 

Explicaciones
Zygote es uno de los componentes clave de cualquier sistema Android. Es responsable de inicializar, iniciar servicios del sistema, iniciar y detener aplicaciones de usuario y muchas otras tareas. Tras la inicialización, Zygote forma el tiempo de ejecución de las aplicaciones Java (cargando todas las clases Java del marco) e inicia servicios del sistema de alto nivel (WindowManager, ActivityManager, etc.), y luego se va a dormir. Al recibir una solicitud para iniciar la aplicación, Zygote se copia (bifurca) y lanza la aplicación deseada sobre la copia recibida de la máquina virtual. Este principio de funcionamiento permite reducir el consumo de memoria (Linux copia memoria de copia en escritura durante la bifurcación) y acelera el inicio de la aplicación (la bifurcación del proceso es mucho más rápida que iniciar una nueva máquina virtual).

Estadísticas de respuesta




Pregunta 13


La respuesta
 Libraries 

Explicaciones
Los niveles de la arquitectura de Android se analizaron en el cuestionario anterior en la pregunta 14.

Estadísticas de respuesta




Pregunta 14


La respuesta
  VM 

Explicaciones
Hay dos formas principales de implementar una máquina virtual: pila (Java, .Net CLR) y registro (Lua VM, Dalvik VM). La principal diferencia entre los dos enfoques es el mecanismo utilizado para escribir y recibir operandos y resultados de ejecución de comandos.

La pila VM usa la pila para almacenar operandos. Las operaciones reciben datos de la pila, los procesan y vuelven a colocar el resultado en la pila de acuerdo con la regla LIFO.

Register VM utiliza registros de procesador para asignar operandos. Las instrucciones de dicha VM deben contener explícitamente las direcciones (registros) en las que están contenidos los operandos.

Debido a esta diferencia, las instrucciones en la VM de registro son más rápidas que las instrucciones similares en la VM de pila, pero en promedio ocupan más memoria al especificar explícitamente los operandos.

Otra ventaja del registro VM es la capacidad de almacenar el valor calculado en el registro, lo que ahorra el tiempo necesario para recalcular expresiones.

Razones para elegir una implementación de Dalvik VM como VM de registro ( videos o diapositivas (35.36)

Estadísticas de respuesta




Pregunta 15


La respuesta
 Z 

Explicaciones
JNI - Interfaz nativa de Java - proporciona la capacidad de ejecutar código nativo C / C ++ desde Java, y viceversa.
Para llamar a una función Java desde el código C ++, debe describir correctamente su firma. Supongamos que queremos llamar a una función:

 boolean f(String s) 

Luego, en JNI podemos obtener un enlace a este de la siguiente manera:

 jmethodID myFunc = env->GetMethodID( activityClass, "myFunc", "(Ljava/lang/String;)Z"); 

En cuanto a los tipos en la descripción de la firma: 'B' se usa para el byte, 'C' es char, 'I' es int.

Escriba firmaTipo de Java
Zbooleano
Bbyte
Cchar
Scorta
Yoint
Jlargo
Fflotar
Ddoble
L clase completamente calificada;clase completamente calificada
[tipotipo []
(tipo arg) tipo rettipo de método

( Fuente )

Es curioso que el rastrillo con 'B' y 'Z' sea ​​aparentemente tan popular que los muelles de Android dicen claramente: "Recuerde que 'B' es byte y 'Z' es booleano" .

Bueno, lo recordamos)

Estadísticas de respuesta

Source: https://habr.com/ru/post/443786/


All Articles