Le 40 migliori domande e risposte per interviste multithreading (2024)

Principali domande dell'intervista sul multithreading Java

Ecco le domande e le risposte dell'intervista multithreading per le matricole e i candidati esperti per ottenere il lavoro dei loro sogni.


1) Cos'è un thread?

Un thread è un'unità di esecuzione simultanea. Possiamo dire che fa parte del processo che può facilmente svolgersi in concomitanza con altre parti del processo.

Download gratuito del PDF: domande e risposte per interviste multithreading


2) Cos'è il multithreading?

multithreading in Java è un processo di esecuzione simultanea di due o più thread per il massimo utilizzo della CPU.

Il vantaggio principale è:

  • I thread condividono lo stesso spazio di indirizzi
  • Il filo rimane leggero
  • Il costo della comunicazione tra i thread è basso.

3) Quali sono gli stati associati al thread?

  • Pronto
  • corsa
  • In attesa
  • Stato morto

4) Discutere del ciclo di vita del thread?

Il ciclo di vita di un thread è simile al ciclo di vita dei processi in esecuzione in un file sistema operativo. Durante il suo ciclo di vita, il thread può passare da uno stato all'altro. Tuttavia, dipende dall'operazione eseguita su di esso.


5) Quali sono gli stati del thread?

Di seguito sono riportati i diversi stati del thread:

Novità: Un thread di cui è appena stata creata un'istanza si trova nel nuovo stato. Quando viene richiamato un metodo start(), il thread diventa lo stato pronto. Quindi viene spostato nello stato eseguibile dallo scheduler del thread.

  • Eseguibile: Un thread pronto per essere eseguito
  • Esecuzione: Un thread in esecuzione è nello stato di esecuzione.
  • Bloccato: Un thread bloccato in attesa del blocco del monitor si trova in questo stato. Questa cosa può accadere anche quando un thread esegue un'operazione di I/O e passa allo stato successivo.
  • In attesa: È un thread che attende che un altro thread esegua l'azione specifica.
  • Attesa_a tempo: È un thread in attesa dell'esecuzione di un altro thread.
  • Terminato: Un thread terminato è in questo stato.
Domande di intervista multithreading
Domande di intervista multithreading

6) Quali sono le principali differenze tra Thread e Process?

Il thread è un sottoinsieme del processo. Il processo può contenere più thread. Il processo può essere eseguito su spazi di memoria diversi, ma tutti i thread condividono lo stesso spazio di memoria.


7) Cos'è lo stallo?

Il deadlock è una situazione in cui un thread è in attesa di un blocco dell'oggetto, che viene acquisito da un altro thread e anche il secondo thread attende un blocco dell'oggetto che viene acquisito dal primo thread. Poiché entrambi i thread attendono il rilascio dell'altro, questa condizione viene chiamata deadlock.


8) Cos'è LiveLock?

Livelock si verifica quando tutti i thread sono bloccati e non possono essere eseguiti a causa dell'indisponibilità delle risorse richieste e dell'inesistenza di qualsiasi thread sbloccato.

Il livelock può verificarsi nelle seguenti condizioni:

  • Quando tutti i thread in un programma vengono eseguiti su un oggetto con zero parametri. Il programma è live-locked e non viene mai elaborato finché uno o più thread non chiamano Object.notify() o Object.notifyAll() sugli oggetti rilevanti.
  • Il Livelock si verifica anche quando tutti i thread di un programma sono bloccati in cicli infiniti.
Domande di intervista multithreading
multithreading

9) Cos'è un monitor?

  • Il monitor è un corpo di codice che può essere eseguito da un solo thread alla volta.
  • Se qualsiasi altro thread tenta di ottenere l'accesso contemporaneamente, verrà sospeso finché il thread corrente non rilascerà il Monitor.

10) Cosa intendi per fame di thread?

Nella situazione in cui un thread non dispone di CPU sufficiente per la sua esecuzione, si verifica la fame del thread.

Tuttavia, ciò potrebbe verificarsi nei seguenti scenari

  • I thread a bassa priorità otterranno meno CPU rispetto ai thread ad alta priorità. Il thread con priorità inferiore può morire di fame in attesa di ottenere più spazio sulla CPU per eseguire i calcoli.
  • Il thread potrebbe attendere indefinitamente un blocco sul monitor dell'oggetto, ma notify() potrebbe risvegliare ripetutamente altri thread. In questo caso anche il filo muore di fame.

11) Qual è il significato di busy spin in multi-threading?

La rotazione occupata è una tecnica utilizzata dai programmatori simultanei per far attendere un thread in determinate condizioni. Questo è abbastanza diverso dai metodi tradizionali come wait() e sleep() che implicano tutti la rinuncia al controllo della CPU. Questo metodo non richiede l'abbandono della CPU, ma esegue semplicemente il ciclo vuoto.


12) Cos'è il cambio di contesto nel multi-threading?

È il processo di archiviazione e ripristino dello stato della CPU. Questo aiuta a curriculum vitae esecuzione del thread dallo stesso punto in un momento successivo. È una delle funzionalità essenziali per il sistema operativo multitasking e il supporto per l'ambiente multi-thread.


13) Perché il comportamento del thread è imprevedibile?

Possiamo dire che il comportamento del thread è imprevedibile perché l'esecuzione dei thread dipende dallo scheduler dei thread. Bisogna ricordare che ogni pianificatore di thread ha un'implementazione diversa su piattaforme diverse come Windows, Unix, ecc.


14) Come si può mettere in pausa l'esecuzione di un Thread per un certo periodo di tempo?

Il metodo sleep() viene utilizzato per mettere in pausa l'esecuzione del thread per un certo periodo di tempo. Tuttavia, ciò non interromperà l'elaborazione del thread per un periodo di tempo specifico. Tuttavia, quando il thread si risveglia dalla modalità di sospensione, il suo stato diventa eseguibile e in base alla pianificazione del thread, verrà eseguito.


15) Quali sono i numerosi modi in cui un thread può entrare nello stato di attesa?

Un thread può entrare nello stato di attesa nei seguenti modi

  • Utilizzando il metodo sleep()
  • Blocco su I/O
  • Tentativo senza successo di acquisire il blocco di un oggetto
  • Invocando il metodo wait() di un oggetto

16) Cosa succede se non sovrascriviamo un metodo di esecuzione?

In Java, quando chiamiamo il metodo start() su un thread, chiama internamente il metodo run() con il thread appena creato. Quindi, se non sovrascriviamo il metodo run(), il thread appena creato non verrà chiamato, quindi non accadrà nulla.
Esempio:

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) Qual è la differenza principale tra il metodo Thread.start() e il metodo Thread?run()?

Il metodo Thread.start() (metodo nativo) della classe Thread svolge il compito di eseguire il metodo Thread.A run() in un thread. Quindi, se chiamiamo direttamente Thread. Anche il metodo run() viene eseguito nello stesso thread. Pertanto non risolverà mai lo scopo di creare un nuovo thread.


18) Come creare un thread in Java?

Esistono due metodi per creare un thread in Java.

  • Innanzitutto implementando l'interfaccia Runnable e quindi creando un oggetto thread da essa.
  • Il secondo metodo consiste nell'estendere la classe thread.

19) Qual è il significato di Priorità thread?

Ogni thread ha una priorità. Tuttavia, una priorità più alta ha la precedenza anche nell'esecuzione. Tuttavia, dipende anche dall'implementazione dell'Utilità di pianificazione thread che dipende dal sistema operativo. È possibile modificare la priorità del thread, ma non garantisce che il thread con priorità più alta venga eseguito per primo.


20) Cosa fa il metodo join()?

Il metodo join() attende che un thread muoia. Forza tutti i thread in esecuzione a interrompere l'esecuzione fino al momento in cui il thread si unisce per completare il proprio lavoro.


21) Cos'è il gancio di arresto Java?

L'hook di arresto Java viene utilizzato per pulire le risorse all'arresto della JVM. Pulire le risorse significa chiudere il file di registro, inviare alcuni avvisi o qualcos'altro. È necessario utilizzare l'hook di arresto per eseguire il codice prima che la JVM si spenga.


22) Quali sono i due usi principali di volatile in Java?

I thread possono mantenere i valori delle variabili nella memoria locale. Se una variabile è contrassegnata come volatile, ogni volta che viene utilizzata la stessa variabile, deve essere letta dalla memoria principale.

Allo stesso modo, ogni volta che si scrive la variabile, il valore deve essere memorizzato nella memoria principale.


23) Come è possibile condividere i dati tra due thread in Java?

Possiamo ottenere dati tra thread utilizzando un oggetto condiviso o simultaneo struttura dati come BlockingQueue. Implementa un modello produttore-consumatore utilizzando i metodi wait e notifica. Implica anche la condivisione di oggetti tra due thread.


24) Come si possono controllare più thread contemporaneamente?

È possibile controllare più thread contemporaneamente se vengono creati in un oggetto ThreadGroup.


25) Cos'è un metodo di blocco in Java?

In Java il metodo di blocco è un metodo che si blocca fino al completamento dell'attività. Ad esempio, il metodo accetta () di ServerSocket si blocca fino al momento in cui un client viene connesso. In questo caso, il blocco si riferisce a tutto ciò che il controllo non restituirà al chiamante fino al termine dell'attività.


26) Qual è la differenza principale tra il metodo wait() e sleep()?

Aspettare() Dormire ()
Questo metodo è definito nella classe Object Il metodo è definito nella classe Thread
Il metodo Wait() rilascia il blocco Questo metodo non rilascia mai il blocco.

27) Cos'è un oggetto immutabile? Come può essere d'aiuto nella scrittura di un'applicazione simultanea?

Qualsiasi oggetto può essere considerato incontestabile se il suo stato non cambia dopo la sua costruzione. Gli oggetti immutabili vengono utilizzati per creare applicazioni semplici, affidabili e simultanee.

Per creare oggetti immutabili, è importante rendere la classe e il suo membro definitivi in ​​modo che, una volta creati gli oggetti, il loro stato non venga modificato.


28) Dimmi la differenza tra cedere e dormire?

Quando un'attività richiama il suo metodo yield(), ritorna allo stato pronto.

Quando un'attività richiama il suo metodo sleep(), ritorna allo stato di attesa.


29) Cos'è ThreadPool?

ThreadPool è un pool di thread che riutilizza un numero fisso di thread per eseguire l'attività specifica.


30) A cosa serve la parola chiave sincronizzata?

La parola chiave sincronizzata può essere applicata al metodo statico o non statico. Utilizzando Synchronized solo un thread può accedere ai metodi sincronizzati. Tuttavia, nella situazione in cui sono presenti più thread che tentano di accedere allo stesso metodo. A quel punto, gli altri thread devono attendere l'esecuzione del thread. Fornisce inoltre un blocco sull'oggetto per impedire una condizione di competizione.

public void synchronized method1(){}

public void synchronized staticmethod1(){}

public void myMethod(){

synchronized (this){

//synchronized keyword on block of code

}

}

31) Cos'è una parola chiave volatile?

La parola chiave volatile è un qualificatore che viene applicato a una variabile quando viene dichiarata. Indica al compilatore che il valore della variabile può cambiare in qualsiasi momento, senza che venga intrapresa alcuna azione da parte del codice.


32) Quali sono le principali differenze tra notify e notifyAll in Java?

Il metodo Notify() non fornisce alcun modo per scegliere un thread particolare, ecco perché è utile solo quando un singolo While notifyAll() invia una notifica a tutti i thread. Permette loro anche di competere per le serrature. Garantisce inoltre che almeno un thread procederà ulteriormente.


33) Quale parametro JVM viene utilizzato per controllare la dimensione dello stack di un thread?

Per controllare la dimensione dello stack del thread in Java viene utilizzato il parametro Xss.


34) Puoi iniziare una discussione due volte in Java?

No, una volta avviato un thread, non può essere avviato una seconda volta.


35) Qual è lo scopo dell'utilizzo del metodo yield della classe thread?

Il metodo Yield è il modo più semplice per richiedere al thread corrente di cedere la CPU in modo che l'altro thread. È un metodo statico e garantisce solo che il thread corrente rinuncerà alla CPU ma non dice nulla su quale altro thread influisce anche sulla CPU.


36) Quando possiamo dire che i thread non sono processi leggeri in Java?

I thread non sono processi leggeri quando i thread dello stesso processo vengono eseguiti simultaneamente. Tuttavia, se thread di processi diversi vengono eseguiti contemporaneamente in quel momento, i thread diventano un processo pesante.


37) È possibile sincronizzare il costruttore di una Classe Java?

Come standard Java, i costruttori non possono essere sincronizzati poiché altri thread non possono vedere l'oggetto prima che il processo di creazione del thread lo abbia terminato. Non è necessario sincronizzare il costruttore Java Objects poiché bloccherebbe l'oggetto in costruzione.


38) Cos'è la variabile transitoria?

Una variabile transitoria è una variabile che non può essere serializzata durante la serializzazione. Viene inizializzato al valore predefinito durante la serializzazione.

Queste domande del colloquio ti aiuteranno anche nel tuo viva(orale)

Condividi

Commenti

  1. Avatar formazione Java dice:

    Hii
    mi aiuta davvero. durante la preparazione del colloquio.
    È davvero encomiabile scrivere questo articolo e fornire queste informazioni.
    Icommendabile a

  2. Avatar Shwethashree Venkatesh dice:

    5) Quali sono gli stati del thread?
    Lo stato eseguibile non è In esecuzione. È pronto per funzionare

    1. aggiornato! Grazie per averlo sottolineato

    2. Avatar Amuda Adeolu Badmus dice:

      1. Gli stati eseguibili sono visti come un doppio livello a livello del sistema operativo

      2.Quasi tutti i linguaggi di programmazione vedono il thread come eseguibile o NON.

      3.Un thread eseguibile può essere nello stato (pronto o in esecuzione).

      4.Potresti avere due thread negli stati eseguibili, ma solo un thread esisterà nello stato "in esecuzione",
      mentre il secondo thread esiste in uno stato "in esecuzione".

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *