Las 40 principales preguntas y respuestas de entrevistas multiproceso (2025)
Principales preguntas de la entrevista de subprocesos múltiples de Java
Aquí hay Preguntas de la entrevista de subprocesos múltiples Preguntas y respuestas de la entrevista para principiantes y candidatos experimentados para obtener el trabajo de sus sueños.
1) ¿Qué es un hilo?
Un Thread es una unidad de ejecución concurrente. Podemos decir que es parte del proceso que fácilmente puede ejecutarse simultáneamente con otras partes del proceso.
Descarga gratuita de PDF: Preguntas y respuestas de la entrevista multiproceso
2) ¿Qué es multiproceso?
multihilo en Java es un proceso de ejecución de dos o más subprocesos simultáneamente para la máxima utilización de la CPU.
La principal ventaja es:
- Los hilos comparten el mismo espacio de direcciones
- El hilo sigue siendo ligero
- El costo de comunicación entre hilos es bajo.
3) ¿Cuáles son los estados asociados con el hilo?
- Ready
- Correr
- Esperando
- estado muerto
4) ¿Discutir el ciclo de vida de un subproceso?
El ciclo de vida de un subproceso es similar al ciclo de vida de los procesos que se ejecutan en un sistema operativo. Durante su ciclo de vida, el hilo puede pasar de un estado a otro. Sin embargo, depende de la operación que se realice en él.
5) ¿Cuáles son los estados del hilo?
Los siguientes son los diferentes estados del hilo:
Nuevo: Un subproceso que acaba de instanciarse está en el nuevo estado. Cuando se invoca un método start(), el subproceso pasa al estado listo. Luego, el planificador de subprocesos lo mueve al estado ejecutable.
- Ejecutable: Un hilo que está listo para ejecutarse
- Corriendo: Un subproceso que se está ejecutando está en estado de ejecución.
- Obstruido: Un subproceso bloqueado está esperando que un bloqueo de monitor esté en este estado. Esto también puede suceder cuando un subproceso realiza una operación de E/S y pasa al siguiente estado.
- Esperando: Es un hilo que está esperando que otro hilo realice la acción específica.
- Espera_cronometrada: Es un subproceso que está esperando que otro subproceso funcione.
- Terminado: Un hilo que ha salido está en este estado.
6) ¿Cuáles son las principales diferencias entre Thread y Process?
El hilo es un subconjunto del proceso. El proceso puede contener varios subprocesos. El proceso puede ejecutarse en diferentes espacios de memoria, pero todos los subprocesos comparten el mismo espacio de memoria.
7) ¿Qué es un punto muerto?
Interbloqueo es una situación en la que un subproceso está esperando un bloqueo de objeto, que es adquirido por otro subproceso y el segundo subproceso también espera un bloqueo de objeto que es adquirido por el primer subproceso. Como ambos subprocesos están esperando el uno al otro para liberarse, esta condición se denomina interbloqueo.
8) ¿Qué es LiveLock?
Livelock ocurre cuando todos los subprocesos están bloqueados y no pueden ejecutarse debido a la falta de disponibilidad de los recursos necesarios y la inexistencia de cualquier subproceso desbloqueado.
Livelock puede ocurrir en las siguientes condiciones:
- Cuando todos los subprocesos de un programa se ejecutan en un objeto con cero parámetros. El programa está bloqueado en vivo y nunca se procesa hasta que uno o más subprocesos llaman a Object.notify () u Object.notifyAll() en los objetos relevantes.
- Livelock también ocurre cuando todos los subprocesos de un programa están atascados en bucles infinitos.
9) ¿Qué es un monitor?
- El monitor es un cuerpo de código que solo puede ser ejecutado por un subproceso a la vez.
- Si cualquier otro subproceso intenta obtener acceso al mismo tiempo, se suspenderá hasta que el subproceso actual libere el Monitor.
10) ¿Qué quiere decir con hambre de hilo?
En la situación en la que un subproceso no tiene suficiente CPU para su ejecución, se produce el agotamiento del subproceso.
Sin embargo, puede ocurrir en los siguientes escenarios
- Los subprocesos de baja prioridad obtendrán menos CPU en comparación con los subprocesos de alta prioridad. El subproceso de menor prioridad puede morir de hambre esperando obtener más espacio de CPU para realizar cálculos.
- El subproceso puede estar esperando indefinidamente un bloqueo en el monitor del objeto, pero notificar () puede estar despertando repetidamente algunos otros subprocesos. En ese caso, también el hilo muere de hambre.
11) ¿Cuál es el significado de giro ocupado en subprocesos múltiples?
Busy spin es una técnica que emplean los programadores simultáneos para hacer que un subproceso espere en ciertas condiciones. Esto es bastante diferente de los métodos tradicionales como wait() y sleep(), que implican renunciar al control de la CPU. Este método no requiere abandonar la CPU, sino que simplemente ejecuta el bucle vacío.
12) ¿Qué es el cambio de contexto en subprocesos múltiples?
Es el proceso de almacenar y restaurar el estado de la CPU. Esto ayuda a currículum ejecución de subprocesos desde el mismo punto en un momento posterior. Es una de las características esenciales para el sistema operativo multitarea y soporte para el entorno de subprocesos múltiples.
13) ¿Por qué el comportamiento de Thread es impredecible?
Podemos decir que el comportamiento de los subprocesos es impredecible porque la ejecución de los subprocesos depende del planificador de subprocesos. Se debe recordar que cada programador de subprocesos tiene una implementación diferente en diferentes plataformas como Windows, Unix, etc.
14) ¿Cómo se puede pausar la ejecución de un hilo durante un tiempo determinado?
El método sleep () se usa para pausar la ejecución del hilo durante un cierto período de tiempo. Sin embargo, esto no detendrá el procesamiento del subproceso durante un tiempo específico. Sin embargo, cuando el subproceso se despierta del modo de suspensión, su estado cambia a ejecutable y, según la programación del subproceso, se ejecutará.
15) ¿Cuáles son las numerosas formas en que un subproceso puede entrar en el estado de espera?
Un subproceso puede entrar en el estado de espera de las siguientes maneras
- Usando el método sleep()
- Bloqueo en E/S
- Intentar sin éxito adquirir el candado de un objeto
- Invocando el método wait() de un objeto
16) ¿Qué sucede si no anulamos un método de ejecución?
En Java, cuando llamamos al método start() en un subproceso, llama internamente al método run() con el subproceso recién creado. Entonces, si no anulamos el método run(), entonces no se llamará al subproceso recién creado, por lo que no sucederá nada.
Ejemplo:
class MyThread extends Thread { //don't override run() method } public class DontOverrideRun { public static void main(String[] args) { System.out.println("main has started."); MyThread thread1=new MyThread(); thread1.start(); System.out.println("main has ended."); } }
17) ¿Cuál es la principal diferencia entre el método Thread.start() y Thread?run()?
El método Thread.start() (método nativo) de la clase Thread hace el trabajo de ejecutar el método Thread.A run() en un hilo. Entonces, si llamamos directamente a Thread. El método run() también se ejecuta en el mismo hilo. Por lo tanto, nunca resolverá el propósito de crear un nuevo hilo.
18) ¿Cómo crear un hilo en Java?
Hay dos métodos para crear un hilo en Java.
- Primero implementando la interfaz Runnable y luego creando un objeto de hilo a partir de ella.
- El segundo método es extender la clase de subprocesos.
19) ¿Cuál es el significado de Prioridad de subprocesos?
Cada hilo tiene una prioridad. Sin embargo, una prioridad más alta también tiene precedencia en la ejecución. Sin embargo, también depende de la implementación de Thread Scheduler, que depende del sistema operativo. Es posible cambiar la prioridad del subproceso, pero no garantiza que el subproceso de mayor prioridad se ejecute primero.
20) ¿Qué hace el método join()?
El método join() espera a que muera un hilo. Obliga a todos los subprocesos en ejecución a dejar de ejecutarse hasta el momento en que el subproceso se une para completar su trabajo.
21) ¿Qué es el gancho de apagado de Java?
El enlace de apagado de Java se usa para limpiar los recursos cuando JVM se apaga. Limpiar recursos significa cerrar el archivo de registro, enviar algunas alertas o algo más. El enlace de apagado debe usarse para ejecutar el código antes de que JVM se apague.
22) ¿Cuáles son los dos usos principales de volátil en Java?
Los subprocesos pueden contener los valores de las variables en la memoria local. Si una variable está marcada como volátil, entonces cada vez que se usa la misma variable, debe leerse desde la memoria principal.
De la misma manera, cada vez que se escribe la variable, se debe almacenar el valor en la memoria principal.
23) ¿Cómo puedes compartir datos entre dos hilos en Java?
Podemos obtener datos entre subprocesos mediante el uso de un objeto compartido o concurrente estructura de datos como BlockingQueue. Implementa un patrón productor-consumidor utilizando métodos de espera y notificación. También implica compartir objetos entre dos hilos.
24) ¿Cómo se pueden controlar varios subprocesos simultáneamente?
Se pueden controlar varios subprocesos simultáneamente si se crean en un objeto ThreadGroup.
25) ¿Qué es un método de bloqueo en Java?
En Java, el método de bloqueo es un método que bloquea hasta que se realiza la tarea. Por ejemplo, el método accept () de ServerSocket bloquea hasta el momento en que se conecta un cliente. Aquí, el bloqueo se refiere a cualquier cosa que el control no devolverá a la persona que llama hasta que finalice la tarea.
26) ¿Cuál es la principal diferencia entre el método de espera () y el de suspensión ()?
Esperar() | Dormir () |
Este método está definido en la clase Object. | El método se define en la clase Thread. |
El método Wait () libera el bloqueo | Este método nunca libera el candado. |
27) ¿Qué es un objeto inmutable? ¿Cómo puede ayudar a escribir una aplicación concurrente?
Cualquier objeto puede considerarse incuestionable si su estado no cambia después de su construcción. Los objetos inmutables se utilizan para crear aplicaciones simples, confiables y concurrentes.
Para crear un objeto inmutable, es importante hacer que la clase y su miembro sean finales para que una vez que se creen los objetos, su estado no se modifique.
28) ¿Dime la diferencia entre ceder y dormir?
Cuando una tarea invoca su método yield(), vuelve al estado listo.
Cuando una tarea invoca su método sleep(), vuelve al estado de espera.
29) ¿Qué es ThreadPool?
ThreadPool es un conjunto de subprocesos que reutiliza un número fijo de subprocesos para ejecutar la tarea específica.
30) ¿Cuál es el uso de la palabra clave sincronizada?
La palabra clave sincronizada se puede aplicar al método estático o no estático. Al usar Sincronizado, solo un subproceso puede acceder a los métodos sincronizados. Sin embargo, en la situación en la que hay varios subprocesos que intentan acceder al mismo método. En ese momento, otros subprocesos tienen que esperar al subproceso de ejecución. También proporciona un bloqueo en el objeto para evitar una condición de carrera.
public void synchronized method1(){} public void synchronized staticmethod1(){} public void myMethod(){ synchronized (this){ //synchronized keyword on block of code } }
31) ¿Qué es una palabra clave volátil?
La palabra clave volátil es un calificador que se aplica a una variable cuando se declara. Le dice al compilador que el valor de la variable puede cambiar en cualquier momento, sin que el código tome ninguna acción.
32) ¿Cuáles son las principales diferencias entre notificar y notificar a todos en Java?
El método Notify () no proporciona ninguna forma de elegir un hilo en particular, es por eso que solo es útil cuando un único while notificar a todos () envía una notificación a todos los hilos. También les permite competir por cerraduras. También asegura que al menos un subproceso continuará.
33) ¿Qué parámetro de JVM se usa para controlar el tamaño de pila de un subproceso?
Para controlar el tamaño de pila de Thread en el parámetro Java Xss, se utiliza.
34) ¿Puedes iniciar un hilo dos veces en Java?
No, una vez que se inicia un hilo, no se puede iniciar la segunda vez.
35) ¿Cuál es el propósito de usar el método de rendimiento de la clase de hilo?
El método de rendimiento es la forma más sencilla de solicitar que el subproceso actual renuncie a la CPU para que otro subproceso. Es un método estático y solo garantiza que el subproceso actual renunciará a la CPU, pero no dice nada sobre qué otro subproceso también afecta a la CPU.
36) ¿Cuándo podemos decir que los hilos no son un proceso ligero en Java?
Los subprocesos no son procesos ligeros cuando los subprocesos del mismo proceso se ejecutan simultáneamente. Aunque, si los subprocesos de diferentes procesos se ejecutan simultáneamente en ese momento, los subprocesos se convierten en un proceso pesado.
37) ¿Es posible sincronizar el constructor de una Clase Java?
Como estándar de Java, los constructores no se pueden sincronizar ya que otros subprocesos no pueden ver el objeto antes de que el proceso de creación del subproceso haya terminado. No es necesario sincronizar el constructor de Java Objects, ya que bloquearía el objeto que se está construyendo.
38) ¿Qué es la variable transitoria?
Una variable transitoria es una variable que no se puede serializar durante la serialización. Se inicializa a su valor predeterminado durante la serialización.
Estas preguntas de la entrevista también te ayudarán en tu viva(orals)
Hola yo
realmente me ayuda. durante la preparación de la entrevista.
Es realmente encomiable escribir este artículo y proporcionar esta información.
Recomendable para
5) ¿Cuáles son los estados del hilo?
Ejecutable no está en estado de ejecución. esta listo para funcionar
¡actualizado! Gracias por señalar esto
1. Los estados ejecutables se ven como una bicapa a nivel del sistema operativo
2.Casi todos los lenguajes de programación ven el subproceso como ejecutable o NO.
3. Un subproceso ejecutable puede estar en estado (listo o en ejecución).
4. Podría tener dos subprocesos en estados ejecutables, pero solo existirá un subproceso en el estado "en ejecución",
mientras que el segundo subproceso existe en un estado "en ejecución".