Top 40 monisäikeistä haastattelun kysymystä ja vastausta (2025)
Suosituimmat Java-monisäikeiset haastattelukysymykset
Tässä on Multithreading Interview Questions -haastattelukysymykset ja -vastaukset niin uusille kuin kokeneille hakijoille unelmatyönsä saamiseksi.
1) Mikä on lanka?
Säie on samanaikainen suoritusyksikkö. Voimme sanoa, että se on osa prosessia, joka voi helposti toimia samanaikaisesti prosessin muiden osien kanssa.
Ilmainen PDF-lataus: Monisäikeisen haastattelun kysymyksiä ja vastauksia
2) Mitä on monisäikeisyys?
säikeistystekniikkaa Javassa on prosessi, jossa suoritetaan kahta tai useampaa säiettä samanaikaisesti prosessorin maksimaaliseen käyttöön.
Tärkein etu on:
- Säikeet jakavat saman osoitetilan
- Lanka pysyy kevyenä
- Viestinnän kustannukset säikeiden välillä ovat alhaiset.
3) Mitkä tilat liittyvät säiettä?
- Valmis
- Running
- odotus
- Kuollut tila
4) Keskustele langan elinkaaresta?
Langan elinkaari on samanlainen kuin langassa käynnissä olevien prosessien elinkaari käyttöjärjestelmän. Elinkaarensa aikana lanka voi siirtyä tilasta toiseen. Se riippuu kuitenkin sille suoritetusta toimenpiteestä.
5) Mitkä ovat säikeen tilat?
Seuraavat ovat eri säikeen tilat:
Uutta: Juuri instantoitu säie on uudessa tilassa. Kun start()-metodi kutsutaan, säiettä tulee valmiustilaan. Sitten säikeen ajoitus siirtää sen ajettavaan tilaan.
- Ajettava: Lanka, joka on valmis ajoon
- Running: Suoritettava säie on käynnissä-tilassa.
- Estetty: Estetty säie odottaa, että näytön lukitus on tässä tilassa. Tämä voi tapahtua myös, kun säie suorittaa I/O-operaation ja siirtyy seuraavaan tilaan.
- odottavat: Se on säiettä, joka odottaa toisen säikeen suorittavan tietyn toiminnon.
- Timed_waiting: Se on säiettä, joka odottaa toisen säikeen suorittamista.
- Lopetettu: Poistunut säie on tässä tilassa.
6) Mitkä ovat tärkeimmät erot ketjun ja prosessin välillä?
Lanka on prosessin osajoukko. Prosessi voi sisältää useita säikeitä. Prosessi voi toimia eri muistitilassa, mutta kaikki säikeet jakavat saman muistitilan.
7) Mikä on umpikuja?
Lukitus on tilanne, jossa säie odottaa objektilukkoa, jonka toinen säie hankkii ja toinen säie myös odottaa objektilukkoa, jonka ensimmäinen säie hankkii. Koska molemmat säikeet odottavat toistensa vapauttamista, tätä tilaa kutsutaan umpikujaksi.
8) Mikä LiveLock on?
Livelock tapahtuu, kun kaikki säikeet on estetty eikä niitä voida suorittaa, koska tarvittavat resurssit eivät ole käytettävissä ja estottomia säikeitä ei ole olemassa.
Livelock voi tapahtua seuraavissa olosuhteissa:
- Kun kaikki ohjelman säikeet suoritetaan objektilla, jolla ei ole parametreja. Ohjelma on live-lukittu, eikä sitä koskaan käsitellä ennen kuin yksi tai useampi säie kutsuu Object.notify () tai Object.notifyAll() asiaankuuluvissa objekteissa.
- Livelock tapahtuu myös silloin, kun kaikki ohjelman säikeet ovat jumissa äärettömissä silmukoissa.
9) Mikä on näyttö?
- Monitori on koodirunko, jonka voi suorittaa vain yksi säie kerrallaan.
- Jos jokin muu säie yrittää päästä käsiksi samaan aikaan, se keskeytetään, kunnes nykyinen säie vapauttaa Monitorin.
10) Mitä tarkoitat langan nälkään?
Tilanteessa, jossa säikeellä ei ole tarpeeksi CPU:ta sen suorittamiseen, tapahtuu säikeen nälkää.
Se voi kuitenkin tapahtua seuraavissa tilanteissa
- Matalan prioriteetin säikeet saavat vähemmän CPU:ta korkean prioriteetin säikeisiin verrattuna. Alemman prioriteetin säiettä voi jäädä nälkään odottamaan, että saadaan lisää CPU-tilaa laskelmien suorittamiseen.
- Säie saattaa odottaa loputtomasti objektin monitorin lukitusta, mutta notify() saattaa toistuvasti herättää joitain muita säikeitä. Siinä tapauksessa myös lanka kuivuu nälkään.
11) Mitä kiireinen pyöritys tarkoittaa monisäikeisessä?
Busy spin on tekniikka, jota samanaikaiset ohjelmoijat käyttävät saadakseen säiettä odottamaan tietyissä olosuhteissa. Tämä eroaa aivan perinteisistä menetelmistä, kuten odota() ja sleep(), jotka kaikki sisältävät prosessorin ohjauksesta luopumisen. Tämä menetelmä ei vaadi CPU:n hylkäämistä, vaan se vain suorittaa tyhjän silmukan.
12) Mitä on kontekstin vaihto monisäikeisessä?
Se on prosessorin tilan tallentaminen ja palauttaminen. Tämä auttaa jatkaa säikeen suoritus samasta pisteestä myöhempänä ajankohtana. Se on yksi olennaisista ominaisuuksista moniajokäyttöjärjestelmän ja monisäikeisen ympäristön tuen kannalta.
13) Miksi viestiketjun käyttäytyminen on arvaamatonta?
Voimme sanoa, että säikeen käyttäytyminen on arvaamatonta, koska säikeiden suoritus riippuu säikeiden ajoittimesta. On muistettava, että jokaisella säikeen ajoittimella on erilainen toteutus eri alustoilla, kuten Windows, Unix jne.
14) Kuinka voit keskeyttää ketjun suorittamisen tietyksi ajaksi?
uni () -menetelmää käytetään keskeyttämään säikeen suorittaminen tietyksi ajaksi. Tämä ei kuitenkaan pysäytä säikeen käsittelyä tietyksi ajaksi. Kun säie kuitenkin herää lepotilasta, sen tila muuttuu ajettavaksi ja säikeen ajoituksen perusteella, se suoritetaan.
15) Millä lukuisilla tavoilla säie voi siirtyä odotustilaan?
Säie voi siirtyä odotustilaan seuraavilla tavoilla
- Käyttämällä sleep()-menetelmää
- I/O:n esto
- Objektin lukon hankkiminen epäonnistui
- Kutsumalla objektin wait()-metodia
16) Mitä tapahtuu, jos emme ohita suoritusmenetelmää?
Javassa, kun kutsumme säikeessä start()-metodia, se kutsuu sisäisesti run()-metodia juuri luodulla säikeellä. Joten jos emme ohita run( ) -menetelmää, uutta säiettä ei kutsuta, joten mitään ei tapahdu.
Esimerkiksi:
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) Mikä on tärkein ero Thread.start()- ja Thread?run()-menetelmien välillä?
Thread-luokan Thread.start()-metodi (alkuperäinen menetelmä) suorittaa Thread.A run()-menetelmän suorittamisen säikeessä. Joten, jos kutsumme suoraan Thread.The run()-menetelmä myös suoritetaan samassa säikeessä. Näin ollen se ei koskaan ratkaise uuden säikeen luomisen tarkoitusta.
18) Kuinka luoda säie javassa?
Javassa on kaksi tapaa luoda säiettä.
- Ensin toteuttamalla Runnable-käyttöliittymä ja luomalla siitä sitten säieobjekti.
- Toinen tapa on laajentaa säikeen luokkaa.
19) Mitä viestiketjun prioriteetti tarkoittaa?
Jokaisella säikeellä on prioriteetti. Korkeampi prioriteetti on kuitenkin myös etusijalla toteutuksessa. Se riippuu kuitenkin myös Thread Scheduler -toteutuksesta, joka on käyttöjärjestelmästä riippuvainen. Säikeen prioriteettia on mahdollista muuttaa, mutta se ei takaa, että korkeamman prioriteetin säiettä suoritetaan ensin.
20) Mitä join()-metodi tekee?
Join()-metodi odottaa säikeen kuolemista. Se pakottaa kaikki käynnissä olevat säikeet lopettamaan suorittamisen, kunnes säie liittyy suorittamaan työnsä.
21) Mikä on Java Shutdown Hook?
Java-sammutuskoukkua käytetään resurssien puhdistamiseen, kun JVM sammuu. Puhtaat resurssit tarkoittavat lokitiedoston sulkemista, hälytysten lähettämistä tai jotain muuta. Sammutuskoukkua on käytettävä koodin suorittamiseen ennen kuin JVM sammuu.
22) Mitkä ovat haihtuvan kaksi pääkäyttöä Javassa?
Säikeet saavat säilyttää muuttujien arvot paikallisessa muistissa. Jos muuttuja on merkitty haihtuvaksi, niin aina kun samaa muuttujaa käytetään, se on luettava päämuistista.
Samalla tavalla aina kun muuttuja kirjoitetaan, arvo on tallennettava päämuistiin.
23) Kuinka voit jakaa tietoja kahden säikeen välillä Javassa?
Voimme saada dataa säikeiden välillä käyttämällä jaettua objektia tai samanaikaisesti tietorakenne kuten BlockingQueue. Se toteuttaa tuottaja-kuluttaja -mallin odotus- ja ilmoitusmenetelmillä. Se sisältää myös objektien jakamisen kahden säikeen välillä.
24) Kuinka useita säikeitä voidaan ohjata samanaikaisesti?
Useita säikeitä voidaan ohjata samanaikaisesti, jos ne luodaan ThreadGroup-objektissa.
25) Mikä on estomenetelmä Javassa?
Javassa estomenetelmä on menetelmä, joka estää, kunnes tehtävä on suoritettu. Esimerkiksi hyväksy () -menetelmä ServerSocket-lohkoille, kunnes asiakas on yhdistetty. Tässä esto viittaa kaikkeen, jonka hallinta ei palaa soittajalle ennen kuin tehtävä on ohi.
26) Mikä on tärkein ero odotus- ()- ja nukkumismenetelmien () välillä?
Odota() | Nukkua() |
Tämä menetelmä on määritelty Object-luokassa | Menetelmä on määritelty Thread-luokassa |
Wait() -menetelmä vapauttaa lukon | Tämä menetelmä ei koskaan vapauta lukkoa. |
27) Mikä on muuttumaton objekti? Miten se voi auttaa samanaikaisen hakemuksen kirjoittamisessa?
Mitä tahansa objektia voidaan pitää haastamattomana, jos sen tila ei muutu rakentamisen jälkeen. Muuttumattomia objekteja käytetään yksinkertaisten, luotettavien ja samanaikaisten sovellusten luomiseen.
Muuttumattoman objektin luomiseksi on tärkeää tehdä luokka ja sen jäsen lopullinen, jotta kun objektit on luotu, sen tila ei muutu.
28) Kerro minulle, mikä ero on antautumisen ja nukkumisen välillä?
Kun tehtävä kutsuu tuotto()-metodiaan, se palaa valmiustilaan.
Kun tehtävä käynnistää sleep()-menetelmänsä, se palaa odotustilaan.
29) Mikä on ThreadPool?
ThreadPool on lankajoukko, joka käyttää uudelleen kiinteää määrää säikeitä tietyn tehtävän suorittamiseen.
30) Mikä on synkronoidun avainsanan käyttö?
Synkronoitua avainsanaa voidaan soveltaa joko staattiseen tai ei-staattiseen menetelmään. Synkronoitua käyttämällä vain yksi säie voi käyttää synkronoituja menetelmiä. Kuitenkin tilanteessa, jossa on useita säikeitä, jotka yrittävät käyttää samaa menetelmää. Tuolloin muiden säikeiden on odotettava suoritussäiettä. Se tarjoaa myös lukon esineeseen kilpailutilanteen estämiseksi.
public void synchronized method1(){} public void synchronized staticmethod1(){} public void myMethod(){ synchronized (this){ //synchronized keyword on block of code } }
31) Mikä on haihtuva avainsana?
Haihtuva avainsana on tarkenne, jota käytetään muuttujaan, kun se ilmoitetaan. Se kertoo kääntäjälle, että muuttujan arvo voi muuttua milloin tahansa ilman koodin toimenpiteitä.
32) Mitkä ovat tärkeimmät erot Javan notify- ja notifyAll-toimintojen välillä?
Notify () -menetelmä ei tarjoa mitään tapaa valita tiettyä säiettä, minkä vuoksi se on hyödyllinen vain, kun yksi While notifyAll() lähettää ilmoituksen kaikille säikeille. Sen avulla he voivat myös kilpailla lukoista. Se myös varmistaa, että ainakin yksi säie jatkaa eteenpäin.
33) Mitä JVM-parametria käytetään säikeen pinon koon ohjaamiseen?
Thread in Java Xss -parametria käytetään säätämään pinon kokoa.
34) Voitko aloittaa säikeen kahdesti Javassa?
Ei, kun viestiketju on aloitettu, sitä ei voi aloittaa toista kertaa.
35) Mihin tarkoitukseen käytetään lankaluokan myötömenetelmää?
Tuottomenetelmä on yksinkertaisin tapa pyytää nykyistä säiettä luopumaan CPU:sta, jotta toinen säie. Se on staattinen menetelmä ja takaa vain sen, että nykyinen säie luopuu CPU:sta, mutta ei kerro mitään siitä, mikä muu säie myös vaikuttaa suorittimeen.
36) Milloin voimme sanoa, että säikeet eivät ole kevyt prosessi javassa?
Säikeet eivät ole kevyttä prosessia, kun saman prosessin säikeitä suoritetaan samanaikaisesti. Tosin, jos eri prosessien säikeet suoritetaan samanaikaisesti, säikeistä tulee raskas prosessi.
37) Onko mahdollista synkronoida Java-luokan rakentaja?
Java-standardina rakentajia ei voida synkronoida, koska muut säikeet eivät näe objektia ennen kuin säikeen luontiprosessi on valmis. Java Objects -konstruktoria ei tarvitse synkronoida, koska se lukitsee rakennettavan objektin.
38) Mikä on transienttimuuttuja?
Transienttimuuttuja on muuttuja, jota ei voida serialisoida serialisoinnin aikana. Se alustetaan oletusarvoonsa sarjoinnin aikana.
Nämä haastattelukysymykset auttavat myös vivassasi (suullinen)
Hei minä
se todella auttaa minua. haastattelun valmistelun aikana.
On todella kiitettävää kirjoittaa tämä artikkeli ja antaa nämä tiedot.
Suositeltavaa
5) Mitkä ovat säikeen tilat?
Runnable ei ole Running-tila. Se on valmis juoksemaan
päivitetty! Kiitos, että osoitit tämän
1. Suoritettavat tilat katsotaan kaksikerroksiseksi käyttöjärjestelmätasolla
2. Melkein kaikki ohjelmointikielet pitävät säiettä ajettavana tai EI.
3. Suoritettava säie voi olla joko (valmis tai käynnissä) -tilassa.
4. Sinulla voi olla kaksi säiettä suoritettavassa tilassa, mutta vain yksi säie on olemassa "ajotilassa",
kun taas toinen säie on olemassa "ajotilassa".