Un resumen de la entrevista de un ingeniero senior de Java, el proceso real de la entrevista y las preguntas y respuestas de la entrevista

1. Habilidades para entrevistas

1. Memoriza tu currículum

Razón: La primera pregunta en la entrevista es generalmente para darle una breve introducción a sí mismo, o para presentar su proyecto reciente, y un entrevistador, si ni siquiera puede conocer su currículum, debe conocer el proyecto y la tecnología mencionados en él. Si no puede describirlo con claridad, no creo que ninguna empresa lo acepte. Incluso si es un súper talento, si no puede expresarse, probablemente sea un dolor de cabeza. Por lo tanto, recuerde: debe recordar su currículum y no preguntarle. Ser capaz de anotar todo, al menos las dos empresas con las que has estado recientemente, los proyectos que has realizado en estas dos empresas, los módulos de los que eres responsable, las tecnologías utilizadas en los proyectos y los esquemas de implementación técnica correspondientes (este Particularmente importante).

Debido a la extensión del artículo, es imposible mostrar todas las preguntas de la entrevista en forma de texto. Este artículo ha seleccionado algunas preguntas de la entrevista para todos. Si necesita esta versión completa de las notas de la entrevista, solo necesita obtener la información de la entrevista: Haga clic aquí para recibir !!! Contraseña: CSDN
Inserte la descripción de la imagen aquí

2. Comprender y memorizar en profundidad algunos conocimientos básicos de Java

Razón: la mayoría de las empresas harán una serie de preguntas básicas independientemente de si la entrevista es elemental o avanzada, ya sea una prueba escrita o una entrevista. Estas preguntas básicas probablemente incluyan jvm, string, collection, thread, etc., si dices que cada una te hace memorizar Si apenas lo memoriza, no puede recordarlo, por lo que está memorizando en comprensión. Tome jvm como ejemplo. Si se le pide que hable sobre su comprensión de jvm, primero debe saber qué estructura tiene la JVM y para qué se utiliza cada estructura. Y luego considere un objeto Java desde la creación hasta la recuperación, cómo abordar estas estructuras de la JVM. Si sintetizas la memoria a partir de estos aspectos, crees que obtendrás el doble de resultado con la mitad del esfuerzo y lo entenderás más a fondo.

En cuanto a si se le pide que hable sobre colecciones, por ejemplo, la diferencia entre ArryList, LinkedList, Vector y otras colecciones en List collection, entonces, de la misma manera, necesita entender cuál es la estructura de cada una, para que pueda saber qué hace, para que normalmente pueda El uso será más refinado y, en el proceso de entrevista, no quedará sin palabras.

3. Mantenga la confianza en sí mismo y una actitud serena y pesada.

Razón: En el proceso de la entrevista, la confianza en uno mismo es indispensable. Yo creo que se puede. En el camino de la entrevista, se puede decir: ¡Creo que puedo! De todos modos, hago esto, mi corazón insinúa, de hecho, al enfrentarse al entrevistador. Su estado de confianza en sí mismo también hará que el entrevistador se sienta una persona muy segura de sí misma, al menos en el sentido de que le dará una puntuación alta.

Otra cosa es mantener la pesadez y la calma. Si es para usted dar una solución técnica o hablar de un principio técnico determinado, no hay necesidad de estar nervioso y quejarse de todo. Puede decirle al entrevistador: primero lo pensaré y luego armaré la memoria yo mismo. El conocimiento en el idioma chino, ensambló el idioma y habló de manera ordenada, para que pueda expresar mejor sus talentos, ¿verdad? Todos estarán nerviosos en una entrevista y yo también estaré nervioso A veces olvido los puntos de conocimiento que recuerdo, no importa, digo con valentía que lo olvidé, o que no lo sé. Recuerda, no importa si no conoces algunas partes, si las conoces todas, entonces deberías estar en el nivel de CTO (es broma).

4. Trate de recordar que no puede responder o tiene preguntas inapropiadas durante la entrevista.

Motivo: está bien si la entrevista falla. Después de todo, los requisitos de cada empresa son diferentes. Las preguntas que haga pueden ser diferentes a las que se le dan bien, pero recuerde una cosa: durante la entrevista no puede responder a las preguntas o siente que ha respondido Escriba las preguntas inexactas usted mismo. Si no puede, puede preguntarle al entrevistador en el acto si tiene una buena respuesta. Si el entrevistador no está dispuesto a decírselo (por lo general, el aspecto básico del entrevistador es demasiado vago para responderle), entonces usted Vaya a casa y verifique la información lentamente. Si se trata de alguna tecnología específica, también puede escribir su propio caso. Después de todo, hay tantos puntos de conocimiento, las preguntas están cambiando, el principio sigue siendo el mismo, la entrevista también es un proceso de aprendizaje de conocimiento, vamos Comprende la tecnología que la mayoría de las empresas necesitan o requieren actualmente. No lo sé esta vez, lo sabré la próxima.

5. Antes de ir a la entrevista, lo mejor es comprender la situación de la empresa a la que vas a entrevistar.

Razón: como dice el refrán, conócete a ti mismo y a tu oponente, y nunca terminarás en una batalla. La entrevista es una batalla. Necesitas comprender la situación básica de la empresa que estás entrevistando, incluidos los requisitos laborales, para poder conocer aproximadamente los requisitos técnicos de la empresa que necesitas entrevistar. ¿Por qué desea comprender los principales productos y proyectos de la empresa? Es para brindarle una comprensión general de la arquitectura técnica de la empresa, lo que incluye que pueda cuestionar y dudar de uno de sus métodos de implementación. Creo que el entrevistador es muy Dispuesto a ayudarlo a responder estas preguntas. De esta manera, habrás demostrado rendimiento y conocimiento adquirido, así que ¿por qué no hacerlo?

6. Organice el tiempo de su entrevista de manera razonable

Razón: Se estima que muchas personas no entienden esto, tal vez la mayoría de la gente esté confundida acerca de cómo organizar el tiempo de la entrevista y hacerlo a voluntad. Pero aquí hay un truco. Si hay varias oportunidades de entrevistas al mismo tiempo, coloque la empresa a la que más desea ir para la entrevista al final, de modo que haya pasado por las proyecciones de empresas anteriores. Si tiene éxito, es una oportunidad. Si falla, También allana el camino para el último.

Sin embargo, hay dos puntos a considerar aquí: 1. Necesita recordar la compañía y la información básica de su currículum (esto significa que no es de Haitou) 2. Si no puede recordar, puede responder por un período de tiempo primero y luego conocer la información de la compañía. , Coordine con él por correo electrónico u otro medio para ajustar el tiempo de la entrevista. Y se recomienda concertar no más de dos empresas para la entrevista de un día, preferiblemente una por la mañana y otra por la tarde, para que tenga tiempo suficiente para ajustar su estado.

2. Resumen básico de las preguntas de la entrevista

1. Principio de estructura de JVM y detalles del mecanismo de trabajo de GC

Respuesta: Referencia específica: La estructura de JVM y el mecanismo de trabajo de GC se explican en detalle Cuando se trata de GC, recuerde dos puntos: 1. GC es responsable de recuperar todos los espacios de memoria sin ningún objeto referenciado. Nota: La recolección de basura recupera el espacio de memoria ocupado por objetos sin ninguna referencia en lugar del objeto en sí. 2. Dos algoritmos del mecanismo de recuperación de GC, a, método de recuento de referencias b, algoritmo de análisis de accesibilidad (aquí, alcanzabilidad, Puede ver el ciclo básico de 2 objetos Java), ya que para una introducción más detallada al algoritmo GC, puede consultar: Algoritmo del mecanismo Java GC.

2. El ciclo de vida de los objetos Java

Respuesta: La fase de creación, la fase de aplicación, la fase invisible, la fase inalcanzable, la fase de recolección, la fase final, la fase de redistribución del espacio de objetos, etc., se refieren al ciclo de vida de los objetos Java.

3. El principio de almacenamiento de Map o HashMap

Respuesta: HashMap se compone de una estructura de matriz + lista enlazada. Para más detalles, consulte el principio de realización de HashMap.

4. Cuando los campos A y B en la tabla de datos se indexan juntos, ¿habrá un efecto de índice cuando se usa A solo o B solo? (Cómo usar una consulta similar para tener efecto de índice)

Respuesta: Mire el índice de combinación de A y B. Quién está al frente y quién está atrás. Si A está al frente, entonces usar A solo tendrá un efecto de indexación, y usar B solo no lo hará, y viceversa. De la misma manera, cuando se usa una consulta difusa similar, si solo se usa el% anterior, entonces hay un efecto de índice, y si se usa el signo% doble para la coincidencia, entonces no hay efecto de índice.

5. ¿Cómo considerar la conversión de zona horaria al almacenar el formato de fecha en la base de datos?

Respuesta: Utilice TimeStamp, la razón es: el problema de conversión de zona horaria encontrado en la programación Java.

6. ¿Cuáles son los métodos de la clase JavaObject?

Respuesta: ¿Cuáles son los métodos de Object?

7. Protocolo HTTP, la diferencia entre GET y POST

Respuesta: Hable sobre la diferencia entre GET y POST en HTTP.

Tres, hilo, patrón de diseño, caché

1. SimpleDataFormat no es seguro para subprocesos, ¿cómo usarlo mejor y evitar riesgos?

Respuesta: Acerca del problema de seguridad de subprocesos de formato de hora segura de SimpleDateFormat.

2. Cómo mirar los patrones de diseño y hablar brevemente sobre su comprensión del patrón del observador

Respuesta: 1. Los caballos mágicos utilizan el patrón de diseño 2. El diagrama de clases y la realización del patrón del observador.

3. Cómo compartir sesiones en un entorno de clúster

Respuesta: 1. Uso compartido de sesiones del clúster de Java 2. Solución de uso compartido de múltiples servidores de sesión Otra solución es utilizar un servidor fijo para mantener la sesión exclusivamente y compartirla con otros servidores.

4. En un entorno distribuido y agrupado, ¿cómo actualizar la caché y cómo mantenerla sincronizada?

Respuesta: A. ¿Cómo actualizar la caché? 1. Actualización regular 2. Cobertura de actualización activa. Cada marco de caché tiene su propio mecanismo de actualización, o mecanismo de invalidación de caché. Tome Redis y Ehcache como ejemplos. Tienen su propio mecanismo de vencimiento. Además, cuando se actualizan y cubren activamente, Solo obtenga la clave correspondiente para sobrescribir los datos.

B. ¿Cómo mantener la caché sincronizada? Este redis tiene su propio mecanismo de sincronización de clúster, es decir, la función de replicación. Para más detalles, consulte: Basado en la implementación de la caché distribuida de Redis, Ehcache también tiene la configuración de sincronización de caché distribuida. Solo necesita configurar diferentes direcciones de servidor. Consulte: Sincronización de caché distribuida de Ehcache.

5. ¿Cómo se optimiza la ejecución de SQL durante demasiado tiempo ?, ¿de qué formas?

Respuesta: 1. Verifique si sql involucra múltiples tablas o subconsultas. Si es así, vea si se pueden realizar divisiones de negocios, si los campos relacionados son redundantes o se fusionan en tablas temporales (optimización de negocios y algoritmos);

2. Para consultas que involucren listas enlazadas, si es posible realizar una consulta de subtabla e integración de campos para los resultados después de la consulta de una sola tabla;

3. Si ninguna de las dos operaciones anteriores es posible y la consulta de la lista vinculada es obligatoria, considere indexar las condiciones de consulta correspondientes. Acelere la consulta;

4. Separación de tablas históricas para una gran cantidad de tablas (como tablas de flujo de transacciones);

5. Separación de la base de datos maestro-esclavo, separación de lectura y escritura, para reducir la presión de lectura y escritura de la misma tabla al mismo tiempo.En cuanto a la sincronización maestro-esclavo, MySQL tiene su propio binlog para lograr la sincronización maestro-esclavo;

6. Explicar analiza la declaración sql, ver el plan de ejecución, analizar si se utiliza el índice, analizar el número de filas escaneadas, etc .;

7. Verifique el registro de ejecución de mysql para ver si hay otros problemas;

Comprensión personal: Básicamente hablando, la consulta lenta es que ocupa más memoria en mysql, por lo que puedes considerarla desde este aspecto.

Cuatro, plan de diseño relacionado

La entrevista también hará algunas preguntas sobre el plan de diseño, tales como:

1. Alguien interceptó los datos de su servicio de interfaz. ¿Cómo puede evitar el envío malicioso de datos?

Respuesta: Podemos establecer un número de servicio en los parámetros de transmisión de la interfaz, este número se usa para distinguir si enviar repetidamente. De esta forma, incluso si se capturan los datos, la otra parte no puede distinguir el significado de cada campo, en este momento viene la función de este número comercial.

2. Suponiendo que el servidor se cae con frecuencia, ¿qué aspectos soluciona?

Respuesta: Dejaré esto a los jueces para que lo agreguen.

En resumen, lo que debe verse aún está por verse y lo que debe aprenderse aún está por aprender. Una vez más, ¡la base es muy importante! Las habilidades para entrevistar también son muy importantes, o la misma frase: Espero que puedas encontrar tu trabajo favorito ~~

Además, recomiendo a todos que no cambien de trabajo con frecuencia. Estos puntos de conocimiento pueden mejorarse. No cambie de trabajo a ciegas. Es agotador encontrar un trabajo. Y a ninguna empresa le gustan los empleados que cambian de trabajo con frecuencia.

5. ¿Qué tecnologías deben aprender los programadores de Java cuando cambian de trabajo?

Los productos de Internet y los grandes proyectos de nivel empresarial suelen utilizar:

1. Tecnología de procesamiento concurrente.

Específicamente para Java, generalmente involucra java.util.concurrent, mecanismo de bloqueo concurrente, NIO, etc. Por supuesto, el recientemente popular marco Netty también se puede usar como una de las alternativas para un alto procesamiento concurrente, que requiere el mecanismo de programación de subprocesos de Java Comprensión más profunda. Sin embargo, estos objetos que pueden involucrar control de concurrencia (como reentrantlock, etc.) solo pueden existir en una JVM. Una vez que el sistema es lo suficientemente grande como para implementar múltiples JVM para manejar concurrencia, es necesario adoptar una tecnología de sesión compartida (como spring -session), o diseñar el backend del sistema como un servicio sin estado tanto como sea posible, lo que requiere una comprensión profunda de RESTful.

2. Alta disponibilidad, tecnología de equilibrio de carga.

Los productos de Internet y las aplicaciones de nivel empresarial generalmente requieren un tiempo de inactividad dentro de un año para ser controlado dentro de un rango pequeño. Esto requiere suficiente alta disponibilidad y arquitectura de equilibrio de carga para soportarlo. Esto generalmente no tiene nada que ver con la tecnología Java en sí, pero Es una tecnología necesaria para que los programadores junior avancen a programadores senior e incluso arquitectos CIO, para que pueda comprender adecuadamente el soporte de Nginx, HAProxy, etc. en este sentido. Además, el enfoque más "de moda" ahora es dockerizar la aplicación y cooperar con herramientas como ETCD y kubernetes para lograr una alta disponibilidad y equilibrio de carga a nivel de contenedor. Por supuesto, esto depende de las necesidades reales. El más moderno puede no ser el más aplicable. Considere el costo de construcción.

3. Tecnología de caché.

El almacenamiento en caché debe ser la verdad eterna para mejorar la velocidad de respuesta en sistemas grandes o en condiciones de alta concurrencia (aunque he visto artículos sin caché implementados por la tecnología de procesamiento de big data utilizada en la función de producto de búsqueda de Taobao, puede alcanzar el volumen de Taobao Y el nivel técnico es generalmente poco probable), hay demasiadas herramientas en esta área, ehcache, memcached, redis ... Desde la perspectiva de Java, uno necesita entender el conector de Java a estas herramientas, y el otro es la tecnología de almacenamiento en caché detrás Estándar JSR-107, puede consultar la implementación de spring-cache, lea el código fuente para profundizar su comprensión.

4. Tecnología de procesamiento asincrónico.

Este suele ser uno de los métodos de procesamiento para contrarrestar la alta concurrencia. Desde la perspectiva de Java, el procesamiento asíncrono más simple es iniciar un subproceso asíncrono. Esto también requiere una comprensión de la programación de subprocesos de Java. Por supuesto, también puede usar @ en Spring. Async y similares también pueden simplemente implementar el procesamiento de subprocesos asincrónicos. Si se trata de un procesamiento empresarial que consume muchos recursos, los subprocesos asincrónicos simples no pueden satisfacer las necesidades. Esto requiere algún middleware de mensajes para realizar estos procesamientos asincrónicos. Hay muchos middleware de mensajes, activemq, rabbitmq, kafka ... Conector de Java a estos middleware. Sin embargo, el problema más crítico en el procesamiento asincrónico es el tema de las garantías de transacción, que pueden requerir una comprensión del compromiso de transacción en dos pasos.

Supongo que te gusta

Origin blog.csdn.net/a3961401/article/details/108876710
Recomendado
Clasificación