Tencent fue despedido por 7 años de trabajo, y el contraataque ByteDance mejoró en 3 meses. Quiero contarles sobre esto ...

Uno, el camino del arbitraje

Después de 7 años, perdí mi trabajo en Tencent durante 7 años. Aunque hay ventilación previa, no esperaba que este día llegara tan pronto. Recibí noticias al mediodía de hoy diciendo que nuestro equipo va a ser cortado porque la empresa está a punto de disolverse. Primero que nada, nos operarán, es decir, despidos. Luego por la tarde, tendremos una conversación y charla. sobre compensaciones y otros asuntos relacionados, y luego nos prepararemos para entregar el trabajo Ocupado toda la tarde. Experimenté la disolución de una empresa por primera vez en mi vida, esta experiencia fue un poco extraña, pensé que despediría a mi jefe, no esperaba que el jefe me despidiera primero.

2. Oriente no es brillante y Occidente es brillante

Tuve la oportunidad de entrevistar a ByteDance a través de un impulso interno. ByteDance debería ser familiar para todos, pero presentaré más. El departamento de herramientas de creación de TikTok es el principal responsable de todo el proceso de grabación, edición de video y publicación en TikTok, que es uno de los negocios principales de la aplicación. No hace mucho, el departamento optimizado abrió una oficina en Hangzhou, así que lo aprobé con la intención de intentarlo.
Descripción del puesto
1. Responsable del desarrollo y diseño del software de teléfono móvil Android para ByteDance Interactive Entertainment, que incluye, entre otros, la investigación y el desarrollo de productos como Douyin;
2. Desarrollo de productos Android de acuerdo con los requisitos del producto, y refactorización y refactorización. Optimización de módulos relacionados;
3. Investigar sobre la tecnología de desarrollo de la plataforma Android, localizar y resolver algunos problemas técnicamente difíciles;
4. Aprender de acuerdo con los requisitos del proyecto y dominar rápidamente las habilidades, tener buenas habilidades de comunicación y colaboración para fortalecer la formación de equipos.

Requisitos
laborales 1. Licenciatura o superior en especialidades relacionadas con la informática, al menos dos años de experiencia en el desarrollo de Android;
2. Competente en git, competente en herramientas de desarrollo de estudio de Android y varios ajustes de rendimiento;
3. Familiarizado con la tecnología de desarrollo de Android plataforma, como la interfaz de usuario, la red, la optimización del rendimiento y la memoria, etc .;
4. Familiarizado con el diseño orientado a objetos, buen estilo de código;
5. Tener cierta capacidad para soportar la presión y un buen sentido del trabajo en equipo;
6. Experiencia en Se prefiere el desarrollo de aplicaciones de Internet a gran escala.
Inserte la descripción de la imagen aquí

3. Proceso de contraataque (las respuestas se han resuelto, ¡ consíguelas en [ GItHub ]!)

Un lado (~ 45min)

1. Presente el proyecto, hable sobre el contenido del trabajo y las ideas de la pasantía (~ 10min)

2. ¿Qué es una pérdida de memoria, cuáles son los escenarios de pérdida de memoria en Android y cuáles son las razones?

3. ¿Qué son el proceso y el algoritmo de GC de JVM?

4. El concepto de proceso y subproceso, ¿cómo realizar múltiples subprocesos en Android? (Thread Handler AsyncTask IntentService, etc.)

5. El principio y uso de Handler

6. ¿Cómo se enlaza Handler al hilo (Looper) y por qué Looper.loop () está diseñado como un bucle sin fin?

7. ¿Cuál es la diferencia entre varias clases internas de Java?

8. Ciclo de vida de la actividad y modo de inicio

9. Escribiendo el título: la vista derecha del árbol binario (el recorrido de la secuencia de niveles es suficiente)

Un lado es relativamente corto y las preguntas que se hacen son relativamente básicas. Después de unos 30 minutos, comenzarán los dos lados.

Dos lados (~ 1h30min)

1. Introducción

2. Presente el proyecto, ¿por qué necesita aprender Android por su cuenta (~ 5min)?

3. ¿Cómo implementa Android el multiproceso y cuál es el escenario de la aplicación (mala respuesta)?

4. ¿Entiende el mecanismo IPC de Android (Binder)? (La respuesta no es buena)

5. Cómo implementar pila (FILO) con dos colas (FIFO)

6. La diferencia entre HashMap y HashTable, el principio y la implementación de HashMap, el algoritmo de hash ()

7. Si diseña su propio cálculo hash, cómo diseñar y por qué (el número primo de la respuesta es el resto)

8. HashCode () de String y hashCode () de Object

7. El concepto y la relación de la memoria virtual y la memoria física, el algoritmo de programación de la paginación de la memoria.

8. Cómo implementar la caché LRU (consulte el código de acceso T146)

9. ¿Puedo escribir una clase java.lang.Object por mí mismo y cuál será cargada por el sistema?

10. Implementación de genéricos en Java

11. ¿Conoce los algoritmos de clasificación comunes? Escriba una clasificación rápida a mano.

12. El método de bloqueo en Java, el principio de la palabra clave sincronizada, ¿cuáles son las implementaciones de bloqueo pesimista y bloqueo optimista?

13. Condiciones y soluciones de interbloqueo, hable sobre el algoritmo bancario

14. El protocolo de enlace de tres vías de TCP se agitó cuatro veces, ¿por qué agitar cuatro veces?

15. Algoritmo de control de flujo de TCP (ventana deslizante), algoritmo de control de congestión

16. Cómo resolver el problema de múltiples instancias causado por los usuarios que hacen clic con frecuencia para abrir una nueva actividad (modo de inicio de actividad)

17. Cómo juzgar si dos listas acíclicas enlazadas individualmente se cruzan

18. Escriba el título: leetcode 445

19. Pregunta retórica

El volumen de preguntas secundarias es muy grande, se centra en los algoritmos Java / OS /, pero no hay preguntas que sean particularmente difíciles de responder. Si se prepara con cuidado, la mayoría de ellas se pueden responder. El entrevistador también fue muy amable y dio mucha orientación y consejos.

Debido al tiempo del entrevistador de tres lados, los tres lados de la cita dos días después
Inserte la descripción de la imagen aquí

Tres lados (~ 45min)

1. Introducción

2. Háblame del trabajo realizado por la pasantía. ¿Lo hiciste tú mismo ?, ¿Qué dificultades encontraste ?, ¿Cuáles fueron los resultados?

3. ¿Cómo implementa RecyclerView el almacenamiento en caché de elementos y cuál es la diferencia con ListView (porque el elemento se usa, así que me preguntaron)?

4. Escriba el título: leetcode 1233

5. Pregunta de diseño: función de lista de contactos de WeChat

(1) Diseñe una API para agregar contactos (responda en términos de posibles formas, formularios de datos y parámetros de interfaz)

(2) Cómo implementar la interfaz de usuario de la lista de contactos (RecyclerView para obtener respuestas)

(3) Cómo realizar la función de posicionamiento rápido de la primera letra de AZ

6. ¿Es un Android autodidacta? ¿Por qué elegiste esta dirección? ¿Tienes alguna experiencia para estudiantes más jóvenes que también quieran aprender por sí mismos?

7. ¿De dónde eres y por qué quieres trabajar en Shanghái?

8. Pregunta retórica

No hay muchas preguntas de tres caras, pero debido a que la mayoría de las preguntas no tienen respuestas estándar, la dificultad es mayor que una o dos.

Cuatro, las notas de estudio son indispensables

[Materiales de aprendizaje para el sistema de arquitectura avanzada de Android] Esencial para arquitectos avanzados: interpretación del marco de código abierto para ideas de diseño

[Materiales de aprendizaje para el sistema de arquitectura avanzada de Android Douyin Kuaishou debe aprender habilidades] -Desarrollo de módulos NDK [Materiales de aprendizaje del sistema de arquitectura avanzada de Android

] Necesario para ingresar a las grandes habilidades necesarias en la fábrica de BATJ para que los arquitectos construyan cimientos

[Materiales de aprendizaje del sistema para arquitectos sénior de Android] Flutter Skills of Senior Architect

Cinco, resumen de la experiencia

  1. Algunos entrevistadores no te dejarán presentarte, sube y pregunta directamente. Lo tengas o no, debes comunicarte bien con el entrevistador y hacer una buena autopresentación para hacerle saber su verdadero nivel. De lo contrario, piensa que eres competente en el cliente, desde la parte superior hasta la arquitectura de diseño, el código fuente o conocimientos básicos muy detallados.
  2. Cuando haga preguntas que sienta que superan su nivel de conocimiento, no diga tonterías y evite que el entrevistador continúe preguntando en esa dirección a tiempo. Por ejemplo , apenas conozco las delicadas detrás de la segunda cara de Jingdong , pero aún déjalo estar a merced. Es mejor aprender a guiar la entrevista.
  3. Aunque algunos problemas no son ciertos, aún puede haber espacio para el desarrollo. Puede tomar la iniciativa de admitir que no conoce muy bien esta cosa y luego decir: "Según mi comprensión de otro aspecto, si tuviera que diseñar esta cosa / ¿qué haría para resolver este problema?" No estoy muy familiarizado con esto, te puedo seguir hablando de otra cosa similar ”. Creo que no importa si esta respuesta es correcta o incorrecta, y él pensará que eres bueno pensando.
  4. Es mejor no responder a todas las preguntas de forma muy parecida a la escritura anterior, no responder una pregunta de forma demasiado superficial y comprender el conocimiento a fondo. De lo contrario, después de que se dé cuenta, encontrará una manera de desmantelar su estación o hacerle muchas preguntas.
  5. Aún es necesario dominar los conceptos básicos, de hecho, el principal problema es que la base del desarrollo no es buena. Por ejemplo, clasificación rápida manuscrita, recorrido no recursivo del árbol binario. Realmente no lo escribí en ese momento y no podía culpar a nadie.

Preguntas de la entrevista de Android (visualización parcial)

Estructura de datos y preguntas de la entrevista de algoritmo (visualización parcial)

análisis de compilación de código fuente (visualización parcial)

Marco de revisión de Android (visualización parcial)

Organice una colección de preguntas de entrevistas de las principales empresas (visualización parcial)

Inserte la descripción de la imagen aquí

Haga clic para obtener

Puede consultar mi [ GitHub ] si necesita conocimientos relevantes , y puede ignorar lo que ya ha dominado para ahorrar tiempo.

Supongo que te gusta

Origin blog.csdn.net/wzh19950826/article/details/114941229
Recomendado
Clasificación