Solo mire esto sin rodeos, "Esencia condensada: preguntas de la entrevista de programación simultánea en 2020"

Tomando prestado de la práctica de la programación concurrente de Java: no es fácil escribir el programa correcto, y es aún más difícil escribir un programa concurrente normal. En comparación con el caso de la ejecución secuencial, la seguridad de los subprocesos múltiples es sutil e inesperada, porque el orden de las operaciones en el subproceso múltiple es impredecible sin la sincronización adecuada.

La programación concurrente tiene una barrera de aprendizaje relativamente alta en comparación con otros puntos de conocimiento en Java, y es más laborioso de aprender, lo que ha provocado que muchas personas se mantengan alejadas; mientras que la implementación de entrevistas en el lugar de trabajo y sistemas de alta concurrencia y alto tráfico sigue siendo inseparable de la programación concurrente. Como resultado, se necesitan con urgencia en el mercado talentos que realmente puedan dominar la programación concurrente.
Inserte la descripción de la imagen aquí

texto

1) Hay tres subprocesos T1, T2 y T3. ¿Cómo se asegura de que T2 se ejecute después de que se ejecute T1 y T3 se ejecute después de que se ejecute T2?
Esta pregunta de hilo generalmente se hace en la primera ronda o en la etapa de la entrevista telefónica, el propósito es probar si está familiarizado con el método "unirse". Este problema de subprocesos múltiples es relativamente simple y se puede implementar con el método de unión.

2) ¿Cuáles son las ventajas de la interfaz de bloqueo sobre el bloque sincronizado en Java?
Necesita implementar una caché eficiente, que permita que varios usuarios lean, pero solo permita que un usuario escriba, para mantener su integridad, ¿cómo lo implementaría? La mayor ventaja de la interfaz de bloqueo en la programación simultánea y de subprocesos múltiples es que proporcionan bloqueos para lectura y escritura respectivamente. Puede satisfacerlo para escribir estructuras de datos de alto rendimiento como ConcurrentHashMap y bloqueo condicional. Las preguntas de la entrevista de hilo de Java se harán cada vez más en función de las respuestas del entrevistador. Le recomiendo encarecidamente que lea Locks detenidamente antes de ir a la entrevista de subprocesos múltiples, porque actualmente hay una gran cantidad de cachés del lado del cliente y espacios de conexión de transacciones que se utilizan para construir sistemas de transacciones electrónicas.

3) ¿La diferencia entre los métodos de espera y suspensión en Java?
Preguntas de entrevistas de hilo Java que a menudo se hacen en entrevistas telefónicas. La mayor diferencia es que esperar libera el bloqueo mientras espera, mientras que dormir siempre mantiene el bloqueo. La espera se usa generalmente para la interacción entre subprocesos y la suspensión se usa generalmente para suspender la ejecución.

4) ¿Implementar cola de bloqueo en Java?
Esta es una pregunta de entrevista de varios subprocesos relativamente difícil, que puede lograr muchos propósitos. Primero, puede detectar si el candidato puede realmente escribir programas con subprocesos de Java; segundo, puede detectar la comprensión del candidato de escenarios concurrentes y puede hacer muchas preguntas basándose en esto. Si usa los métodos wait () y notificar () para implementar colas de bloqueo, puede pedirle que use las últimas clases de concurrencia de Java 5 para escribirlo nuevamente.

5) ¿Escribir código en Java para resolver el problema productor-consumidor?
Es similar a la pregunta anterior, pero esta pregunta es más clásica, en ocasiones la entrevista hará las siguientes preguntas. Cómo resolver el problema productor-consumidor en Java, por supuesto, hay muchas soluciones, he compartido un método para lograr una cola de bloqueo. A veces incluso preguntan cómo darse cuenta del problema de la comida del filósofo.

6) Usando Java para programar un programa que provocará un interbloqueo, ¿cómo lo solucionaría?
Esta es mi pregunta favorita de la entrevista de hilo de Java, porque aunque el problema del interbloqueo es muy común cuando se escriben programas concurrentes de subprocesos múltiples, muchos candidatos no pueden escribir código libre de interbloqueo (¿código libre de interbloqueo?), Están luchando. Solo dígales que tiene N recursos y N subprocesos, y que necesita todos los recursos para completar una operación. En aras de la simplicidad, n se puede reemplazar con 2. Cuanto mayores sean los datos, más complicado será el problema. Obtenga más información sobre los interbloqueos evitando los interbloqueos en Java.

7) ¿Qué son las operaciones atómicas y qué son las operaciones atómicas en Java?
Pregunta de entrevista de hilo de Java muy simple, la siguiente pregunta es que necesita sincronizar una operación atómica.

8) ¿Cuál es el papel clave de los volátiles en Java? ¿Cómo usarlo?
¿En qué se diferencia del método sincronizado en Java? Desde que Java 5 y el modelo de memoria de Java cambiaron, los problemas de subprocesos basados ​​en la palabra clave volátil se han vuelto cada vez más populares. Debe estar preparado para responder preguntas sobre cómo las variables volátiles garantizan la visibilidad en un entorno concurrente.

9) ¿Cuáles son las condiciones de carrera? ¿Cómo descubres y resuelves la competencia?
Esta es una pregunta que aparece en la etapa avanzada de entrevistas multiproceso. La mayoría de los entrevistadores le preguntarán sobre las condiciones competitivas que ha encontrado recientemente y cómo las resolvió. A veces escribirán código simple y luego le permitirán detectar condiciones de carrera en el código. Puede consultar mi artículo anterior sobre las condiciones de carrera de Java. En mi opinión, esta es una de las mejores preguntas de la entrevista de hilo de Java. Puede detectar con precisión la experiencia del candidato en la resolución de condiciones de carrera o en la escritura de código sin datos de carrera o cualquier otra condición de carrera. El mejor libro sobre esto es "Prácticas de concurrencia en Java".
Inserte la descripción de la imagen aquí

10) ¿Cómo usarás threaddump?
¿Cómo analizará Thread dump? En UNIX, puede usar kill -3 y el volcado de subprocesos imprimirá el registro. En Windows, puede usar "CTRL + Break". Pregunta de entrevista muy simple y profesional, pero si te pregunta cómo analizarla, será complicado.

11) ¿Por qué ejecutamos el método run () cuando llamamos al método start ()? ¿Por qué no podemos llamar directamente al método run ()?
Esta es otra pregunta de entrevista multiproceso de Java muy clásica. Esta es también la confusión cuando comencé a escribir programas de hilo. Ahora bien, esta pregunta generalmente se hace en la entrevista telefónica o en la primera ronda de la entrevista Java de nivel medio. La respuesta a esta pregunta debería ser la siguiente: cuando llame al método start (), creará un nuevo hilo y ejecutará el código en el método run (). Pero si llama al método run () directamente, no creará un nuevo hilo ni ejecutará el código del hilo de llamada. Lea el artículo que escribí anteriormente "La diferencia entre los métodos de inicio y ejecución" para obtener más información.

12) ¿Cómo se despierta un hilo bloqueado en Java?
Este es un problema complicado sobre los hilos y el bloqueo, y tiene muchas soluciones. Si el hilo encuentra un bloqueo de E / S, no creo que haya una forma de abortar el hilo. Si el hilo se bloquea llamando a wait (), sleep () o join (), puede interrumpir el hilo y reactivarlo lanzando InterruptedException. El "Cómo lidiar con los métodos de bloqueo en Java" que escribí anteriormente tiene mucha información sobre cómo manejar el bloqueo de subprocesos.

13) ¿Cuál es la diferencia entre CycliBarriar y CountdownLatch en Java?
Esta pregunta de hilo se usa principalmente para verificar si está familiarizado con paquetes concurrentes en JDK5. La diferencia entre los dos es que CyclicBarrier puede reutilizar las barreras que han pasado, mientras que CountdownLatch no se puede reutilizar.

14) ¿Qué es un objeto inmutable y cómo ayuda escribir aplicaciones concurrentes?
Otra pregunta clásica de entrevistas de varios subprocesos no está directamente relacionada con los subprocesos, pero ayuda mucho indirectamente. Esta pregunta de la entrevista de Java puede volverse muy complicada si le pide que escriba un objeto inmutable o le pregunta por qué String es inmutable.

15) ¿Cuáles son los problemas comunes que encuentra en un entorno multiproceso?
¿Cómo lo resolviste? Los programas concurrentes y multiproceso se encuentran comúnmente en la interfaz de memoria, las condiciones de carrera, el punto muerto, el bloqueo activo y la inanición. El problema es infinito y, si comete un error, será difícil encontrarlo y depurarlo. Esto se basa principalmente en entrevistas, no en aplicaciones reales de preguntas de subprocesamiento de Java.

Fin de frase

Las respuestas a las preguntas de la entrevista anteriores están organizadas en notas de documentos. También resolví algunos materiales de la entrevista y las últimas preguntas de la entrevista recopiladas por las grandes empresas en 2020 (todo organizado en documentos, una pequeña parte de las capturas de pantalla), si lo necesita, haga clic para agregar el grupo: 1149778920 contraseña qf.
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/w1103576/article/details/108997386
Recomendado
Clasificación