Los problemas de lectura múltiple y concurrencia son una parte esencial de cualquier entrevista de Java. Si desea obtener una posición de información frontal en cualquier banco de inversión de acciones, debe preparar muchas preguntas sobre la lectura múltiple. La lectura múltiple y la concurrencia son un tema muy popular en la banca de inversión, especialmente relacionado con el desarrollo de transacciones electrónicas. Le preguntarán a los entrevistadores muchas preguntas confusas de enhebrado de Java. El entrevistador solo quiere asegurarse de que el entrevistador tenga suficiente conocimiento del enhebrado y la concurrencia de Java, porque muchos de los candidatos solo son superficiales. Los sistemas de comercio electrónico de alta capacidad y baja latencia para transacciones directas orientadas al mercado son inherentemente concurrentes. Las siguientes son preguntas de enhebrado de Java que me gusta hacer en diferentes momentos y lugares. No proporcioné una respuesta, pero te daré pistas siempre que sea posible, y a veces estas pistas son suficientes para responder preguntas. Ahora hay más y más problemas que se refieren a los paquetes concurrentes de Java5 con respecto a las herramientas concurrentes y las colecciones concurrentes. Threadlocal, la cola de bloqueo, el contando Semaphore y el Constrenthashmap son más populares entre esas preguntas.
15 preguntas y respuestas de entrevistas multiprocesos de Java
1) Ahora hay tres hilos T1, T2 y T3.
Esta pregunta de hilo generalmente se hace durante la primera ronda o en la etapa de entrevista telefónica, con el propósito de verificar si está familiarizado con el método "unirse". Este problema de subprocesos múltiples es relativamente simple y se puede implementar utilizando el método de unión.
2) ¿Cuáles son las ventajas de la interfaz de bloqueo sobre el bloque sincronizado en Java? Debe implementar un caché eficiente que permita a varios usuarios leer pero solo un usuario escribir para mantener su integridad.
La mayor ventaja de las interfaces de bloqueo en la programación múltiple y concurrente es que proporcionan bloqueos para leer y escribir por separado, lo que puede satisfacerle a escribir estructuras de datos de alto rendimiento como ConcurrentHashmap y el bloqueo condicional. Las preguntas de la entrevista del hilo de Java se hacen cada vez más según las respuestas del entrevistador. Recomiendo encarecidamente leer los bloqueos cuidadosamente antes de ir a una entrevista multiproceso, porque actualmente se utiliza para construir la memoria caché del cliente de transacciones electrónicas y el espacio de conexión de transacciones.
3) ¿Cuáles son las diferencias entre los métodos de espera y sueño en Java?
Preguntas de la entrevista de hilo de Java que a menudo se hacen durante las entrevistas telefónicas. La mayor diferencia es que la espera libera la cerradura mientras espera, mientras que el sueño siempre sostiene la cerradura. La espera generalmente se usa para interacciones entre huellas, y el sueño generalmente se usa para detener la ejecución.
4) Use Java para implementar colas de bloqueo.
Esta es una pregunta de entrevista múltiple relativamente difícil, que puede lograr muchos objetivos. Primero, puede detectar si el candidato puede escribir programas en los hilos de Java; Si usa métodos Wait () y notificar () para implementar colas de bloqueo, puede pedirle que vuelva a escribir con las últimas clases concurrentes en Java 5.
5) Use Java para escribir código para resolver el problema del consumidor del productor.
Es muy similar a la pregunta anterior, pero esta pregunta es más clásica. ¿Cómo resolver el problema del consumidor del productor en Java? A veces incluso preguntan cómo darse cuenta del problema de los filósofos que comen.
6) ¿Cómo resolverá el problema de programar un programa que causará un punto muerto en Java?
Esta es mi pregunta favorita de la entrevista de hilo de Java, porque aunque los problemas de punto muerto son muy comunes al escribir programas concurrentes múltiples, muchos candidatos no pueden escribir un código gratuito (¿sin código de punto muerto?) Y luchan. Simplemente dígales que tiene n recursos y n hilos, y necesita todos los recursos para completar una operación. Para simplificar, N puede ser reemplazada por 2, cuanto más grandes sean los datos que el problema parezca más complicado. Obtenga más información sobre los puntos muertos evitando los puntos muertos en Java.
7) ¿Qué es la operación atómica y qué es la operación atómica en Java?
Pregunta de la entrevista de hilo Java muy simple, la siguiente pregunta es que necesita sincronizar una operación atómica.
8) ¿Cuál es el papel clave de Volátil en Java? ¿Cómo usarlo? ¿Cómo es diferente del método sincronizado en Java?
Desde que los modelos de memoria Java 5 y Java han cambiado, los problemas de roscado basados en la palabra clave volátil se han vuelto cada vez más populares. Debe estar listo para responder sobre cómo las variables volátiles aseguran la visibilidad en un entorno concurrente.
9) ¿Qué son las condiciones de competencia? ¿Cómo descubres y resuelven la competencia?
Esta es una pregunta que aparece en la etapa avanzada de entrevistas múltiples. La mayoría de los entrevistadores preguntarán sobre las condiciones de competencia que ha encontrado recientemente y cómo lo resolvió. Hay momentos en que escriben un código simple y luego le permiten detectar las condiciones de carrera para 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, que puede detectar con precisión la experiencia de los candidatos para resolver condiciones de carrera, o escribir código que está libre de carrera de datos o cualquier otra condición de carrera. El mejor libro sobre esto es "prácticas de concurrencia en Java".
10) ¿Cómo usarás el volcado de subprocesos? ¿Cómo analizará el volcado de hilos?
En UNIX, puede usar Kill -3, y luego el volcado de subprocesos imprimirá el registro. Pregunta de entrevista de hilo muy simple y profesional, pero será complicado si le pregunta cómo analizarla.
11) ¿Por qué ejecutamos el método Run () cuando llamamos al método Start () y por qué no podemos llamar directamente al método Run ()?
Esta es otra pregunta muy clásica de entrevista de Java Multi-Thread. Esta es también mi confusión cuando comencé a escribir programas de subproces. Ahora esta pregunta generalmente se hace durante la entrevista telefónica o la primera ronda de entrevista de Junior y Middle Java. La respuesta a esta pregunta debe ser así: 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 que llama al hilo. Lea el artículo "La diferencia entre el método de inicio y ejecución" que escribí antes para obtener más información.
12) ¿Cómo se despierta un hilo de bloqueo en Java?
Esta es una pregunta difícil sobre el enhebrado y el bloqueo, y tiene muchas soluciones. Si el hilo se encuentra con el bloqueo de IO, no creo que haya una manera de abortar el hilo. Si el hilo bloquea los métodos Wait (), Sleep () o Join (), puede interrumpir el hilo y despertarlo lanzando una Excepción InterruptedException. El "Cómo lidiar con los métodos de bloqueo en Java" que escribí antes tiene mucha información sobre cómo tratar con el bloqueo de hilos.
13) ¿Cuál es la diferencia entre Cyclibarriar y CountdownLatch en Java?
Este problema de roscado se usa principalmente para detectar si está familiarizado con los paquetes concurrentes en JDK5. La diferencia entre estos dos es que CyclicBarrier puede reutilizar la barrera que se ha aprobado, mientras que CountdownLatch no puede reutilizarse.
14) ¿Qué es un objeto inmutable y cómo ayuda a escribir aplicaciones concurrentes?
Otra pregunta clásica de la entrevista para múltiples subprocesos no está directamente relacionada con los hilos, pero ayuda mucho indirectamente. Esta pregunta de entrevista de Java puede volverse muy complicada si le pide que escriba un objeto inmutable o le pregunta por qué la cadena es inmutable.
15) ¿Cuáles son los problemas comunes que encuentra en un entorno múltiple? ¿Cómo lo resolviste?
Comúnmente encontrados en programas multiproceso y concurrentes son la interfaz de memoria, las condiciones de carrera, los puntos muertos, las cerraduras en vivo y el hambre. El problema no tiene fin, y si te equivocas, será difícil descubrir y depurar. Esta es principalmente preguntas de enhebrado Java basadas en la entrevista, no prácticas basadas en aplicaciones.
Se agregaron varias otras preguntas:
1) ¿Cuál es la diferencia entre el hilo verde y el hilo local en Java?
2) ¿La diferencia entre hilos y procesos?
3) ¿Qué es el cambio de contexto en múltiples lecturas?
4) ¿La diferencia entre Deadlock y Live Lock, ¿la diferencia entre el punto muerto y el hambre?
5) ¿Cuál es el algoritmo de programación de hilo utilizado en Java?
6) ¿Qué es la programación de hilos en Java?
7) ¿Cómo se ocupa de las excepciones incrustables en el hilo?
8) ¿Qué es un grupo de subprocesos y por qué no se recomienda en Java?
9) ¿Por qué es mejor usar el marco del ejecutor que crear y administrar subprocesos con aplicaciones?
10) ¿Cuál es la diferencia entre el ejecutor y los ejecutores en Java?
11) ¿Cómo encontrar qué hilo utiliza el tiempo de CPU más largo en Windows y Linux?
Lo anterior es todo el contenido de este artículo.