A 40 legnépszerűbb többszálas interjúkérdés és válasz (2024)
A legjobb Java többszálú interjúkérdések
Íme a Multithreading Interview Questions interjúkérdések és válaszok pályakezdőknek és tapasztalt jelölteknek, hogy megkaphassák álmaik állását.
1) Mi az a szál?
A szál a végrehajtás egyidejű egysége. Azt mondhatjuk, hogy a folyamat része, amely könnyen futhat párhuzamosan a folyamat többi részével.
Ingyenes PDF letöltés: Többszálú interjú kérdések és válaszok
2) Mi az a többszálú feldolgozás?
Többszálas A Java nyelvben két vagy több szál egyidejű végrehajtásának folyamata a CPU maximális kihasználása érdekében.
A fő előny a következő:
- A szálak ugyanazt a címteret használják
- A cérna könnyű marad
- A szálak közötti kommunikáció költsége alacsony.
3) Milyen állapotok kapcsolódnak a szálhoz?
- Kész
- futás
- Várakozás
- Halott állapot
4) Beszéljétek meg a szál életciklusát?
A szál életciklusa hasonló az egy szálban futó folyamatok életciklusához operációs rendszer. Életciklusa során a szál egyik állapotból a másikba kerülhet. Ez azonban a rajta végzett művelettől függ.
5) Mik a szál állapotok?
A különböző szálállapotok a következők:
Új: Az éppen példányosított szál új állapotban van. A start() metódus meghívásakor a szál kész állapotba kerül. Ezután a szálütemező áthelyezi futtatható állapotba.
- Futtatható: Egy szál, amely készen áll a futtatásra
- Futás: A folyamatban lévő szál futó állapotban van.
- Zárolt: Egy blokkolt szál arra vár, hogy a monitor zárolása ebben az állapotban legyen. Ez akkor is megtörténhet, amikor egy szál I/O műveletet hajt végre, és a következő állapotba lép.
- Várakozás: Ez egy szál, amely egy másik szálra vár az adott művelet elvégzésére.
- Timed_waiting: Ez egy szál, amely egy másik szál végrehajtására vár.
- Megszűnt: A kilépett szál ebben az állapotban van.
6) Melyek a fő különbségek a szál és a folyamat között?
A szál a folyamat egy részhalmaza. A folyamat több szálat is tartalmazhat. A folyamat különböző memóriaterületeken futhat, de minden szál ugyanazt a memóriaterületet használja.
7) Mi az a holtpont?
A holtpont egy olyan helyzet, amikor egy szál objektumzárra vár, amelyet egy másik szál szerez meg, és a második szál is vár egy objektumzárra, amelyet az első szál szerez meg. Mivel mindkét szál egymás feloldására vár, ezt a feltételt holtpontnak nevezzük.
8) Mi az a LiveLock?
Az élő zárolás akkor fordul elő, ha az összes szál blokkolva van, és nem tud végrehajtani, mert nem állnak rendelkezésre a szükséges erőforrások, és nem létezik feloldott szál.
Élő zárolás a következő körülmények között fordulhat elő:
- Amikor egy program összes szála nulla paraméterű objektumon fut. A program élő zárolású, és soha nem kerül feldolgozásra mindaddig, amíg egy vagy több szál meg nem hívja az Object.notify () vagy az Object.notifyAll() függvényt a megfelelő objektumokon.
- A Livelock akkor is megtörténik, ha egy program összes szála végtelen ciklusokban ragad.
9) Mi az a monitor?
- A monitor egy olyan kódtörzs, amelyet egyszerre csak egy szál hajthat végre.
- Ha egy másik szál ezzel egyidejűleg megpróbál hozzáférést szerezni, az felfüggesztésre kerül, amíg az aktuális szál fel nem engedi a Monitort.
10) Mit értesz cérna éhezés alatt?
Abban a helyzetben, amikor egy szál nem rendelkezik elegendő CPU-val a végrehajtásához A szál éhezés történik.
Ez azonban megtörténhet a következő forgatókönyvekben
- Az alacsony prioritású szálak kevesebb CPU-t kapnak a magas prioritású szálakhoz képest. Az alacsonyabb prioritású szál kiéhezhet a várakozástól, hogy több CPU-területhez jusson a számítások elvégzéséhez.
- Lehet, hogy a szál korlátlan ideig vár az objektum monitorán lévő zárolásra, de előfordulhat, hogy a notify() ismételten felébreszt néhány más szálat. Ebben az esetben a cérna is éhezik.
11) Mit jelent a foglalt pörgés a többszálú kezelésben?
Az elfoglalt pörgés egy olyan technika, amelyet a párhuzamos programozók alkalmaznak, hogy egy szálat bizonyos feltételek mellett várakozzanak. Ez teljesen eltér a hagyományos módszerektől, mint például a wait() és a sleep(), amelyek mindegyike magában foglalja a CPU vezérlésének feladását. Ez a módszer nem igényli a CPU elhagyását, ehelyett csak az üres ciklust futtatja.
12) Mit jelent a környezetváltás a többszálú feldolgozásban?
Ez a processzorállapot tárolásának és visszaállításának folyamata. Ez segít abban folytatás szál végrehajtása ugyanabból a pontból egy későbbi időpontban. Ez az egyik alapvető funkció a többfeladatos operációs rendszerhez és a többszálú környezet támogatásához.
13) Miért kiszámíthatatlan a szál viselkedése?
Azt mondhatjuk, hogy a szál viselkedése kiszámíthatatlan, mivel a szálak végrehajtása a szálütemezőtől függ. Emlékeztetni kell arra, hogy minden szálütemezőnek más megvalósítása van különböző platformokon, például Windowson, Unixon stb.
14) Hogyan szüneteltetheti egy szál végrehajtását egy bizonyos időre?
Az alvás () módszer a szál végrehajtásának szüneteltetésére szolgál egy bizonyos ideig. Ez azonban nem állítja le a szál feldolgozását egy adott ideig. Amikor azonban a szál ébren van az alvó állapotból, az állapota futtathatóvá változik, és a szál ütemezése alapján végrehajtódik.
15) Milyen számos módon kerülhet egy szál várakozási állapotba?
Egy szál a következő módokon léphet várakozó állapotba
- A sleep() metódus használata
- Blokkolás az I/O-n
- Sikertelen kísérlet egy objektum zárának megszerzésére
- Egy objektum wait() metódusának meghívásával
16) Mi történik, ha nem írunk felül egy futtatási metódust?
A Java-ban, amikor meghívjuk a start() metódust egy szálon, akkor az újonnan létrehozott szálon belül belsőleg meghívja a run() metódust. Tehát, ha nem írjuk felül a run( ) metódust, akkor az újonnan létrehozott szál nem hívódik meg, így nem történik semmi.
Példa:
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) Mi a fő különbség a Thread.start() és a Thread?run() metódus között?
A Thread osztály Thread.start() metódusa (natív metódusa) elvégzi a Thread.A run() metódus futtatását egy szálban. Tehát, ha közvetlenül meghívjuk a Thread-et.A run() metódus is végrehajtódik ugyanabban a szálban. Így soha nem oldja meg az új szál létrehozásának célját.
18) Hogyan lehet szálat létrehozni java-ban?
Java-ban két módszer létezik a szál létrehozására.
- Először a Runnable felület megvalósításával, majd hozzon létre belőle egy szálobjektumot.
- A második módszer a szálosztály kiterjesztése.
19) Mit jelent a szál prioritása?
Minden szálnak van prioritása. Azonban a magasabb prioritás is elsőbbséget élvez a végrehajtásban. Ez azonban a Thread Scheduler megvalósításától is függ, amely operációs rendszer függő. Lehetőség van a szál prioritásának megváltoztatására, de ez nem ad garanciát arra, hogy a magasabb prioritású szál kerül végrehajtásra először.
20) Mit csinál a join() metódus?
A join() metódus megvárja, amíg egy szál elhal. Arra kényszeríti az összes futó szálat, hogy leállítsák a végrehajtást, amíg a szál nem csatlakozik, hogy befejezze a feladatát.
21) Mi az a Java Shutdown Hook?
A Java shutdown hook az erőforrások megtisztítására szolgál, amikor a JVM leáll. A tiszta erőforrások a naplófájl bezárását, riasztások küldését vagy valami mást jelentenek. A leállítási horgot kell használni a kód végrehajtásához, mielőtt a JVM leállna.
22) Mi a volatile két fő felhasználási módja a Java-ban?
A szálak tárolhatják a változók értékeit a helyi memóriában Ha egy változót illékonynak jelölünk, akkor minden alkalommal, amikor ugyanazt a változót használjuk, azt a fő memóriából kell kiolvasni.
Ugyanígy minden alkalommal, amikor a változót írjuk, az értéket a fő memóriában kell tárolni.
23) Hogyan lehet adatokat megosztani két Java szál között?
Adatokat kaphatunk a szálak között megosztott objektum használatával vagy párhuzamosan adatszerkezet mint a BlockingQueue. Várakozási és értesítési metódusokkal termelő-fogyasztó mintát valósít meg. Ez magában foglalja az objektumok megosztását is két szál között.
24) Hogyan lehet több szálat egyszerre vezérelni?
Több szál is vezérelhető egyidejűleg, ha azokat ThreadGroup objektumban hozták létre.
25) Mi a blokkoló módszer a Java-ban?
A Java-ban a blokkoló módszer egy olyan módszer, amely a feladat elvégzéséig blokkol. Például fogadja el a ServerSocket blokkok () metódusát, amíg egy kliens nem csatlakozik. Itt a blokkolás minden olyan dologra vonatkozik, amelynél a vezérlés nem kerül vissza a hívóhoz, amíg a feladat véget nem ér.
26) Mi a fő különbség a várakozás () és az alvás () módszer között?
Várjon() | Alvás() |
Ez a metódus az Object osztályban van definiálva | A metódus a Thread osztályban van definiálva |
A Wait() metódus feloldja a zárolást | Ez a módszer soha nem oldja fel a zárat. |
27) Mi a megváltoztathatatlan objektum? Hogyan segíthet egy párhuzamos jelentkezés megírásában?
Bármely objektum akkor tekinthető megkérdőjelezhetetlennek, ha az állapota a megalkotása után nem változik. A megváltoztathatatlan objektumok egyszerű, megbízható és párhuzamos alkalmazások létrehozására szolgálnak.
Az objektum megváltoztathatatlan létrehozásához fontos, hogy az osztályt és annak tagját véglegessé tegyük, hogy az objektumok létrehozása után az állapot ne változzon.
28) Mondd el, mi a különbség az engedés és az alvás között?
Amikor egy feladat meghívja a result() metódusát, akkor visszatér kész állapotba.
Amikor egy feladat meghívja a sleep() metódusát, akkor visszatér a várakozási állapotba.
29) Mi az a ThreadPool?
A ThreadPool egy szálkészlet, amely meghatározott számú szálat használ fel az adott feladat végrehajtásához.
30) Mire használható a szinkronizált kulcsszó?
A szinkronizált kulcsszó statikus vagy nem statikus módszerre is alkalmazható. A Synchronized használatával csak egy szál férhet hozzá a szinkronizált metódusokhoz. Abban a helyzetben azonban, amikor több szál is megpróbál hozzáférni ugyanahhoz a módszerhez. Ekkor a többi szálnak várnia kell a végrehajtási szálra. Ezenkívül zárat is biztosít a tárgyon, hogy megakadályozza a versenyhelyzetet.
public void synchronized method1(){} public void synchronized staticmethod1(){} public void myMethod(){ synchronized (this){ //synchronized keyword on block of code } }
31) Mi az illékony kulcsszó?
A volatile kulcsszó egy minősítő, amelyet a rendszer egy változóra alkalmaz, amikor deklarálják. Azt mondja a fordítónak, hogy a változó értéke bármikor változhat – anélkül, hogy a kód bármiféle műveletet végezne.
32) Melyek a fő különbségek a notify és a notifyAll között Javaban?
A Notify () metódus nem ad lehetőséget egy adott szál kiválasztására, ezért csak akkor hasznos, ha egyetlen While notifyAll() értesítést küld az összes szálnak. Lehetővé teszi számukra, hogy versenyezzenek a zárakért. Azt is biztosítja, hogy legalább egy szál tovább haladjon.
33) Melyik JVM paraméterrel szabályozható egy szál veremmérete?
A Thread in Java Xss paramétere a verem méretének szabályozására szolgál.
34) El lehet indítani egy szálat kétszer Java nyelven?
Nem, ha egy szál egyszer elindult, másodszor már nem indítható el.
35) Mi a célja a menetosztály hozammódszerének használatának?
A hozammódszer a legegyszerűbb módja annak, hogy az aktuális szálat kérje a CPU feladására, így a másik szálra. Ez egy statikus módszer, és csak azt garantálja, hogy az aktuális szál feladja a CPU-t, de nem mond semmit arról, hogy melyik másik szál is érinti a CPU-t.
36) Mikor mondhatjuk, hogy a szálak nem könnyű folyamat a java-ban?
A szálak nem könnyű folyamatok, ha ugyanazon folyamat szálai egyidejűleg futnak. Bár, ha különböző folyamatok szálai párhuzamosan futnak, akkor a szálak nehézsúlyú folyamatokká válnak.
37) Lehetséges-e szinkronizálni egy Java osztály konstruktorát?
Java szabványként a konstruktorok nem szinkronizálhatók, mivel más szálak nem látják az objektumot, amíg a szál létrehozási folyamat nem fejezte be. Nincs szükség a Java Objects konstruktorra a szinkronizálásra, mivel az zárolná a készülő objektumot.
38) Mi az a tranziens változó?
A tranziens változó olyan változó, amelyet a szerializálás során nem lehet szerializálni. A szerializálás során az alapértelmezett értékre inicializálódik.
Ezek az interjúkérdések a viva-ban is segítenek.
hii
tényleg segít nekem. az interjú előkészítése során.
Nagyon dicséretes megírni ezt a cikket és megadni ezeket az információkat.
Ajánlható
5) Mik a szál állapotok?
A Runnable nem Futó állapot. Futásra készen áll
frissítve! Köszönöm, hogy erre rámutatott
1. A futtatható állapotok kétrétegűnek tekinthetők az operációs rendszer szintjén
2. Szinte minden programozási nyelv futtathatónak vagy NEM látja a szálat.
3.A futtatható szál lehet (kész vagy futó) állapotban.
4. Lehet, hogy két szál futható állapotban van, de csak egy szál lesz „futó” állapotban,
míg a második szál „futó” állapotban létezik.