Desde empresas tradicionales hasta Byte, Meituan, JD.com, hasta la oferta ganadora de Huawei, el camino del contraataque de los programadores.

Prefacio

En junio, Shuiyou me dijo que quería cambiar de trabajo y permanecer en una empresa tradicional no era una forma. En ese momento, me preparé durante dos meses y finalmente recibí una oferta de Huawei. ¡Experimentemos la experiencia de la entrevista de los grandes juntos!

antecedentes

211 libros, 985 maestrías, han estado en empresas tradicionales desde la graduación. Desde finales de junio, comencé a tomar el pelo y a leer las preguntas, y luego, a finales de agosto, comencé a prepararme para el reclutamiento de otoño. He recibido algunas ofertas hasta ahora y estoy listo para firmar con Huawei .

 

Jingdong

JD.com fue la primera empresa en entrevistar, aunque ya pasó, JD.com se ha convertido en un mar, y se estima que no podrá conseguirlo.

Un lado (entrevista telefónica 40min)

  1. Pregunte qué hace el estudiante y si ha tomado cursos relacionados con la informática.

  2. ¿Cómo reconoce Spring la solicitud http para encontrar el controlador correspondiente?

  3. ¿Se moverá el objeto en la memoria del montón?

  4. ¿Se puede usar Integer == para juzgar la igualdad (-128 a 127 tienen caché)

  5. Por qué reescribir es igual a reescribir código hash (respuesta porque hay algunos escenarios en los que se usa código hash, como set, que primero juzgará si el código hash es el mismo y luego juzgará por iguales)

  6. Algoritmos comunes de recolección de basura de JVM y cuáles son sus desventajas

  7. Nuevo un objeto objeto, y luego asignarlo a una variable estática, y luego preguntar cuál es el proceso en la memoria JVM (la respuesta colocará el objeto de instancia creado en el área de memoria del montón y luego asignará la dirección de memoria del objeto a la referencia del símbolo , Deje que este símbolo de referencia apunte al área de memoria del montón correspondiente)

  8. ¿Cambiará la dirección de memoria del montón de este objeto (sí, porque la recolección de basura transferirá el objeto, como copiar y marcar)?

  9. Ingrese la URL en el navegador, ¿cómo se ve todo el proceso?

    • ¿Cómo maneja Spring las solicitudes HTTP?

      Una vez que DispatcherServlet recibe la solicitud HTTP, encontrará el controlador apropiado Controller para procesar la solicitud. Obtiene el URI analizando la URL de la solicitud HTTP y luego obtiene el Handler correspondiente a la solicitud del Handler Mapping de acuerdo con el URI. Y el controlador interceptor HandlerInterceptor, y finalmente regresó en forma de HandlerExecutionChain.

      DispatcherServlet selecciona el adaptador apropiado HandlerAdapter de acuerdo con el Handler obtenido. Si el adaptador HandlerAdapter se obtiene con éxito, su método interceptor preHandler () se ejecutará primero antes de llamar al Handler.

      El método preHandler () extrae los datos de la solicitud HTTP y los completa en los parámetros de entrada del controlador, y luego comienza a llamar a los métodos relacionados del controlador (es decir, el controlador).

      Una vez que se ejecuta el controlador, devuelve un modelo y un objeto de nombre de vista ModelAndView al despachador frontal DispatcherServlet.

      El pre-despachador DispatchServlet selecciona un solucionador de vistas adecuado ViewResolver de acuerdo con el modelo y el objeto de nombre de vista ModelAndView, siempre que el solucionador de vistas deba haberse registrado en el contenedor Spring IOC.

      El solucionador de vistas ViewResolver obtendrá una Vista de vista específica de acuerdo con el nombre de vista especificado en ModelAndView.

      El despachador previo DispatchServlet llena los datos del modelo en la vista y luego devuelve el resultado de la representación al cliente.

  10. ¿Cuál es el formato del mensaje HTTP (línea de solicitud, encabezado de solicitud, línea en blanco, cuerpo de solicitud)

  11. ¿Dónde existe la cookie en http?

  12. La diferencia entre cookie y sesión

  13. El tipo de índice en mysql y el principio más a la izquierda del índice conjunto

  14. ¿Alguna vez ha entendido el índice de cobertura (no lo entiende)?

    Si un índice contiene (o cubre) los valores de todos los campos que necesitan consultarse, se denomina "índice de cobertura". Es decir, solo se escanea el índice sin volver a la tabla. Las ventajas de escanear solo el índice sin volver a la tabla: 1. Las entradas del índice suelen ser mucho más pequeñas que el tamaño de la fila de datos, solo es necesario leer el índice, mysql reducirá en gran medida la cantidad de acceso a los datos. 2. Debido a que el índice se almacena en el orden de los valores de columna, la búsqueda de rango intensivo de IO será mucho menor que la IO para leer aleatoriamente cada fila de datos del disco. 3. Algunos motores de almacenamiento como myisam solo almacenan en caché los índices en la memoria, y los datos dependen del sistema operativo para el almacenamiento en caché. Por lo tanto, para acceder a los datos, se requiere una llamada al sistema. 4. Índice agrupado de Innodb. Los índices de cobertura son particularmente útiles para tablas innodb. (El índice secundario de Innodb guarda el valor de la clave principal de la fila en el nodo hoja, por lo que si la clave principal secundaria puede cubrir la consulta, puede evitar la consulta secundaria del índice de clave principal)

    El índice de cobertura debe almacenar el valor de la columna de índice, mientras que el índice hash, el índice espacial y el índice de texto completo no almacenan el valor de la columna de índice, por lo que mysql solo puede usar el índice B-tree como índice de cobertura.

  15. Cómo se realiza la transacción.

  16. ¿MVCC lo sabe?

  17. Nivel de aislamiento de transacciones, qué problemas se pueden resolver respectivamente

  18. Hablar sobre problemas de seguridad de subprocesos

  19. La diferencia entre sincronizado y bloqueo

  20. Métodos sincronizados y principios subyacentes

    El método de sincronización está implícito. Una parte de sincronización *** almacena el identificador ACC_SYNCHRONIZED en la estructura method_info en el grupo de constantes de tiempo de ejecución. Cuando un hilo accede a un método, verificará si existe un indicador ACC_SYNCHRONIZED, si lo hace, primero debe obtener el bloqueo de monitor correspondiente y luego ejecutar el método. Cuando finaliza la ejecución del método (independientemente de si es un retorno normal o una excepción), se liberará el bloqueo del monitor correspondiente. Si otros subprocesos también desean acceder a este método en este momento, se bloquearán porque no pueden obtener el bloqueo del monitor. Cuando se lanza una excepción en un método sincrónico y no hay captura en el método, el bloqueo del monitor adquirido se liberará primero al descartar

  21. El método de realización del bloqueo y el principio subyacente (CAS volátil, luego AQS, luego bloqueo exclusivo y bloqueo compartido)

  22. Parámetros del grupo de subprocesos

  23. Pregunta de escenario, la cantidad de subprocesos centrales es 6, la cantidad máxima de subprocesos es 10, la cola no está limitada y luego hable sobre el proceso. (Debido a la cola ilimitada, la cantidad de subprocesos en el grupo de subprocesos no excederá de 6, y las tareas en la cola de espera solo se pueden ejecutar después de que los subprocesos hayan terminado de procesar las tareas. Hablando de la estrategia de saturación desde el principio)

  24. ¿Entiendes el modelo de delegación parental (Barabara)

  25. Cómo destruir (implemente el cargador de clases usted mismo, luego reescriba el método de carga de clases, luego ingrese a Tomcat y luego pregunte a Tomcat por qué hace esto, realmente quiero abofetearme, tantas palabras)

  26. Más bien, pregunte en qué departamento se encuentra el entrevistador y qué hace.

  27. ¿Hay alguna oferta? (No)

35min en ambos lados

  1. Auto presentación
  2. Introducción al proyecto, arquitectura
  3. Grupo de subprocesos, ¿es útil para varios subprocesos? ¿Cómo se sincronizan los subprocesos?
  4. Cómo crear un índice en mysql
  5. Si la aplicación se implementa en una sola máquina o en varias máquinas
  6. Modo de implementación de Redis (maestro-esclavo y centinela)
  7. ¿Cuál es el tema de investigación actual?
  8. Modelo de aprendizaje profundo, que es CRNN CTPN, todo el marco
  9. ¿Ha estado en contacto con Distributed?
  10. Pregunta retórica

Superficie de asalto telefónico 30min

    1. Pregunte al proyecto

    2. Pregunte los conceptos básicos de Java

    3. Pregunte a redis

    4.sql eliminar datos duplicados, mantener uno

eliminar de la tabla donde sexo = (seleccione el sexo del grupo de la tabla por sexo teniendo recuento (*)> 1) Esto es para eliminar todo

Eliminar de la tabla donde no está el id (seleccione min (id) como id del grupo de la tabla por sexo)

    5. El principio de hashmap

    6. La naturaleza de la seguridad de los hilos, cómo garantizar la seguridad de los hilos

    7. ¿Cuándo aprendiste Java?

    8. Pregunta retórica

Cara de recursos humanos 

  1. Auto presentación
  2. Pregunte para aprender, cómo hacerlo cuando se encuentre con campos desconocidos, cómo aprender
  3. Hay algun objeto
  4. Que oferta y como elegir
  5. planificación de la carrera
  6. Pregunta retórica

 


byte

Un lado (70min)

  1. Auto presentación
  2. La diferencia entre select y epoll, disparador horizontal y disparador vertical
  3. ¿Dónde existe el archivo so en la memoria?
  4. Algoritmo de reemplazo de página
  5. Memoria virtual, ¿por qué la memoria virtual es mucho más grande que la memoria física?
  6. La estructura de la memoria del proceso.
  7. La diferencia entre el overclocking de la CPU y el hyperthreading, cuáles son las ventajas del overclocking, hyperthreading (no lo sé)
  8. Cómo evitar syn-flood en TCP
  9. Compresión negociada en HTTP
  10. ¿Cómo se da la mano websocket?
  11. La diferencia entre == y es igual
  12. La diferencia entre hashmap y hashtable, la diferencia entre clases abstractas e interfaces
  13. ¿Cuáles son los algoritmos HASH comunes? ¿Ha aprendido sobre el hash consistente, por qué hay nodos virtuales y los escenarios de aplicación del hash consistente (caché distribuida)?
  14. El método para resolver la colisión de hash, ¿existe otro que no sea el método de dirección abierta y el método de cremallera?
  15. Recolección de basura, algoritmo de recolección, elija un recolector para presentar
  16. ¿Cuáles son los tipos comunes, el proceso de combinación de clasificación y clasificación de pila?
  17. Para qué se utiliza Kafka, cómo garantizar la alta disponibilidad del sistema, cómo garantizar que los mensajes no se pierdan
  18. comando linux eliminar línea en blanco
  19. Cómo verificar la cantidad de núcleos de CPU en linux, lscpu cat / proc / cpuinfo top
  20. Estructura de datos común de Redis
  21. modo centinela de redis
  22. Se eliminan los datos caducados de Redis, qué debo hacer si la memoria está llena, qué estrategia es la predeterminada (no desalojo, informar un error cuando está lleno, prohibir la eliminación de datos)
  23. Control de congestión en redes informáticas
  24. Problema de algoritmo, la suma de los números desde el nodo raíz hasta los nodos hoja.
  25. Archivo de tamaño 1G, memoria 1M, cada línea consta de palabras, encuentre las 100 con mayor frecuencia. (Fusionar) montón mínimo

 

Dos lados (80min)

  1. Auto presentación
  2. ¿Qué sucede si epoll no termina de procesar los datos?
  3. Estado de TCP correspondiente a conectarse y aceptar
  4. Sistema de archivos del contenedor
  5. ¿Cómo logra el contenedor el aislamiento de recursos de la CPU?
  6. Cómo expandir ConcurrenHashMap y su mecanismo de implementación
  7. Solución al conflicto de hash
  8. Condiciones para interbloqueo
  9. Condiciones mutuamente excluyentes (condiciones inalienables, condiciones de solicitud y espera, condiciones de espera de bucle)

  10. Las características de la transacción mysql, el nivel de aislamiento, los problemas que se pueden resolver, el bloqueo de la página (se escuchará el encabezado)
  11. Pregunta de algoritmo:
-有序的二维数组查找

-LRU+TTL

 

Tres lados (40 min)

  1. Auto presentación, pregunta del proyecto
  2. Qué aspectos de redus se utilizan en proyectos, estructuras de datos de uso común, cómo se implementa zset y escenarios de aplicación de zset
  3. ¿Cómo logra la UDP una transmisión confiable, cómo garantizar una transmisión confiable de archivos grandes y cómo realizar una transmisión de punto de interrupción?
  4. Algoritmo de equilibrio de carga de Nginx, algoritmo hash consistente, cómo implementar hash consistente con peso
  5. ¿Cuántos bytes tiene el número de secuencia en el encabezado de TCP y por qué se usa así?
  6. Lo que has aprendido cómo aprender tecnología.
  7. Modelo de red de contenedor (docker)
  8. Temas de investigación relacionados
  9. Pregunta retórica

 Superficie de FC (30min)

     Pregunté principalmente qué ofertas, dónde planeo ir, si hay novias y algunas explicaciones conceptuales de problemas técnicos.


 

Huawei

Un lado (30min)

  1. Auto presentación
  2. . Pregunta al proyecto, preséntate
  3. 3. Problema de algoritmo: Dada una matriz, averigua el perímetro máximo que puede formar un triángulo en ella y devuelve 0.
  4. 4.patrón de diseño de Java (patrón de plantilla, patrón de agente, patrón de fábrica, patrón singleton)
  5. 5. La diferencia entre la clasificación rápida y la clasificación combinada (ambas se basan en la idea de dividir y conquistar, la clasificación fusionada es una clasificación estable, O (nlogn), el peor de los casos es el mismo, la clasificación rápida es inestable tiempo de clasificación complejidad O (nlogn ), el peor de los casos es O (n2))
  6. 6. ¿Cuál es la función del uso final (variables, clases, métodos modificados)
  7. 7. Objetos inmutables
  8. 8. Busque el pedido posterior de acuerdo con el pedido intermedio del pedido anticipado

Dos lados (40min)

1. Introducción

2. Principios de diseño orientado a objetos, principios de responsabilidad única, principios de apertura y cierre (cómo lograrlo)

3. Diseñe patrones con los que esté familiarizado (patrón de plantilla, patrón de agente, patrón de fábrica, patrón de singleton)

4. Middleware (redis, kafka)

5. declaración de mysql, consultar un campo, ordenar por un campo, mostrar cuántos contenidos hay en una página

6. Preguntas algorítmicas: deletrear palabras, palabras que pueden ser deletreadas por caracteres.

Tres lados (45min)

1. Introducción

2. Profundizar en el proyecto (competencia de WeBank, criterios de selección, criterios para obtener resultados, de qué es usted responsable, división del trabajo, si el equipo tiene diferencias, cómo resolverlas, si el proyecto encuentra algún problema, cómo resolverlo, Si desea comercializar esto, cómo mejorarlo, ¿ha considerado problemas de seguridad, cómo juzgar el acceso malicioso?

3. Preguntado al proyecto de investigación científica, ¿encontró algún problema, cuál fue el problema más difícil encontrado, cómo resolverlo y si ha visto el código fuente?

4. Pregunta retórica (pregunta sobre la composición del departamento y cuál es la conexión y la colaboración (Internet de las cosas))

En ese momento, Byte y JD dudaron directamente durante mucho tiempo y finalmente eligieron Huawei.

 


Meituan (Liang Jing)

un lado

     1. Introducción

     2. Proyecto de chat

     3. Desgarra mysql a mano, consulta el video más bajo demanda

seleccione viod_name de la tabla order by times desc limit 0,1

     4. mysql, consulta al usuario más alto bajo demanda

seleccione ID de usuario, cuente (*) como tiempos del grupo de tablas por orden de ID de usuario por tiempo límite desc 0,1

    5. Estructura de datos de Redis, por qué el rendimiento de Redis es bueno

    6. Mecanismo de caducidad de Redis y estrategia de eliminación de memoria

    7. Método de persistencia de Redis (sin respuesta)

    8. Problema de concurrencia de Redis (sin respuesta, dos usuarios modifican una clave al mismo tiempo)

    9. Cómo se realiza redis lru. (Realizado por lista enlazada)

   10.Java collection, cómo resuelve concurrenthashmap el problema de concurrencia y cómo lo resuelve Hashtable.

   11. Algoritmo de recolección de basura de uso común (parralell)

   12. ¿Cómo resuelve cms el problema de la fragmentación de la memoria (full gc)

  • Aumentar Xmx o disminuir Xmn

  • Cuando el tráfico de la aplicación sea más bajo, llame a System.gc () activamente en el programa, por ejemplo, todas las mañanas.

  • Una vez que la aplicación se inicia y completa todo el trabajo de inicialización, llama activamente a System.gc (), que puede comprimir los datos inicializados en un solo fragmento para liberar más espacio de memoria continuo para la promoción de nueva generación.

  • Baje el parámetro -XX: CMSInitiatingOccupancyFraction para ejecutar la acción CMSGC antes. Aunque CMSGC no comprimirá ni organizará los fragmentos de memoria, fusionará los espacios libres adyacentes de la generación anterior. Esto puede adaptarse a más comportamientos de promoción de nueva generación.

   13. El principio de indexación de mysql

   14. El proceso y el estado de las cuatro ondas

   15. Pregunta de algoritmo: encuentre la suma entera de dos tipos de cadena String num1 = "123"; String num1 = "456"; Add and reverse

 

Dos lados (80min)

    1. Introducción

    2. Cuéntame sobre las cosas específicas del proyecto y cómo ahorrar el número de personas que miran en línea.

    3. Optimización de tablas grandes de mysql

    4. ¿Ha utilizado algún comando de redis (ninguno)?

    5. Qué tablas hay en la base de datos

    6. ¿Cuál es la función más difícil de implementar en el proyecto?

    7. La diferencia entre proceso e hilo

    8. Por qué el cambio de proceso es lento y el cambio de hilo es rápido

    9. Cómo lograr subprocesos múltiples

    10. ¿Qué son los grupos de subprocesos, cómo crearlos, parámetros del grupo de subprocesos, ha utilizado grupos de subprocesos (ninguno)

    11. ¿Cuáles son los estados del hilo, cómo hacer que el hilo entre en estado de bloqueo, la diferencia entre bloqueo, no bloqueo, sincrónico y asincrónico?

    12.Modelo de memoria JVM

    13. Preguntas algorítmicas

两个链表相加,1-2-3-4-5,1-2-3-4结果就是1-3-5-7-9

两个线程交替打印奇数和偶数(说了想法,没有写)

    14. ¿Ha estado leyendo algún libro recientemente? ¿Ha estado expuesto a nuevas tecnologías?

    15. ¿Hay alguna oferta?

No recibí ningún aviso más tarde, fue genial. Para una pregunta de algoritmo tan simple, el entrevistador miró la expresión débil de su rostro en ese momento y me asustó. 

 


Escribir al final

 

     El cielo premia el trabajo duro. Aunque es tarde para prepararse, habrá buenos resultados con el trabajo duro. Habrá confusión y pérdida en el medio, pero me mordí la cabeza y me cepillé unas 400 preguntas en menos de 2 meses.

    Por supuesto que lo más importante es perseverar y no rendirse. todo estará bien. Hay otro pueblo en la oscuridad. Siempre habrá una oferta, no te subestimes. La perseverancia conducirá a la victoria. ! !

   Finalmente, compartiré el 100% de la información de la entrevista con todos de forma gratuita y ayudaré a todos a obtener una promoción y un aumento de salario.

Recopilación de información: Haga clic aquí para obtenerla gratis, contraseña: CSDN

 

Me encanta la programación, me encanta compartir, ¡escuché que aquellos a los que les gusta + seguir se han unido a la gran fábrica! ! !

 

 

Supongo que te gusta

Origin blog.csdn.net/qq_43080036/article/details/109226628
Recomendado
Clasificación