Introducere la întrebări și răspunsuri la interviuri multithreading
Multithreading este definit practic ca capacitatea unui procesor (unitate de procesare centrală) de a prelucra simultan mai multe fire. Acesta joacă un rol important în Arhitectura calculatoarelor. Există în principal trei tipuri de modele multithreading.
- Model de la mai mulți la mulți : În cazul relațiilor de la mai multe la mai multe model, înmulțește un număr sau un set diferit de fire pe un set egal de fire de nucleu.
- Mulți la un model: În acest caz, acesta se referă la diferite tipuri de fire de nivel ale utilizatorilor pe un fir de nivel al nucleului. Odată cu implementarea acestui proces, un singur thread va fi eligibil să acceseze firul simultan și astfel mai multe tipuri de fire nu vor putea să execute paralel în același moment.
- Model unu la unu: În cazul unuia la unu, există o relație directă între un fir la nivel de utilizator și firul nivelului nucleului. De fapt, oferă o implementare mai concurentă decât modelul cu mai multe la un singur model. De asemenea, oferă asistență în execuție paralelă cu mai multe fire.
Acum, dacă sunteți în căutarea unui loc de muncă care are legătură cu multithreading, atunci trebuie să vă pregătiți pentru întrebările de interviu multithreading din 2019. Este adevărat că fiecare interviu este diferit în funcție de diferitele profiluri de locuri de muncă, dar totuși pentru a șterge interviul, trebuie să aveți o cunoaștere bună și clară a proceselor de multithreading. Aici, am pregătit întrebările și răspunsurile importante ale interviului multithreading care vă vor ajuta să obțineți succes în interviu.
Mai jos sunt cele 10 întrebări și răspunsuri importante pentru interviuri multithreading din 2019, care sunt frecvent adresate într-un interviu. Aceste întrebări sunt împărțite în două părți:
Partea 1 - Întrebări de interviu multiplicare (de bază)
Această primă parte se referă la întrebări de bază și răspunsuri la interviuri multithreading
1. Explicați diferențele dintre multitreading și multiprocesare?
Răspuns:
În cazul multitreading-ului, procesele de aplicație și thread-urile folosesc pentru a partaja resursele de bază unice sau multiple care includ memoriile în memorie cache CPU, bufferul de aspect de traducere și unitățile de calcul. Dar în cazul multiprocesării, aplicația implementează mai multe unități de procesare complete într-unul sau mai multe nuclee. Aceasta este diferența de bază între multitreading și multiprocesare, deoarece scopul principal al multitreading este de a implementa o utilizare mai mare a miezului cu ajutorul paralelismului nivelului de instrucțiuni și a nivelului de instrucțiune.
2. Explicați diferite tipuri de multitrare?
Răspuns:
Aceasta este întrebarea comună pentru interviuri multithreading, care se pune frecvent într-un interviu. Există în principal trei tipuri de procese multithreading.
- Intermitent Multithreading: Acest tip de multithreading este procesat în principal pentru a face conducta de execuție independentă de orice dependență, eliminând toate stalele de dependență de date din aceeași.
- Multithreading cu granulație grosieră: Acesta este un tip de multitratare în care un fir poate continua să se execute până când este blocat de un eveniment normal care ar prelucra un blocaj cu latență lungă.
- Multithreading simultan: Acesta este tipul nou și avansat de proces de multithreading. În acest caz, procesul multithreading este implementat în principal către procesoarele supracalare.
Haideți să trecem la următoarea întrebare de interviu cu multithreading
3. Explicați diferite tipuri de stări de fir?
Răspuns:
Găsiți mai jos diferitele tipuri de stări de fir.
- Runnable: În această stare, un thread este utilizat pentru a rămâne în execuție o stare executabilă
- Terminat: În această stare, firul ar trebui să fie încheiat și nu ar trebui să rămână în faza executabilă curentă.
- În așteptare: în această stare, thread-ul este folosit pentru a aștepta un alt thread pentru a efectua activitatea specificată
- Așteptare în timp: în această stare, thread-ul depinde de consumul de timp și ar trebui să aștepte un alt thread pentru a implementa acțiunea specificată.
- Blocat: În această stare, thread-ul este utilizat pentru a rămâne în starea blocat în raport cu faza de execuție curentă și așteaptă o blocare a monitorului pe baza sarcinilor sale curente alocate.
4. Explicați metodele de așteptare () și somn ()?
Răspuns:
Metoda wait () este descrisă în clasa obiect și este implementată pentru a elibera sistemul de blocare în timpul acoperirii codului. Metoda sleep () este descrisă în clasa thread și este utilizată pentru a întrerupe execuția curentă a firului pentru un anumit timp specificat.
5. Explicați diferite metode pentru fire?
Răspuns:
Mai jos sunt câteva metode importante pentru thread-uri:
- Start (): această metodă este utilizată pentru a începe procesul de execuție a firului. Aceasta este metoda de bază care ar trebui să fie utilizată pentru a începe orice proces de citire.
- getName (): Este folosit pentru a obține numele unui thread
- setpoint (prioritate int nouă): această metodă este folosită pentru a schimba prioritățile thread-ului
- randament (): această metodă este folosită pentru a întrerupe execuția firului curent, în timp ce celălalt fir va continua faza de execuție normală.
Partea 2 - Întrebări de interviu multithreading (avansat)
Haideți să aruncăm o privire asupra întrebărilor și răspunsurilor avansate la interviu cu multithreading.
6. Explicați procesul de sincronizare a firului?
Răspuns:
În cazul multithreading, există o prezență a unui comportament asincron în programe care pot fi echilibrate și manipulate într-un mod corespunzător prin procesul de sincronizare. Deseori a fost găsit atunci când mai multe fire execută atât activități de citire cât și scriere în același punct de timp, și atunci există șansa de a crea confuzii. Deci, pentru a preveni această inconsecvență, procesul de sincronizare a firului a fost implementat. În acest proces, când firul intră în blocul sincronizat, acesta devine iremediabil pentru alții și niciun alt thread nu poate apela acea metodă.
7. Explicați diferențele dintre nivelul de utilizator și nivelul de nucleu?
Răspuns:
Găsiți mai jos diferențele dintre nivelurile de utilizator și cele de nivel de nucleu
- Firele la nivel de utilizator sunt mai rapide decât firele la nivel de nucleu din perspectiva creării și gestionării
- Firele la nivel de utilizator sunt generice, în timp ce firele de nivel ale nucleului sunt mai specifice sistemului de operare în cauză.
- În cazul utilizatorului, procesul de multitratare nu poate fi implementat pe multiprocesare, în timp ce nivelul de nucleu poate fi el însuși multitratat.
Haideți să trecem la următoarea întrebare de interviu cu multithreading.
8. Ce vrei să spui prin proces ușor?
Răspuns:
Aceasta este întrebările avansate de interviu cu multithreading adresate într-un interviu. Firul este cunoscut și sub numele de proces ușor. Practic, este un flux de informații și execuția acesteia pe codul procesului în ceea ce privește propriile programe integrate. Îmbunătățește performanța prin utilizarea paralelismului.
9. Ce vrei să spui prin Livelock?
Răspuns:
Când toate firele sunt în stare blocată și execuția este oprită din cauza indisponibilității resurselor, atunci această situație este denumită drept material.
10. Explicați avantajele și dezavantajele multithreading?
Răspuns:
Găsește mai jos pro și contra de multitrare
Pro:
- Poate fi extins cu ușurință la multiprocesoare.
- Oferă suport de acțiune iminentă pentru a trece sau eșua în consecință
- Metoda Wait / Sleep poate fi implementată mai ușor și mai curat
Contra:
- Sincronizarea atentă este necesară
- Uneori creați probleme legate de spațiu în cazul firelor blocate.
Articol recomandat
Acesta a fost un ghid la Lista întrebărilor și răspunsurilor la interviuri multithreading, astfel încât candidatul să poată împărți cu ușurință aceste întrebări de interviu multithreading. Aici, în această postare, am studiat cele mai bune întrebări de interviu cu multithreading, care sunt adesea puse în interviuri. De asemenea, puteți consulta următoarele articole pentru a afla mai multe -
- Întrebări de interviu JS
- Întrebări de interviu Java multi-threading
- Întrebări de interviu VB.NET
- Întrebări de interviu de primăvară
- Spring vs Hibernate: caracteristici
- Spring vs Struts: Funcții
- Cel mai bun ghid pentru întrebările pentru interviu Hibernate