¡Imprescindible para los programadores de Android! ¿Qué preguntan las entrevistas de Alibaba Android? La versión completa está abierta para descargar

antecedentes

Coordina en Guangzhou, cinco años de experiencia en desarrollo de iOS.

Recientemente entrevisté a un programador que ha trabajado durante 12 años,

Este anciano tiene 3 años de experiencia en el desarrollo de Java, 2 años de H5, 7 años de experiencia en el desarrollo de iOS y su currículum dice que es competente en Java, iOS y está familiarizado con el desarrollo de H5. No hay un punto técnico específico.

Para ser honesto, estaba ansioso por la entrevista de este anciano, así que me invitaron.

El aura de la entrevista a mi hermano es muy llena, también lo respeto mucho, luego de una ola de auto-presentación, entramos en el tema.

Le pregunté sobre Runloop. Dijo que casi nunca había usado Runloop, así que le di un pequeño ejemplo. La respuesta que me dio mi hermano fue que Baidu podía resolverlo.

Así que le pregunté sobre KVC, pero mi hermano todavía no sabía qué decir, así que le pregunté la copia más básica, débil y otras palabras clave, pero todavía no podía explicarlo claramente. Mi hermano todavía es tan dominante y me dio me la sensación "¿Por qué haces todo, no preguntes a estos inútiles".

Mirando su currículum escrito en él, competente en el desarrollo de Android e iOS, familiarizado con el desarrollo multiplataforma, la interacción js, le pregunté si conocía a Flutter. Dijo que no sabía que no lo había escuchado antes, y finalmente preguntó por el salario esperado de 25k. No sabía qué preguntar, por lo que terminó la entrevista apresuradamente.

Departamento de entrevistas + Puesto : Comercialización-Ingeniero sénior de desarrollo de Android
Sentimientos de la entrevista : La cara en general está relativamente cansada, cara básica, cara cruzada, cara de jefe y 6 entrevistadores (de los 3 lados que me dije al principio + RRHH La cara parece ser un poco peor (¬_¬). El algoritmo todavía se está escribiendo para el jefe, pero afortunadamente el entrevistador no me avergonzó (le expliqué honestamente que el algoritmo no se preparó mucho, oye ...), el algoritmo no es demasiado difícil. El proyecto general tiene más preguntas que las básicas.
Sugerencias para entrevistas : los algoritmos y las bases son el trampolín, los proyectos son piedras de toque y una buena imagen de entrevista es un elemento adicional.
Piense en los elementos enumerados en su currículum, ¿por qué hizo este proyecto? ¿Cuál es el objetivo de este proyecto? Cual es mi plan ¿Cuáles son mis ventajas sobre otros programas? ¿Cuáles son los beneficios del proyecto? ¿Se puede dibujar el diagrama de la arquitectura del proyecto? ¿Son claros los principios del marco principal utilizados en el proyecto antes y después? (Probablemente me salvé del proyecto, y la preparación básica es un poco apresurada T ^ T).
Si se trata de una entrevista presencial o en video, una buena imagen de la entrevista es aún más necesaria. Cuando me reuní con el departamento de TL, mencioné que una de mis ventajas frente a muchos otros entrevistadores es que la imagen de la persona en su totalidad es mejor y no hace que la gente se sienta muy cansada.

[ 1 lado-lado básico ]

  1. Cuando desarrolló Android, ¿cómo adaptó el px del borrador de la interfaz de usuario?
  • ppp: densidad de píxeles de la pantalla, se refiere al número de píxeles por unidad de tamaño especificado en el software del sistema , a menudo es un valor fijo escrito en el archivo de configuración de fábrica del sistema;
  • ppi: también es la densidad de píxeles de la pantalla, pero este es un concepto físico , existe objetivamente y no cambiará. ppp es un valor especificado manualmente por el software después de hacer referencia a la densidad de píxeles físicos, lo que garantiza que la densidad de píxeles físicos en un cierto intervalo utilice el mismo valor en el software;
  • El diseño adaptable dp plus y el diseño proporcional al peso pueden resolver el 90% de los problemas de adaptación . Debido a que no todos los teléfonos móviles 1080P tienen una ppp de 480, por ejemplo, la ppp del Pixel2 de Google (1920 * 1080) es 420;
  • Adaptación del calificador de ancho y alto: agote los valores de píxeles de ancho y alto de todos los teléfonos Android en el mercado, establezca una resolución de referencia y otras resoluciones se calculan en función de esta resolución de referencia. En carpetas de diferentes tamaños, de acuerdo con Escriba la dimensión correspondiente archivo para este tamaño. Pero tiene un defecto fatal, es decir, debe presionarse con precisión para que encaje, y el tamaño del paquete de la aplicación también aumentará.
  1. Dos objetos Integer con valores iguales, == comparar para determinar si son iguales?

  2. La actividad A salta a la actividad B, la actividad B luego presiona la tecla Atrás para retroceder, el ciclo de vida de los dos procesos.

  • En el proceso de ActivityA saltando a ActivityB, el orden de ejecución de sus respectivos ciclos de vida. Por ejemplo: A.onCreate A.onStart A.onPause A.onStop B.onCreate B.onStart B.onPause B.onStop B.onDestroy? El
    orden de ejecución del ciclo de vida de ActivityA y ActivityB es el siguiente: A.onPause -> B.onCreate -> B .onStart-> B.onResume-> A.onStop
  • ActivityB presionar el botón Atrás?
    Después de presionar la tecla Atrás: B.onPause-> A.onRestart-> A.onStart-> A.onResume-> B.onStop-> B.onDestory
  • Cuando ActivityB es una actividad de ventana, ¿qué pasa con las conclusiones de 1 y 2?
    Si ActivityB es una ventana, cuando ActivityA salta a ActivityB, la parte de ActivityA que pierde el foco es visible, por lo que no se llamará a onStop. En este momento, la secuencia del ciclo de vida: A.onPause -> B.onCreate -> B. onStart -> B.onResume se
    presiona Después de la tecla Atrás: B.onPause-> A.onResume-> B.onStop-> B.onDestory
  • ¿Se llamará a onCreate al cambiar entre pantallas horizontales y verticales? ¿varias veces?
    Cuando el programa se está ejecutando, la configuración de algunos dispositivos puede cambiar, como: cambio entre pantallas horizontales y verticales, disponibilidad de teclado o cambio de idioma, etc. En este momento, la Actividad se reiniciará. El proceso es: antes de destruir, llamará a onSaveInstancestate () para guardar algunos datos en la aplicación, luego llamará a onDestory (), y finalmente llamará a onCreate () o onRestoreInstanceState para reiniciar Activiy. Al cambiar de pantalla, se volverá a llamar a cada ciclo de vida. OnCreate se ejecutará una vez cuando se cambie a una pantalla horizontal, y onCreate se ejecutará dos veces cuando se cambie a una pantalla vertical.
  1. ¿Pueden los subprocesos secundarios ser context.startActivity () (como ApplicationContext), habrá algún problema?

Es posible escribir una demostración y probarla. Pero cuál será el problema aún no está claro ...

  1. El proceso general del mecanismo Handler; por qué Looper.loop () no bloquea el hilo principal; IdHandler (mecanismo de tiempo de inactividad); la implementación específica de postDelay (); la diferencia entre post () y sendMessage (); qué problemas ¿Se debe prestar atención al usar Handler y cómo resolverlo?

Las preguntas son muy detalladas, por lo que puede prepararse tanto como pueda. Encapsularon un conjunto de controladores para evitar pérdidas de memoria

  1. Cuando las páginas nativas, H5 y RN se mezclan para saltar, ¿cómo funciona el puente de limpieza de páginas?

Para un proyecto hecho por usted mismo, simplemente explique el principio claramente y haga un dibujo si no lo explica claramente.

  1. ¿Cómo calcular el porcentaje de la parte visible de una vista en la pantalla?

  2. Mecanismo de delegación principal de ClassLoader

  3. Introduzca brevemente el principio de Https

  4. ¿Qué causa la pérdida de memoria y cómo solucionarla?

  5. ¿Cómo puedo asegurarme de descargar una imagen grande sin oom?

  6. ¿Ha realizado alguna optimización de la interfaz de usuario y qué ha hecho?

  • Depurar el sobregiro de la GPU, reducir el sobregiro a un rango razonable;
  • Reduzca el nivel de anidamiento y el número de controles, mantenga la estructura de árbol de la vista lo más plana posible (use el Visor de jerarquía para una fácil visualización) y elimine todas las vistas que no necesitan renderizarse;
  • Use GPU para configurar la herramienta de renderizado, ubique el paso específico donde ocurrió el problema y use TraceView para ubicar con precisión el código;
  • Usar etiquetas, fusionar para reducir los niveles de anidamiento, inicialización retrasada de viewStub, reutilizar el diseño de inclusión (usado con fusión)
  1. ¿Cuál es la diferencia entre la interacción WebView y JS, shouldOverrideUrlLoading, onJsPrompt use

  2. ¿Has estado en contacto con Flutter y Kotlin?

  3. Otros problemas relacionados con el proyecto

  4. Algoritmo-árbol binario genera elementos de nodo en el nivel k

Proyecto Especial 2 Lados

  1. Cuando las páginas nativas, H5 y RN se mezclan para saltar, se implementa el puente de limpieza de páginas

  2. Diseño y dificultades del marco híbrido de página

  3. Diseño de contenedor universal RN

  4. Diseño del programa de monitoreo del comportamiento del usuario

  5. Programa de gestión de errores JS

  6. La página RN monitorea el comportamiento del usuario y la gestión de errores de JS, cuáles son las ganancias y los puntos de optimización del descubrimiento de problemas

  7. ¿Cuáles son las ventajas de Meituan RN sobre RN nativo?

[ Cimentación de 3 lados más profunda ]

  1. ¿Has usado alguna vez Picasso en tu empresa? Déjame presentarte

  2. Picasso monomotor, ¿cómo garantizar el aislamiento de datos en el caso de varios paquetes?

  3. La diferencia entre Meituan RN y Picasso

4. Omita algunos problemas relacionados con el proyecto ...

  1. Cómo se implementa el seguimiento de la página de RN

  2. ¿Es la página de inicio de Meituan una página de RN? Principio MTFlexBox

  3. Método estático modificado sincronizado, método ordinario, clase, diferencia de bloque de método

  4. Principio de implementación subyacente sincronizado

  5. El papel y el principio de volátiles

  6. Una variable int se modifica con volátil y multiproceso para operar i ++. ¿Es seguro para subprocesos? ¿Cómo garantizar la seguridad de los hilos de i ++? ¿El principio de realización subyacente de AtomicInteger?

Use AtomicInteger para hacer que i ++ sea seguro para subprocesos

  1. Hable sobre la comprensión del grupo de subprocesos y varios parámetros clave para crear el grupo de subprocesos

  2. El mecanismo Handler pregunta de nuevo ...

  3. ¿Cuál es la diferencia entre el mecanismo Binder y el mecanismo de intercambio de memoria?

  4. Colección Java, presenta los escenarios de uso de ArrayList y HashMap, y el principio de implementación subyacente

  5. La diferencia entre ArrayList y LinkedList

  6. Algoritmo: la fusión de dos listas enlazadas ordenadas

  7. Algoritmo: ingrese una cadena (excluyendo * y.), Regular (cualquier combinación de letras, * y.) Y juzgue si la cadena es legal

  8. Introduzca brevemente algunas dificultades técnicas encontradas en el proyecto.

4 lados que cruzan lados

  1. En el siguiente código, ¿cuál es el valor final de str? ¿Cuál es el valor de Integer? ¿Se cambiará?
  • Sitio de prueba : transferencia de valor de Java (lo mismo para la pregunta 2). Escriba una prueba de código, modifique los parámetros de entrada en el método changeValue () y no cambiará el valor anterior;
  • Principio : El método obtiene una copia de todos los valores de los parámetros, es decir, el método no puede modificar el contenido de ninguna variable de parámetro que se le pase. El parámetro de tipo básico recibe una copia del parámetro y el parámetro de tipo de objeto es una copia de la dirección del objeto;
  • Solución : En changeValue (), para el parámetro de tipo de objeto, modifique directamente el valor de la copia de la dirección del objeto , de modo que la dirección de la variable no se haya modificado antes. Si modifica un valor en la instancia del objeto, se modificará la variable anterior
public void test() {
    String str = "123";
    changeValue(str); 
    System.out.println("str值为: " + str);  // str未被改变,str = "123"
}

public changeValue(String str) {
    str = "abc";
}

  1. En el siguiente código, ¿debe ser nulo cuando se usa el objeto student nuevamente?

Resumen del uso de parámetros de método en Java:

  • Un método no puede modificar un parámetro de un tipo de datos básico (es decir, numérico o booleano);
  • Un método puede cambiar el estado de un parámetro de objeto;
  • Un método no puede permitir que el parámetro del objeto se refiera a un nuevo objeto
public void test()  {
    Student student = new Student("Bobo", 15);
    changeValue1(student);   // student值未改变,不为null! 输出结果 student值为 name:Bobo、age:15
    // changeValue2(student);  // student值被改变,输出结果 student值为 name:Lily、age:20
    System.out.println("student值为 name: " + student.name + "、age:" + student.age);
}

public changeValue1(Student student) {
    student = null;
}

public static void changeValue2(Student student)  {    
     student.name = "Lily";    
     student.age = 20;
}

  1. ¿Varios tipos de referencias en Java y escenarios de uso de referencias débiles?

  2. Clasificación del grupo de subprocesos, ¿explicar algunos parámetros básicos?

  3. ¿Cuál es el proceso de empaquetado de APK?

  • La herramienta aapt empaqueta archivos de recursos y genera un archivo R.java
  • La herramienta aidl procesa archivos AIDL y genera los archivos .java correspondientes
  • La herramienta javac compila el archivo Java y genera el archivo .class correspondiente
  • Convierta archivos .class en archivos .dex compatibles con Davik VM
  • La herramienta apkbuilder está empaquetada para generar un archivo .apk sin firmar
  • jarsigner firma archivos .apk sin firmar
  • La herramienta zipalign alinea el archivo .apk firmado
  1. ¿Por qué es necesario firmar los APK? ¿Ha aprendido sobre el mecanismo de firma específico?

Para confirmar la identidad del desarrollador de apk y evitar la manipulación del contenido, Android ha diseñado un conjunto de esquemas de firma de apk para garantizar la seguridad de la apk, es decir, el desarrollador firma la apk al empaquetar, y el sistema Android lo hará tienen el desarrollo correspondiente cuando se instala el apk Para verificar la exactitud de la identidad y el contenido del usuario, el apk se puede instalar solo después de que se haya pasado la verificación.El diseño del proceso de firma y verificación se basa en la idea de cifrado asimétrico.
Un conjunto de esquemas de firmas utilizados por Android antes de 7.0: genere archivos de firmas en la carpeta META-INF / en el directorio raíz del apk y luego verifique los archivos de firmas en el PackageManagerService del sistema durante la instalación.
A partir de 7.0, Android proporciona un nuevo esquema de firma V2: utilizando el formato de archivo comprimido apk (zip), se agrega un área de datos para almacenar información de firma al área de contenido original, y luego lo mismo en el sistema durante la instalación La versión V2 de La verificación de la firma se realiza en PackageManagerService. La solución V2 será más segura y hará que la verificación sea más rápida y rápida de instalar.
Por supuesto, el esquema de firma V2 será compatible con versiones anteriores. Si no se utiliza la firma V2, se utilizará por defecto en el proceso de verificación del esquema de firma V1.

  1. ¿Por qué dividir dex? SDK 21 no divide dex, ¿habrá algún problema con cargar todo directamente?

Busque la respuesta correcta de los dioses que pasan ...

  1. ¿Cuáles son los patrones de diseño comunes? ¿Qué patrones de diseño se utilizan en la solución de gestión de errores JS que proporciona?

  2. Algoritmo: cruce de orden de capa de árbol binario, capa de número impar, recorrido de orden inverso de nodos, recorrido de orden positivo de capa de número par

  3. ¿Cuál es el plan para los próximos 3 a 5 años?

  4. ¿Cuáles crees que son tus puntos fuertes? ¿Cuales son las desventajas?

  5. ¿Cuál es el rango actual y el desempeño reciente?

5 Lados-Departamento TL

  1. Introducción empresarial relacionada con el departamento de comercialización (el núcleo probablemente sea que el departamento de comercialización tiene altas barreras, el costo de capacitar a una persona es alto y es más valioso que hacer otros negocios y puede acumular mucho conocimiento de estrategia comercial), y luego pedirle que haga preguntas

  2. ¿Planeando para los próximos años? ¿Cuál es el plan de la vida?

  3. ¿Cuáles crees que son tus puntos fuertes? ¿Cuales son las desventajas?

  4. ¿Cuál es el rango actual y el desempeño reciente?

  5. ¿Por qué darte una actuación tan buena?

  6. ¿Hay otras oportunidades? La situación de la entrevista de Ali

6 lados-Big Boss

  1. Inserción de matriz de algoritmos, considere la expansión

  2. ¿Cuáles son las cosas más desafiantes que se encuentran en el proyecto?

  3. ¿Cuáles son sus negocios en Meituan?

  4. ¿Cuáles son los planes para los próximos años?

  5. ¿Cuáles crees que son tus puntos fuertes? ¿Cuales son las desventajas?

  6. ¿Cuál es el rango actual y el desempeño reciente?

[Superficie de FC]

  1. Tanto los estudiantes de pregrado como los de posgrado son parciales al hardware ¿Tiene experiencia en software relevante?

  2. ¿Los postgraduados son estudiantes de pregrado o toman el examen por sí mismos?

  3. ¿Tienes experiencia en desarrollo de Android antes de ir a Meituan?

  4. ¿Por qué elegiste ir a Meituan? ¿Por qué elegir venir a Beijing?

  5. ¿Por qué cambiar de trabajo? ¿Cuáles son sus expectativas para su trabajo futuro?

Oración de oro: ahora me he encontrado con un cuello de botella en el crecimiento de mi tecnología y siempre he admirado su empresa.

  1. ¿Cuál es el desempeño reciente de su rango actual?

  2. Con un desempeño tan bueno, ¿por qué no elegir Meituan para cambiar de departamento y ver oportunidades?

  3. ¿Qué fue lo más destacado de la actuación durante varias promociones?

  4. ¿Dónde está la casa ?, ¿hay planes para ir a casa y desarrollarla allí?

  5. ¿Estás planeando volver a ver oportunidades laborales como Kuaishou?

  6. Pregunte sobre el progreso y la situación actual de la entrevista de Ali

  7. Sueldo esperado

¿Cómo hacer una buena entrevista de trabajo sorpresa y planificar la dirección del aprendizaje?

El conjunto de preguntas de la entrevista puede ayudarlo a averiguar y llenar las vacantes, tener una dirección y un aprendizaje específico y prepararse para una futura entrada en una gran fábrica. Pero si lo vuelve a leer, no lo estudie ni profundice en él. Entonces esta pregunta de la entrevista le será de ayuda limitada. Al final, debemos confiar en el nivel técnico superior para hablar.

Hay muchos materiales para aprender Android en Internet, pero si el conocimiento aprendido no está estructurado, y cuando encuentras problemas, simplemente lo pruebas y dejas de estudiarlo en profundidad, entonces es difícil lograr una mejora tecnológica real. Se recomienda hacer un plan de estudio primero y asociar los puntos de conocimiento de acuerdo con el plan de estudio para formar un sistema de conocimiento sistemático.

La dirección del aprendizaje es fácil de planificar, pero aunque solo sea a través del aprendizaje fragmentado, es muy lento mejorar uno mismo.

Al mismo tiempo, también recopilé y clasifiqué ByteDance en 2020, así como preguntas de entrevistas de compañías como Tencent, Ali, Huawei, Xiaomi, etc., y clasifiqué los requisitos y los puntos técnicos de la entrevista en una gran y Entrevista completa de "Android Architect" Xmind (de hecho, es mejor de lo esperado gastar mucha energía), incluido el contexto de conocimiento + detalles de la rama .

imagen

Al construir estos marcos técnicos, también organicé los tutoriales avanzados avanzados del sistema, que serán mucho mejores que mi propio efecto de aprendizaje fragmentado.

imagen

Haga clic en: "Android Architecture Video + BAT Interview Special PDF + Study Notes" se puede obtener de forma gratuita ~

Hay muchos materiales para aprender Android en Internet, pero si el conocimiento aprendido no está estructurado, y cuando encuentras problemas, simplemente lo pruebas y dejas de estudiarlo en profundidad, entonces es difícil lograr una mejora tecnológica real. Espero que este sistema técnico sistemático le proporcione una referencia de dirección.

+ notas de estudio "**) (https://github.com/a120464/Android-P7/blob/master/Android%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC% 9A% E8% BF% 99% E4% BA% 9B% EF% BC% 9F% E5% A6% 82% E4% BD% 95% E9% 9D% A2% E8% AF% 95% E6% 8B% BF% E9% AB% 98% E8% 96% AA% EF% BC% 81.md) se puede obtener gratis ~

Hay muchos materiales para aprender Android en Internet, pero si el conocimiento aprendido no está estructurado, y cuando encuentras problemas, simplemente lo pruebas y dejas de estudiarlo en profundidad, entonces es difícil lograr una mejora tecnológica real. Espero que este sistema técnico sistemático le proporcione una referencia de dirección.

Supongo que te gusta

Origin blog.csdn.net/fjfdhduuffududu/article/details/112783009
Recomendado
Clasificación