Entrevista al ingeniero de Android: aún le falta una guía de entrevista temporal y una optimización de currículum cuando no está en la gran oferta de fábrica.

Está a punto de alcanzar la cima del tradicional reemplazo de los "tres de oro y cuatro de plata". En el invierno de Internet, aprovechar la oportunidad es particularmente importante, especialmente ahora que el desarrollo móvil se ha visto gravemente saturado. Como ingenieros de Android, ¿qué debemos preparar? Por ejemplo, si se deben escribir habilidades desconocidas en su currículum, qué conocimientos de componentes de Android se deben revisar y si las preguntas del algoritmo son útiles o no , puede considerar estas preguntas cuidadosamente antes de la entrevista. A continuación, combinaré mi propia experiencia y comprensión para ayudarlo a clasificar el contenido que debe prepararse sobre el currículum vitae, la entrevista y la estructura del algoritmo, y compartiré algo de mi experiencia y experiencia, para que pueda obtener ofertas de los principales fabricantes en el invierno frío (pd: este artículo no explicará demasiado las preguntas de la entrevista de Android, pero analizará algunas habilidades blandas y algunos puntos de conocimiento que la entrevista debería tener desde una perspectiva macro.

currículum

El currículum desempeñará un papel vital en el proceso de la entrevista, por lo que siempre debemos prestar atención a la escritura del currículum. Durante el proceso de entrevista, el entrevistador generalmente prestará atención a las tres partes de su currículum: experiencia laboral, presentación del proyecto y características de habilidades. Si la empresa a la que está entrevistando no tiene un tema fijo, entonces muchas preguntas girarán en torno a estas tres partes de tu currículum Parte del contenido para preguntar. Por tanto, nuestro currículum debe ser conciso y conciso, con profundidad y amplitud. Al mismo tiempo, el punto clave al que hay que prestar atención es la redacción de las habilidades relacionadas Primero, debes dejarle saber al entrevistador cuál es la calificación de tu entrevista y luego estar preparado para optimizarla. Muchas veces un puesto corresponde a varios rangos. Al enviar su currículum, su currículum debe recibir una calificación más clara por parte del entrevistador. De lo contrario, el proceso de entrevista será más pasivo y afectará el juicio del entrevistador sobre usted. Por lo tanto, el contenido de esta parte debe resaltar sus propias características y también escribir sobre algunos problemas relativos de la empresa. Si está familiarizado con plug-in, hotfix, componentización, optimización del rendimiento, etc., puede escribirlo claramente. Pero si no está muy familiarizado, intente no escribir.

Además, la parte del proyecto también es una parte vital del currículum, esta parte debe resaltar las contribuciones de la empresa y las dificultades del proyecto. Es posible que muchos estudiantes hayan estado haciendo desarrollo de la demanda en la empresa y sentirán que la experiencia del proyecto de la empresa no es brillante y que la dificultad no es tan grande, y sentirán que están en desventaja en esta parte del contenido. De hecho, para el desarrollo de cada requisito, definitivamente tendrá un diseño personal para este requisito. En este proceso, considerará cómo minimizar el impacto en el código existente y cómo implementar funciones de manera rápida y clara. Estos pueden usarse como el contenido de la introducción del proyecto., Y luego piense en cómo reflejar su diseño y pensamiento en su currículum, que también es una buena ilustración.

Además, también puede escribir sobre sus experiencias habituales de aprendizaje e intercambio, como qué biblioteca es de código abierto y un blog para registrar parte de la experiencia y la experiencia del desarrollo habitual, estos se convertirán en los elementos de bonificación de su entrevista.

Entrevista

Para los ingenieros de Android, al inicio de la entrevista, preguntarán algunos conocimientos básicos y algoritmos de Java y Android. Con respecto al conocimiento básico de Java, le sugiero que eche un vistazo a estos tres libros: Efectividad del código: Manual de desarrollo de Java, Comprensión profunda de la máquina virtual Java y El arte de la programación concurrente de Java. En el caso de las preguntas de las entrevistas de Android, muchas están relacionadas con los principios del sistema, pero también hay muchas preguntas que no tienen respuestas precisas. Por ejemplo, preguntas como los principios de los cuatro componentes principales requieren que expliques los cuatro componentes principales desde una perspectiva macro, o también puedes separarlos y explicarlos uno a uno.

Al mismo tiempo, antes de la entrevista, debe prepararse con anticipación y ajustar su mentalidad para evitar ser desorganizado al responder preguntas, lo que hará que el entrevistador tenga malos juicios sobre su pensamiento lógico y habilidades de lenguaje. En las entrevistas de Android, a menudo hay preguntas sobre algunos conceptos básicos de Android. De acuerdo con estos conceptos básicos, debe comprenderlos claramente, como el mecanismo de Handler.postDelay, el mecanismo de evento táctil, la Vista personalizada, cómo calcular el tamaño de la Vista , y cómo el control del contenedor controla el subcontrol. Diseño, operaciones básicas de la base de datos, mecanismo Binder, mecanismo LMK, etc.

Si utiliza algunos marcos de código abierto, el entrevistador también puede preguntar sobre los principios de algunos marcos de código abierto. Le sugiero que también aprenda más sobre los principios de algunos marcos de red excelentes, marcos de carga de imágenes, marcos de registro, EventBus y marcos AAC. . Para complementos relativamente complejos y correcciones urgentes, puede leer el libro "Exploración profunda de correcciones urgentes de Android" y leer los artículos de la serie "Análisis de los principios de complementos de Android" para la complementación.

Por último, hay contenido relacionado con la optimización del rendimiento, que implica una gran cantidad de contenido. En los últimos años, la empresa ha prestado mucha atención a la optimización del rendimiento. Algunos estudiantes pueden haber realizado una optimización especial del rendimiento o desarrollado algunas herramientas de desarrollo propio y resumidas algunas metodologías. Es más fácil de responder. Sin embargo, es posible que algunos estudiantes presten atención al desarrollo de los requisitos comerciales y la optimización del rendimiento real puede no ser muchas. Sugiero que pueda encontrar algunos puntos en el proceso de desarrollo empresarial. Por ejemplo, al realizar algunos componentes comerciales públicos, debe inicializarlos al inicio, luego debe prestar atención al rendimiento durante el proceso de inicialización; o al hacer una lista página, Cómo garantizar el rendimiento deslizante en una vista de lista compleja. Creo que tendrá su propia prueba durante el proceso de desarrollo habitual, que se puede combinar con escenarios específicos.

Después de la entrevista básica general, el entrevistador le hará algunas preguntas sobre el desarrollo del proyecto a partir de la experiencia del proyecto, por lo que debe realizar preparativos detallados para los proyectos que ha desarrollado antes de la entrevista. Por ejemplo, el entrevistador le pedirá que presente su proyecto. Debe reflejar las dificultades del proyecto, su contribución en el proyecto, la implementación específica del proyecto, etc. También puede solicitar algunos detalles específicos, por lo que la sugerencia Es buscar la verdad a partir de los hechos Hablar, pero debe tener muy claro los módulos del proyecto. Además de las entrevistas técnicas, a veces se pueden examinar algunas habilidades sociales. Por ejemplo, el entrevistador examinará sus habilidades de colaboración interdepartamental, habilidades de comunicación, administración del tiempo, asignación de tareas y planificación de carrera.

Las entrevistas son lo mismo que los exámenes. Depende más de la acumulación habitual y el rendimiento en el lugar . Por lo tanto, es muy importante resumir de vez en cuando, porque una gran cantidad de contenido se olvidará después de un período de tiempo si es No se usa con frecuencia Las cosas que hice, porque olvidé los detalles, no las pude mostrar bien durante la entrevista. Por ejemplo, tecnologías como la conexión y la reparación en caliente son relativamente simples en principio, pero habrá muchos puntos en el proceso de desarrollo. Si no hay registros escritos de algunos puntos clave, pueden olvidarse después de un período de tiempo. Para qué se utiliza una determinada pieza de código. Por lo tanto, después de completar un requisito, intente resumir las dificultades en el proyecto, el marco utilizado y el principio de este marco, y dónde se dedica la mayor parte del tiempo. Además, las áreas con la mayor cantidad de errores también deben resumirse por los motivos, de modo que no tenga que volver a revisar el código antes de la entrevista y pueda comprender fácilmente los detalles del proyecto.

Para la revisión, necesitamos tener una comprensión completa del trabajo que estamos realizando actualmente. Entré en este proceso dibujando un mapa cerebral. Meditaré en el sistema de conocimiento general como un todo y lo dibujaré como la siguiente imagen. Recuerde el contenido que se puede evaluar para cada punto de conocimiento, registre la ubicación imprecisa y luego observe las preguntas de la prueba resumidas por los estudiantes arriba, y luego responda a cada pregunta. Este es un proceso iterativo continuo. Cuando se puedan responder todas las preguntas que anticipa, debe profundizar en los detalles técnicos y la profundidad. Por ejemplo, desarrollé una herramienta PLT Hook en mi trabajo. Esta herramienta puede ser mi referencia al proyecto de código abierto. Y encapsular el unos, pero no conozco muy bien los detalles En este momento, hay que hacer un estudio sistemático del contenido involucrado en este proyecto de código abierto.

Por otro lado, la entrevista es un proceso de aprendizaje mutuo . Por ejemplo, el entrevistador puede no ser bueno en lo que yo soy bueno. Por lo tanto, es una buena opción ir en la dirección con la que está familiarizado durante la entrevista. , para que encuentres esa promoción en la entrevista La evaluación del examinador del nivel de sí mismo.

Organización de algoritmos y datos

Los algoritmos y las agencias de datos son básicamente el final de la entrevista Una vez, fui a la entrevista de bytes porque el algoritmo y la estructura de datos fallaron y la entrevista falló. Por lo tanto, si desea ir a una gran fábrica, el algoritmo debe revisarse y las preguntas del algoritmo se intercalarán en el proceso de muchas pruebas. Las preguntas de algoritmo en la prueba generalmente no son difíciles y se pueden dividir en estructuras de datos básicas, como el uso de matrices, listas vinculadas, pilas, colas, árboles de bifurcación y montones, que son las operaciones básicas de esta estructura de datos común. Debe ser familiar, como invertir la lista vinculada, eliminar, obtener el elemento Kth, juzgar si hay un anillo, etc., cambio de árbol de horquilla, recorrido de profundidad, recorrido de nivel, profundidad del árbol, nodos comunes, etc. El otro son los algoritmos comunes de búsqueda y clasificación. Estos dos tipos de algoritmos aparecen con mucha frecuencia. Debe conocer sus métodos de implementación comunes, como el burbujeo, la clasificación rápida, la inserción y la clasificación. Fusionar, ordenar en montón, etc. Tenga en cuenta que esto no debe simplemente memorizar la implementación del algoritmo, ya que es posible que no se le pida que escriba el algoritmo correspondiente directamente cuando lo intente, y algunos problemas se implementarán utilizando algoritmos de búsqueda o clasificación. Este tipo de problema puede ir a LeetCode y filtrar ellos por etiquetas.

La otra parte de las preguntas sobre el algoritmo se centra en el combate real, principalmente en la codicia, la programación dinámica, el algoritmo divide y vencerás, la búsqueda profunda, etc. Estos algoritmos requieren algunas habilidades. Sin embargo, las preguntas del algoritmo de la prueba generalmente no requieren mucho código para completar. Por lo general, se pueden completar en unas pocas horas, por lo que puede dar prioridad a la búsqueda de algunas preguntas clásicas, como subir escaleras, Suma de suborden, problema de rectángulo máximo, etc. Pero también habrá algunos problemas relativamente complejos que se combinan con una serie de algoritmos, al igual que la ruta máxima de un árbol de bifurcación y los problemas que se utilizan junto con la búsqueda profunda y la programación dinámica. Además, también puede encontrar algunos problemas de algoritmo derivados de otros problemas, como HashMap, que pueden llevar a la realización de árboles rojos.

Los siguientes son algunos de los puntos de conocimiento que debería tener en la entrevista:

primera parte:

Androide

  • Conceptos básicos de Android
    • FrameLayout (diseño de marco)
    • LinearLayout (diseño lineal)
    • AbsoluteLayout (diseño absoluto)
    • RelativeLayout (diseño relativo)
    • TableLayout (diseño de tabla)
    • Ciclo de vida de la actividad
    • Método de almacenamiento en caché de actividades
    • Ciclo de vida del fragmento
    • Dos formas de iniciar el servicio
    • Cómo utilizar ContentProvider
    • La diferencia entre las tres animaciones.
    • Formulario de almacenamiento de datos de Android
    • Operación básica de Sqlite
    • Ver el proceso de dibujo del árbol
    • ¿Qué marco ha utilizado, ha leído el código fuente y conoce los principios subyacentes?
    • Caché de imágenes
    • Escenarios de uso y características de IntentService
    • Diferencia de contexto
  • Resumen de fuga de memoria de Android
  • Análisis y solución de fugas de memoria del controlador
  • Handler, Looper, Message, MessageQueue análisis de procesos básicos
  • Optimización del rendimiento de Android
  • ListView detallado
  • Similitudes y diferencias entre RecyclerView y ListView
  • Análisis del código fuente de AsyncTask
  • Tecnología plug-in
  • Control personalizado
  • Mecanismo de distribución de eventos
  • Problema de ANR
  • La diferencia entre el arte y Dalvik
  • La solución de Android en OOM
  • Fragmento
  • Actividad y fragmento
  • SurfaceView
  • Android varios procesos
  • Proceso de inicio de la aplicación
  • Proceso de inicio de actividad y proceso de visualización de la interfaz
  • Caché de imagen de tres niveles
  • Análisis y uso de Bitmap
  • Principio de reparación en caliente
  • AIDL
  • Mecanismo de carpeta
  • El proceso de inicio de los procesos de Zygote y System
  • MVC, MVP y MVVM en Android
  • MVP
  • Proceso de arranque de Android
  • Análisis de código fuente de actualización
  • Análisis del código fuente de Glide
  • Detalles de uso de EventBus
  • Análisis de código fuente de EventBus
  • La experiencia de usar greenDAO en el marco ORM de Android
  • Guía del usuario de enlace de datos
  • RxJava
  • Diseñar un conjunto de esquema de almacenamiento en caché y carga asincrónica de imágenes
  • Adaptación de la interfaz de usuario de Android
  • Gradle
  • Llenando los huecos
  • Operación de Git

Patrones de diseño

  • Seis principios de la orientación a objetos
  • Modo singleton
  • Modo constructor
  • Modo de prototipo
  • Fábrica simple
  • Patrón de método de fábrica
  • Patrón de fábrica abstracto
  • Modo de estrategia
  • Modo de estado
  • Modelo de cadena de responsabilidad
  • Modo intérprete
  • Modo de comando
  • Modo observador
  • Modo de nota
  • Modo iterador
  • Patrón de método de plantilla
  • Modo visitante
  • Modelo intermediario
  • Modelo de agencia
  • Modo de combinación
  • Modo adaptador
  • Patrón decorativo
  • Modelo de peso mosca
  • Modo de apariencia
  • Modo Puente

la segunda parte

Conceptos básicos de Java

  • El tamaño de los ocho tipos de datos básicos y sus clases de encapsulación
  • ¿Puede Switch usar una cadena como parámetro?
  • La diferencia entre iguales y ==
  • ¿Cuáles son los métodos públicos de Object?
  • Cuatro referencias a Java, fuerte y débil, y los escenarios utilizados
  • El papel de Hashcode
  • La diferencia entre String, StringBuffer y StringBuilder
  • try catch finalmente, hay retorno en try, ¿finalmente se ejecuta?
  • Diferencia entre excepción y error
  • Estructura de paquetes de excepción y error. ¿Qué situaciones ha encontrado en OOM, qué situaciones ha encontrado en SOF?
  • TÍO
  • Tres características y significados de Java orientado a objetos
  • El significado y la diferencia de Override y Overload
  • La diferencia entre la interfaz y la clase abstracta
  • La diferencia entre clase estática y clase no estática
  • El principio de realización del polimorfismo de Java
  • Comparación de foreach y normal para la eficiencia del bucle
  • Mecanismo de reflexión
  • La implementación interna de la clase String puede cambiar el contenido del objeto String
  • Intente atrapar el bloque, hay retorno en intentar y volver finalmente, cómo ejecutar
  • Pros y contras de los genéricos
  • Características comunes de los genéricos, se puede convertir List <String> en List <Object>
  • Principios y características de varias formas de analizar XML: DOM, SAX, PULL
  • La implementación subyacente y las diferencias de ArrayList, LinkedList y Vector
  • La implementación subyacente y la diferencia de HashMap y HashTable, la diferencia entre los dos y ConcurrentHashMap
  • ¿Cuál es el papel del hashcode de HashMap? ¿Cuándo es necesario reescribirlo? ¿Cómo resolver los conflictos de hash? ¿Cuál es el proceso de búsqueda?
  • ¿Cómo expandir Arraylist y HashMap? ¿Qué hace el factor de carga? ¿Cómo garantizar la seguridad de los procesos de lectura y escritura?
  • Diferencias en la implementación subyacente de TreeMap, HashMap y LinkedHashMap
  • Estructura del paquete de colecciones, la diferencia con las colecciones
  • ¿Cuál es la diferencia entre Set y List?
  • Características y uso de Mapa, Conjunto, Lista, Cola, Pila.
  • Pérdida de memoria en Java
  • Análisis de código fuente de cadena
  • Marco de la colección de Java
  • Análisis del código fuente de ArrayList
  • Análisis de código fuente LinkedList
  • Análisis de código fuente vectorial
  • Análisis de código fuente HashMap
  • Análisis de código fuente HashTable
  • Análisis de código fuente LinkedHashMap

JVM

  • Conceptos básicos de JVM
  • Mecanismo de carga de clases de JVM
  • Área de memoria Java y desbordamiento de memoria
  • Algoritmo de recolección de basura

Concurrencia de Java

  • Conocimientos básicos de la concurrencia de Java
  • Problemas de productores y consumidores
  • La diferencia entre Thread y Runnable para lograr multiproceso
  • Interrupción del hilo
  • Hilo de demonio e hilo de bloqueo
  • sincronizado
  • Uso seguro de la API de recopilación en un entorno multiproceso
  • Comparación de dos métodos para lograr la visibilidad de la memoria: bloqueo y variables volátiles
  • Punto muerto
  • Cerradura incorporada reentrante
  • Utilice esperar / notificar / notificar a todos para lograr la comunicación entre subprocesos
  • NIO

la tercera parte

estructura de datos

  • Formación
  • Lista enlazada
  • Pila y cola
  • Cuerda
  • árbol
  • Figura

algoritmo

cuarta parte

La Internet

sistema operativo

  • IPC del sistema Linux

para resumir

Hoy, no incluimos demasiadas preguntas específicas de la entrevista, pero explicamos cómo prepararse para la entrevista desde un nivel macro, pero la preparación para la entrevista en realidad se acumula poco a poco en nuestro proceso de trabajo habitual. La revisión solo se usa como un manera de consolidar antes de la entrevista Los medios del conocimiento. El proceso de revisión es principalmente nuestro cotejo y resumen de los puntos de conocimiento. Puede pensar en los problemas que puede encontrar durante la entrevista y cómo expresarlos.

Pero me gustaría decir que aunque la preparación de "sostener los pies del Buda" a veces puede ser útil, es difícil comprender el contenido más profundo de un cierto punto de conocimiento por "asalto" en poco tiempo, y la amplitud del conocimiento también requiere tiempo y experiencia para acumular. Entonces, no importa si necesita una entrevista o no, necesita pensar más, capacitar más y resumir más en el proceso de trabajo habitual, y puede acumular más cuando lo necesite.

Compartir rutas de revisión de entrevistas

No hablaré sobre las palabras adicionales. A continuación, compartiré una ruta de revisión para la entrevista. Si también se está preparando para una entrevista pero no sabe cómo revisar de manera eficiente, puede consultar mi ruta de revisión. Si tiene Si tiene alguna pregunta, no dude en comunicarse entre sí. ¡Vamos!

Aquí hay una dirección para que todos aprendan sistemáticamente:

1. Vea el video para el aprendizaje sistemático

La experiencia de Crud en los últimos años me ha hecho darme cuenta de que realmente soy un luchador en el novato. También es por Crud que mi tecnología está relativamente fragmentada y no lo suficientemente profunda para ser sistemática, por lo que es necesario volver a estudiar . Lo que me falta es conocimiento del sistema, un marco estructural e ideas deficientes, por lo que aprender a través de videos es mejor y más completo. Con respecto al aprendizaje por video, las personas pueden recomendar estudiar en la estación B. Hay muchos videos de aprendizaje en la estación B. El único inconveniente es que son gratuitos y fácilmente obsoletos.

Además, he recopilado varios conjuntos de videos y puedo compartirlos con ustedes si es necesario.

2. Clasificar sistemáticamente los conocimientos y mejorar las reservas

Hay tantos puntos de conocimiento en el desarrollo del cliente y todavía hay tan pocas cosas en la entrevista. Por lo tanto, no hay otros trucos para la entrevista, solo para ver qué tan bien se prepara para estos puntos de conocimiento. Entonces, cuando salga a una entrevista, es bueno ver qué etapa ha alcanzado en su revisión.

Dirección de aprendizaje del sistema:

  • Habilidades esenciales para arquitectos: genéricos Java en profundidad + anotaciones en lenguaje simple + programación concurrente + transmisión y serialización de datos + principios de la máquina virtual Java + reflexión y carga de clases + proxy dinámico + E / S eficiente

  • IU avanzada de Android y código fuente de FrameWork: promoción de IU avanzada + análisis del kernel de Framework + kernel de componentes de Android + persistencia de datos

  • Ajuste de rendimiento general de 360 °: ideas de diseño y optimización de la calidad del código + optimización del rendimiento del programa + optimización de la eficiencia del desarrollo

  • Interpretación de ideas de diseño de marcos de código abierto: diseño de reparación en caliente + interpretación del marco de complementos + diseño del marco de componentes + marco de carga de imágenes + diseño del marco de acceso a la red + diseño del marco de programación adaptable RXJava + diseño de la arquitectura IOC + componente de arquitectura de Android Jetpack

  • Desarrollo del módulo NDK: sistema de conocimiento básico NDK + procesamiento de imágenes subyacentes + desarrollo de audio y video

  • Mini programa WeChat: Introducción al mini programa + Desarrollo de interfaz de usuario + Operación de API + Acoplamiento de WeChat

  • Desarrollo híbrido y Flutter: Html5 project combat + Flutter advanced

Una vez que se han resuelto los conocimientos, es necesario comprobar los puntos que faltan, por lo que para estos puntos de conocimiento he preparado muchos libros electrónicos y notas a la mano. Estas notas proporcionan un resumen perfecto de cada punto de conocimiento.

3. Lea el código fuente, lea las notas de combate reales y aprenda las ideas de Dios

"El lenguaje de programación es la forma en que el programador se expresa, y la arquitectura es la percepción del mundo que tiene el programador". Por lo tanto, si los programadores quieren comprender y aprender rápidamente la arquitectura, leer el código fuente es esencial. Leer el código fuente es resolver problemas + entender cosas y, lo que es más importante: ver las ideas detrás del código fuente; los programadores dicen: lea miles de líneas de código fuente y practique miles de formas.

Incluye principalmente código fuente WeChat MMKV, código fuente AsyncTask, código fuente Volley, código fuente Retrofit, código fuente OkHttp, etc.

4. La víspera de la entrevista, preguntas rápidas

Una semana antes de la entrevista, puede comenzar a correr. Tenga en cuenta que al responder preguntas, la tecnología es la primera prioridad y el algoritmo es básico, como la clasificación, etc., y las preguntas intelectuales, a menos que sean reclutas de la escuela, generalmente no se hacen.

Con respecto a las preguntas de la entrevista, personalmente preparé un conjunto de preguntas de entrevista sistemáticas para ayudarlos a aprender unos de otros:

Al final

No hay atajos para cambiar tu vida. Debes recorrer este camino tú mismo. Solo el pensamiento profundo, la reflexión y el resumen constantes, mantener el entusiasmo por aprender y construir tu propio sistema de conocimiento completo paso a paso son las mejores formas de ganar. es también la misión que deben emprender los programadores.

El contenido anterior es gratuito para compartir con todos, amigos que necesitan la versión completa, haga clic aquí para ver todo el contenido .

Supongo que te gusta

Origin blog.csdn.net/weixin_44339238/article/details/112188913
Recomendado
Clasificación