Desde el lado de Ape Guidance, pasé 1000 preguntas de la entrevista de Android y entré con éxito al trabajo por bytes (paquete total de 120W / año).

origen

Desde que me gradué en 18 años, he trabajado para dos empresas y he realizado algunos proyectos grandes y pequeños. Estoy muy agradecido con mis dos jefes por brindarme mucha orientación sobre mi camino de crecimiento de Android y la relación entre profesores y amigos.

He participado en entrevistas con muchas empresas desde hace años. Desde el lado de Yuanjiao, soy profundamente consciente de que el desplazamiento interno del desarrollo de Android es demasiado serio. Las entrevistas requieren la memorización de ensayos de ocho partes y leecode. Finalmente, obtuve con éxito la oferta de Bytedance. Resumir la experiencia también es una revisión y un resumen del pasado.

Guía de simios (colgando de un lado)

  • Presentación

  • Cómo aprender Android

  • Charla sobre el proyecto

    • El proyecto implica la comunicación entre procesos, por qué elegir la transmisión en lugar de otros métodos de comunicación entre procesos

    • No limitado a Android, ¿hay alguna forma de pasar objetos directamente a través de procesos?

    • ¿Conoce la memoria compartida, dónde está asignada la memoria compartida?

  • Habló sobre el proceso de dibujo de Android.

    • ¿Cómo salió el primer mensaje de dibujo?

    • ¿Cómo se repiten los siguientes mensajes de dibujo?

  • Publicación por entregas

    • ¿Cuáles son las formas de serializar?

    • ¿Cuál es la diferencia entre serializable y parcelable, y en qué escenarios?

    • ¿Por qué necesitamos distinguir entre escenas, no todas pueden usar Serializable?

    • ¿Existe algún otro método de serialización además de los dos anteriores?

  • Hablar de singleton

    • Has visto varios singletons, cuales son sus ventajas

    • ¿Cuál es el uso de volátiles

    • ¿Por qué DCL está escrito así? ¿No puede simplemente agregar sincronizado antes del método?

  • Hablar de multiproceso

    • Cómo crear un hilo
    • Por que usar el grupo de subprocesos
    • ¿Cuáles son los parámetros del grupo de subprocesos JavaAPI?
    • ¿Qué es un hilo central?
    • Cómo destruir el hilo central
  • Mecanismo de mensajes de Android

    • Habló sobre el mecanismo de mensajes.

    • ¿Se atascará el bucle infinito del hilo principal?

    • ¿Está rezagado durante el epoll?

    • ¿Cómo puede ser un retraso?

    • Cómo utilizar el mecanismo de mensajes para detectar atascos

    • Además de este método, ¿hay alguna otra forma de controlar la congelación?

  • WebView

    • Cuéntame todo lo que sabes sobre WebView

    • ¿Qué es exactamente JSBridge?

    • ¿Cómo se comunican Webview y la comunicación nativa de Android?

  • HashMap

  • Algorithms mobile zero gana la oferta del título original

Entrevista Byte Beat

Un lado
1: Plug-in. Inicie el método de gancho de la actividad. taskAffity.
2: ¿Okhttp admite HTTP2? ¿Cuáles son las funciones de http2? ¿Control de congestión en tcp? Apretón de manos de Tsl y algoritmo de cifrado asimétrico específico. Nombre asimétrico
3: cómo se implementa la publicación del controlador (Runnable). La prioridad de ejecución de callback, runnable y msg. ¿Cómo se logra el bloqueo? ¿Por qué no bloquea el hilo principal?
5: Encuentre la distancia máxima entre dos nodos en el árbol binario.
6: 206 significa, que es el recurso no modificado, 302 significa, 301 significa
7: Problema de comunicación multiproceso. Ventaja del aglutinante. Detalles de las clases java generadas por aidl. ¿Qué problemas surgen con los encuentros multiproceso?
8: ¿Cuáles son los parámetros pasados ​​por el agente dinámico? ¿Pueden las clases sin interfaz implementar el proxy dinámico? Principio
9 de la MAPE : ¿Cuál es la diferencia entre Aplicación y Actividad en el árbol de herencia de Contexto? ¿Cuál es la diferencia en el uso de los dos?
10: Cualquier árbol binario, encuentre la distancia máxima del nodo

Doble cara
1: Diseñe un sistema de registro.
2: Clasificación de fugas de memoria. Cómo comprobar el problema de pérdida de memoria
3: problema de código fuente del evento táctil.
4: El problema de la componentización. La diferencia entre módulo y aplicación. Cómo se logra la comunicación del módulo.
5: ¿Cómo lidiar con la recopilación de registros de bloqueo nativo?
6: La anotación implementa una función de solicitud: si el valor de int es mayor que 3, se requiere una solicitud.

Tres aspectos
1: Presentar el proceso de inicio de flutter
2: Presentar la diferencia entre flutter y weex
3: Introducción del componente
4: ¿Cuáles son los medios para comunicarse con js en webview?
5: Introduce el principio de flutter_boost

Cuatro lados
1: Las respectivas características y escenarios de uso del adaptador y el modo de decoración
2: Cómo funciona el códec de video
3: Clasificación de bolas de tres colores

¿Cómo me preparé para la entrevista de Android?

1. Reanudar

Hay muchas instrucciones sobre currículums de programadores en Internet, por lo que no las repetiré aquí. Puedes buscar el resumen de otros grandes dioses en Internet y modificarlos según tu propia situación. Tengo algunas sugerencias:

1. Trate de no ser sofisticado, los programadores y los diseñadores o las operaciones de producto no son lo mismo La decisión sobre el éxito de nuestro currículum la toma el entrevistador técnico, y lo que ellos valoran es la descripción de la experiencia y tecnología de su proyecto.

2. La descripción de la habilidad solo debe escribir lo que sabe y tener una comprensión profunda. Puede agregar algunas tecnologías nuevas o marcos populares según corresponda. Sin embargo, esta parte debe entenderse. Si no ha tenido tiempo para leer el código fuente, puedes leer el resumen de los grandes dioses.

3. Intente agregar palabras clave a la experiencia del proyecto, como qué tecnologías se utilizan, qué patrones de diseño se utilizan, comparación de datos optimizada y resumen ampliado. En lugar de introducir a ciegas el contenido de este proyecto (que es la descripción del gerente de producto), como la optimización del rendimiento, se divide en optimización del rendimiento de la interfaz de usuario, optimización de la memoria, optimización de la base de datos, optimización de la red, optimización del consumo de energía, etc. Puede describirse en términos de 1. cómo encontrar el problema, 2. cómo resolver el problema y 3. la comparación del efecto de la solución. Para dar un ejemplo simple: optimización de la interfaz de usuario, qué problemas pueden ocurrir en la interfaz de usuario (la tartamudez no es fácil), cómo encontrar el problema (permisos de desarrollador de teléfonos móviles> sobregiro de GPU para encontrar problemas jerárquicos, análisis de uso de CPU de TraceView), cómo resolver problema (reducir el nivel, problemas de dibujo de la vista personalizada, etc.), una vez resuelto el problema, se vuelve a comparar el rendimiento.

Dos, preguntas de la entrevista

Preguntas de la entrevista en línea del capítulo uno

1. Protocolo HTTP
2. Protocolo TCP / IP
3. Apretón de manos de tres vías de TCP y preguntas de comprensión y entrevista de cuatro manos agitadas
4. Ingrese la URL en la página web para representar la interfaz completa, y ¿qué protocolo se usa en el medio?
5. ¿Cuál es la diferencia entre TCP y UDP?
6. Se presentan en
detalle varios métodos de solicitud HTTP 7. Formato de mensaje de respuesta y solicitud HTTP, y códigos de estado comunes
8. Cuántas solicitudes HTTP se pueden enviar en una conexión TCP

Capítulo 2 Preguntas de la entrevista sobre la estructura de datos y el algoritmo

1.1.1 ¿Cuáles son las estructuras de datos más utilizadas?
1.1.2 Matriz
1.1.3 Lista enlazada
1.1.4 Cola y pila
1.1.5 Árbol binario
1.1.6 HashMap
1.1.7 Figura
1.1.8 ¿Cuáles son los algoritmos de clasificación?
1.1.9 Algoritmo de búsqueda
1.1.10 Cadena
1.1.12 Otros algoritmos

Capítulo tres Preguntas de la entrevista de Java

  1. HashMap

2.ArrayList

3.LinkedList

4. Análisis de código fuente de Hashset

  1. Modelo de memoria

  2. Algoritmo de recolección de basura (JVM)

7. ¿Cuál es la diferencia entre el mecanismo de recolección de basura y llamar a System.gc ()?

  1. Proceso de carga de clases

9. Reflexión

10. Grupo de subprocesos y subprocesos múltiples

11. Cree una forma de subprocesos múltiples, el principio de funcionamiento del grupo de subprocesos

12. Patrones de diseño (seis principios básicos, patrones de diseño comúnmente utilizados en proyectos, singletons escritos a mano, etc.)

13. Reanudar la carga

14. Java cuatro referencias principales

15.Java Genéricos

  1. La diferencia entre finalizar, finalmente y finalizar

17. La diferencia entre interfaz y clase abstracta

18. Discutir la aplicación de clases e interfaces abstractas a partir del diseño de clases de contenedor de Java.

19. La diferencia entre sincronizado y bloqueo.

Capítulo 4 Preguntas de la entrevista de Android

1.Modo de inicio de actividad

2.Proceso de inicio de actividad

3. Comunicación de procesos

4. Resumen y análisis de la capa de aplicación de Android Binder

5. Proceso de método de mantener vivo

6. Comprender el looper del controlador y las ideas de messageQueue del código fuente

7.¿Cómo implementa el controlador el mensaje retrasado postdelay ()?

8. ¿Por qué el hilo principal de Android no se atasca debido al bucle infinito en Looper.loop ()?

9. Principio de RxJava y cómo empaquetar y usar

10.Análisis de código fuente okhttp

11.Readaptación del análisis del código fuente

12. Análisis del código fuente de los principios básicos de LeakCanary

13. Uso y principio de LruCache

14. Principio de Aouter

15. El principio de realización del marco de anotaciones

16. ¿Cómo escribe Android un proyecto basado en anotaciones en tiempo de compilación?

17. RxJava2 + Retrofit2 + OkHttp3 base, paquete y uso en el proyecto

18.Rxjava2.0 + Retrofit + Okhttp (uso del paquete) + Construcción del marco MVP

19. Combinación de conocimientos sobre reparación en caliente y plug-in de Android

20. Problemas habituales de pérdida de memoria y soluciones en el desarrollo de Android

21. Cómo detectar y localizar fugas de memoria de Android

22. El algoritmo de memoria ocupado por la imagen.

23. ¿Por qué las imágenes necesitan usar referencias suaves y la interfaz de visualización en el modo MVP usa referencias débiles?

24. Práctica MVVM basada en DataBinding y LiveData

25. Optimización de la estabilidad de la aplicación

26. Optimización de la velocidad de inicio de la aplicación

27. Optimización de la memoria de la aplicación

28. Optimización del dibujo de la aplicación

29 Aplicación delgada

30. Optimización de la red

31. Optimización de la batería de la aplicación

32. Optimización de la seguridad de Android

33. ¿Por qué WebView tarda en cargarse?

34. Cómo optimizar la vista personalizada

Tres, estructura de datos y algoritmo

Que aprender

Algunos estudiantes pueden tener que preguntarse: ¿Es necesario que aprenda algoritmos para Android? La respuesta es 别无选择:!

El proceso de entrevistas nacionales por Internet se está acercando gradualmente a países extranjeros, y las grandes empresas como Bytedance y BAT se 手撕算法题han convertido en acciones obligatorias.

De hecho, en comparación con C y C ++, Java tiene una biblioteca de clases rica y un marco tripartito. Después de ingresar al trabajo, la mayoría de las personas escriben código comercial, comúnmente conocido como API boy o Crud boy. El algoritmo no parece ser tan importante , pero el algoritmo es realmente Es una forma de bajo costo para que las empresas entrevisten y examinen a las personas. Si escribe un algoritmo y lo aprueba, o es inteligente o diligente.

Entonces, no importa qué idioma esté aprendiendo: C, C ++, python, Java, GO, debe pasar el nivel de algoritmo. He enumerado los puntos de conocimiento básicos de la estructura de datos y las entrevistas con algoritmos. Puede consultarlos y aprenderlos uno por uno.

  • Pila y cola: primero en entrar, primero en salir, último en entrar, primero en salir

  • Lista enlazada lineal

  • Búsqueda: búsqueda secuencial, búsqueda binaria

  • Clasificación: tipo de intercambio, tipo de inserción, tipo de selección

  • Árbol, árbol binario, gráfico: primero la profundidad (DFS), primero la amplitud (BFS)

  • Recursividad

  • Divide y conquistaras

  • Ventana deslizante

  • Tres algoritmos asombrosos: retroceso, codicioso y programación dinámica (DP)

¿Cómo aprender?

La mejor manera o la más tonta es cepillar las preguntas. Se recomienda encarecidamente Leetcode: https://leetcode-cn.com recomienda cepillar más de 300 preguntas, cubriendo preguntas simples, medianas y difíciles. Antes de la entrevista, debe entrenar su tacto de la mano. No sea un desconocido. Puede optar por mantener una pregunta todos los días o algunos días.

Le sugiero que lea algunos libros antes de escribir las preguntas: "Algoritmo cómico: el viaje del algoritmo de Xiao Hui"

Si no tiene ninguna base de algoritmos antes, este libro es muy adecuado para usted, puede complementar el conocimiento básico de la estructura y el algoritmo de datos, como qué es la complejidad del tiempo, la complejidad del espacio, la búsqueda, la clasificación, etc. Si tiene una cierta base, se recomienda que salte directamente a la última parte del algoritmo real.

"Oferta de dedo espada"

Un libro muy clásico, las personas que aprenden algoritmos deben leerlo. Pero tenga cuidado, los temas de este libro están escritos en C ++, si es un desarrollador de Java, puede verse un poco afectado. Pero recuerde que lo más importante sobre el aprendizaje de algoritmos es la idea y el método de resolución de problemas. El idioma que se usa para implementarlo es el segundo. Si tiene mucho tiempo, le sugiero que use el lenguaje Java para implementarlo nuevamente.

"Hoja de trucos del algoritmo de Labuladong"

¡Muy recomendado! Este es un libro muy nuevo. Antes de escribir el libro, el autor abrió un proyecto en Github. Explica principalmente las rutinas de resolución de problemas de LeetCode. El número total de Starts se ubica entre los 40 primeros. Al principio del libro, se explican el pensamiento básico y las rutinas del algoritmo de aprendizaje. Se recomienda leer este libro y usar leetcode para cepillar las preguntas al mismo tiempo. ¡El efecto es muy bueno!

"Introducción a los algoritmos"

Si no recomiendo este libro, ¿me parece que estoy un poco deprimido? Este es un tomo clásico imprescindible para los estudiantes de pregrado. Escrito por peces gordos extranjeros y clásicos de la traducción nacionales. Aunque son clásicos, no se recomiendan para estudiantes que recién están comenzando con algoritmos, porque es posible que tenga que renunciar a los algoritmos después de leer este libro, que es difícil de entender. Se recomienda comenzar este libro con una cierta base.

Si crees que leer es aburrido, te puedo recomendar que leas algunas columnas de tiempo geek, pero están cargadas, pero la calidad es muy alta. "La belleza de las estructuras de datos y los algoritmos"

Esta columna es texto + voz, y el autor es Wang Zheng, ex ingeniero de Google. Adopta el método de aprendizaje más adecuado para ingenieros, no limitado a un lenguaje de programación específico, comenzando desde el escenario de desarrollo real, enseñándole el método de aprendizaje de estructuras de datos y algoritmos desde el más superficial al más profundo, ayudándole a comprender los conceptos básicos y el núcleo teorías y comprensión profunda del algoritmo Essence, para ayudarlo a mejorar su capacidad para utilizar estructuras de datos y pensamiento algorítmico para resolver problemas.

"40 conferencias sobre autorización de entrevistas de algoritmos"

Esta columna es un video y el autor es Qin Chao, un ex ingeniero de Facebook. El autor usará la pizarra para guiarlo paso a paso para resolver el problema, paso a paso, capa por capa, cada pregunta utilizará una variedad de métodos de resolución de problemas. Básicamente terminé de leerlo y gané mucho.

Leetcode, libros y columnas geek pueden combinarse en paralelo, combinando el aprendizaje y la práctica, no lo ignore.

Este artículo se ha incluido en el proyecto de código abierto: https://github.com/Android-Alvin/Android-LearningNotes , que contiene rutas de programación de autoaprendizaje en diferentes direcciones, colección de preguntas de entrevistas / sutras faciales y una serie de artículos, etc. Los recursos se actualizan continuamente ...

Supongo que te gusta

Origin blog.csdn.net/AndroidAlvin/article/details/115260719
Recomendado
Clasificación