Menú de desarrollo de Android! ¿Cómo pueden los ansiosos desarrolladores de Internet móvil romper el juego? ¡Mira este artículo!

¿La carrera del programador es realmente corta?

¡No corto, soy una prueba! Tengo 44 años, soy una empresa Fortune 500, programando desde hace 20 años y un experto en tecnología de software. Siempre he estado en la primera línea de la programación y nunca me he ido. Técnicamente, he usado Java, .net, Js, etc. profundamente. Tal vez, apenas conté como el último "ingeniero de pila completa".

Creo que muchas respuestas dicen que la razón por la que los programadores no trabajan mucho es porque la experiencia no vale el dinero.Los programadores viejos y los jóvenes no son diferentes y no pueden trabajar horas extras, por lo que, naturalmente, el jefe no los ve. En especial, no entiendo por qué algunas personas creen en comentarios tan ridículos e ilógicos. Puedo decir con certeza que en la industria del desarrollo de software, siempre que no se pierda el tiempo, el tiempo le dará ricas ganancias y establecerá umbrales suficientes para asegurar que está en este camino durante mucho tiempo.

En gran medida, los programadores son una profesión de "copiar y pegar", porque la mayoría de los programadores en la mayoría de las empresas no encontrarán problemas únicos en el trabajo. Los problemas con los que nos hemos encontrado han sido durante mucho tiempo La respuesta madura, el llamado proceso de investigación, no es inventar la respuesta, pero descubrir la respuesta.

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. En la entrevista del departamento de TL, mencioné que mi mejor que 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 ajustarse 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 se ha resuelto ...

  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 solucionarlo?

  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 y 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 de k-ésimo nivel

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 utilizado 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 está decorada con volátiles y multiproceso para operar i ++. ¿Es segura 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á de forma predeterminada 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 utilizó para la solución de gestión de errores JS que proporcionó?

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

  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 comercial relacionada con el departamento de comercialización (el núcleo probablemente sea que el departamento de comercialización tiene barreras altas y el costo de capacitar a una persona es alto. Es más valioso que hacer otros negocios y puede acumular mucho conocimiento de estrategia comercial), y luego pídele 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 realizan 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

Al final

Los estudiantes que quieran saber más sobre la entrevista de Dachang pueden ** hacer clic aquí para obtener el "Documento de la entrevista" de forma gratuita **. Además, también comparto algunos recursos gratuitos de alta calidad, que incluyen: PDF de aprendizaje de Android + video de arquitectura + notas de origen , tecnología de arquitectura avanzada mapa cerebral avanzado, materiales de temas de entrevistas de desarrollo de Android, materiales de arquitectura avanzada avanzada estas piezas de contenido. Comparte con todo el mundo, es muy adecuado para amigos que tengan entrevistas en un futuro próximo y quieran seguir mejorando en el camino de la tecnología. Ven y consigue materiales de aprendizaje ~

Supongo que te gusta

Origin blog.csdn.net/m0_53537576/article/details/113093354
Recomendado
Clasificación