Nangungunang 40 Mga Tanong at Sagot sa Panayam sa Multithreading (2024)

Nangungunang Mga Tanong sa Panayam sa Multithreading ng Java

Narito ang Multithreading Interview Questions mga tanong at sagot sa panayam para sa mga fresher pati na rin ang mga may karanasang kandidato para makuha ang kanilang pangarap na trabaho.


1) Ano ang isang Thread?

Ang Thread ay isang kasabay na yunit ng pagpapatupad. Masasabi nating bahagi ito ng proseso na madaling tumakbo kasabay ng iba pang bahagi ng proseso.

Libreng PDF Download: Mga Tanong at Sagot sa Panayam sa Multithreading


2) Ano ang multithreading?

multithreading sa Java ay isang proseso ng pagpapatupad ng dalawa o higit pang mga thread nang sabay-sabay sa maximum na paggamit ng CPU.

Ang pangunahing bentahe ay:

  • Ang mga thread ay nagbabahagi ng parehong espasyo ng address
  • Ang thread ay nananatiling magaan
  • Ang halaga ng komunikasyon sa pagitan ng mga thread ay mababa.

3) Ano ang mga estado na nauugnay sa thread?

  • Nakahanda
  • Tumatakbo
  • Naghihintay
  • Patay na estado

4) Talakayin ang Siklo ng Buhay ng Thread?

Ang life cycle ng isang thread ay katulad ng life cycle ng mga prosesong tumatakbo sa isang operating system. Sa panahon ng siklo ng buhay nito, ang thread ay maaaring lumipat mula sa isang estado patungo sa isa pa. Gayunpaman, depende ito sa operasyon na ginawa dito.


5) Ano ang mga estado ng thread?

Ang mga sumusunod ay ang iba't ibang mga estado ng thread:

Bago: Ang isang thread na kaka-instantiate pa lang ay nasa bagong estado. Kapag ang isang start() na pamamaraan ay na-invoke, ang thread ay magiging handa na estado. Pagkatapos ay inilipat ito sa runnable state ng thread scheduler.

  • Runnable: Isang thread na handang tumakbo
  • Pagpapatakbo: Ang isang thread na nag-e-execute ay nasa running state.
  • Naka-block: Ang isang naka-block na thread ay naghihintay para sa isang lock ng monitor ay nasa ganitong estado. Ang bagay na ito ay maaari ding mangyari kapag ang isang thread ay nagsasagawa ng I/O operation at lumipat sa susunod na estado.
  • Naghihintay: Ito ay isang thread na naghihintay para sa isa pang thread na gawin ang partikular na aksyon.
  • Nag-time_waiting: Ito ay isang thread na naghihintay para sa isa pang thread na gumanap.
  • Tinapos: Ang isang thread na lumabas ay nasa ganitong estado.
Multithreading Mga Katanungan sa Panayam
Multithreading Mga Katanungan sa Panayam

6) Ano ang mga pangunahing pagkakaiba sa pagitan ng Thread at Proseso?

Ang thread ay isang subset ng proseso. Ang proseso ay maaaring maglaman ng maramihang mga thread. Ang proseso ay maaaring tumakbo sa iba't ibang memory space, ngunit ang lahat ng mga thread ay nagbabahagi ng parehong memory space.


7) Ano ang deadlock?

Ang deadlock ay isang sitwasyon kapag ang isang thread ay naghihintay para sa isang object lock, na nakuha ng isa pang thread at ang pangalawang thread ay naghihintay din para sa isang object lock na nakuha ng unang thread. Habang ang parehong mga thread ay naghihintay para sa bawat isa na ilabas ang kundisyong ito ay tinatawag na deadlock.


8) Ano ang LiveLock?

Nangyayari ang Livelock kapag ang lahat ng mga thread ay na-block at hindi maipatupad dahil sa hindi available na mga kinakailangang mapagkukunan, at hindi pagkakaroon ng anumang na-unblock na thread.

Maaaring mangyari ang livelock sa mga sumusunod na kondisyon:

  • Kapag ang lahat ng mga thread sa isang programa ay naisakatuparan sa isang bagay na may zero na mga parameter. Ang programa ay live-lock at hindi naproseso hanggang ang isa o higit pang mga thread ay tumawag sa Object.notify () o Object.notifyAll() sa mga nauugnay na bagay.
  • Nangyayari din ang Livelock kapag ang lahat ng mga thread sa isang programa ay natigil sa walang katapusang mga loop.
Multithreading Mga Katanungan sa Panayam
multithreading

9) Ano ang monitor?

  • Ang monitor ay isang katawan ng code na maaaring isagawa ng isang thread lamang sa isang pagkakataon.
  • Kung ang anumang iba pang thread ay sumusubok na makakuha ng access sa parehong oras, ito ay masususpindi hanggang sa ang kasalukuyang thread ay ilabas ang Monitor.

10) Ano ang ibig mong sabihin sa thread starvation?

Sa sitwasyon kapag ang isang thread ay walang sapat na CPU para sa pagpapatupad nito, nangyayari ang gutom sa thread.

Gayunpaman, maaaring mangyari ito sa mga sumusunod na senaryo

  • Ang mga thread na mababa ang priyoridad ay makakakuha ng mas kaunting CPU kumpara sa mga thread na may mataas na priyoridad. Ang mas mababang priyoridad na thread ay maaaring magutom sa paghihintay na makakuha ng mas maraming espasyo sa CPU para magsagawa ng mga kalkulasyon.
  • Ang thread ay maaaring naghihintay ng walang katiyakan para sa isang lock sa monitor ng bagay ngunit ang notify() ay maaaring paulit-ulit na nakakagising sa ilang iba pang mga thread. Sa kasong iyon, pati thread starves away.

11) Ano ang kahulugan ng busy spin sa multi-threading?

Ang abalang pag-ikot ay isang pamamaraan na ginagamit ng mga kasabay na programmer upang makapaghintay ng thread sa ilang kundisyon. Ito ay lubos na naiiba sa mga tradisyonal na pamamaraan tulad ng wait() at sleep()na lahat ay nagsasangkot ng pag-alis sa kontrol ng CPU. Ang pamamaraang ito ay hindi nangangailangan ng pag-abandona ng CPU, sa halip ito ay nagpapatakbo lamang ng walang laman na loop.


12) Ano ang context-switching sa multi-threading?

Ito ay ang proseso ng pag-iimbak at pagpapanumbalik ng estado ng CPU. Nakakatulong ito sa ipagpatuloy thread execution mula sa parehong punto sa ibang pagkakataon sa oras. Ito ay isa sa mga mahahalagang tampok para sa multitasking operating system at suporta para sa multi-threaded na kapaligiran.


13) Bakit hindi mahuhulaan ang pag-uugali ng Thread?

Masasabi nating ang pag-uugali ng thread ay hindi mahuhulaan dahil ang pagpapatupad ng mga Thread ay nakasalalay sa Thread scheduler. Dapat tandaan na ang bawat thread scheduler ay may iba't ibang pagpapatupad sa iba't ibang mga platform tulad ng Windows, Unix, atbp.


14) Paano mo maaaring i-pause ang pagpapatupad ng isang Thread para sa isang tiyak na tagal ng oras?

sleep () method ay ginagamit upang i-pause ang execution ng thread para sa isang tiyak na tagal ng oras. Gayunpaman, hindi nito hihinto ang pagproseso ng thread para sa isang tiyak na oras. Gayunpaman, kapag ang thread ay gising mula sa pagtulog ay nagbago ang estado nito sa runnable at batay sa pag-iiskedyul ng thread, ito ay isasagawa.


15) Ano ang maraming paraan kung saan maaaring pumasok ang thread sa status ng paghihintay?

Maaaring pumasok ang isang thread sa status ng paghihintay sa pamamagitan ng mga sumusunod na paraan

  • Gamit ang sleep() method
  • Pag-block sa I/O
  • Hindi matagumpay na sinusubukang kumuha ng lock ng isang bagay
  • Sa pamamagitan ng pag-invoke ng wait() method ng object

16) Ano ang mangyayari kung hindi namin i-override ang isang run method?

Sa Java, kapag tinawag natin ang start() na pamamaraan sa isang thread, internal nitong tinatawag ang run() na pamamaraan na may bagong likhang thread. Kaya, kung hindi namin i-override ang run() na pamamaraan, hindi tatawagin ang bagong likhang thread kaya walang mangyayari.
Halimbawa:

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) Ano ang pangunahing pagkakaiba sa pagitan ng Thread.start() at Thread?run() na pamamaraan?

Ginagawa ng Thread.start() method (native method) ng Thread class ang trabaho ng pagpapatakbo ng Thread.A run() method sa isang thread. Kaya, kung direkta nating tatawagan ang Thread. Ang run() na paraan ay ipapatupad din sa parehong thread. Kaya hindi nito malulutas ang layunin ng paglikha ng bagong thread.


18) Paano lumikha ng isang thread sa java?

Mayroong dalawang mga paraan upang lumikha ng isang thread sa java.

  • Una sa pamamagitan ng pagpapatupad ng Runnable interface at pagkatapos ay lumikha ng isang thread object mula dito.
  • Ang pangalawang paraan ay upang pahabain ang klase ng thread.

19) Ano ang kahulugan ng Thread Priority?

May priority ang bawat thread. Gayunpaman, ang mas mataas na priyoridad ay nauuna din sa pagpapatupad. Gayunpaman, depende rin ito sa pagpapatupad ng Thread Scheduler na nakasalalay sa OS. Posibleng baguhin ang priyoridad ng thread, ngunit hindi ito nagbibigay ng katiyakan na ang mas mataas na priyoridad na thread ay unang maipapatupad.


20) Ano ang ginagawa ng join() method?

Ang join() method ay naghihintay para sa isang thread na mamatay. Pinipilit nito ang lahat ng tumatakbong mga thread na huminto sa pagpapatupad hanggang sa oras na ang thread ay sumali upang makumpleto ang trabaho nito.


21) Ano ang Java Shutdown Hook?

Ang Java shutdown hook ay ginagamit upang linisin ang mga mapagkukunan kapag nag-shut down ang JVM. Ang mga malinis na mapagkukunan ay nangangahulugan ng pagsasara ng log file, pagpapadala ng ilang mga alerto o iba pa. Kailangang gamitin ang shutdown hook para mag-execute ng code bago mag-shut down ang JVM.


22) Ano ang dalawang pangunahing gamit ng pabagu-bago ng isip sa Java?

Ang mga thread ay pinahihintulutan na hawakan ang mga halaga ng mga variable sa lokal na memorya Kung ang isang variable ay minarkahan bilang pabagu-bago, pagkatapos ay sa bawat oras na ang parehong variable ay ginagamit, dapat itong basahin mula sa pangunahing memorya.

Sa parehong paraan, sa bawat oras na isinulat ang variable, ang halaga ay dapat na naka-imbak sa pangunahing memorya.


23) Paano mo maibabahagi ang data sa pagitan ng dalawang thread sa Java?

Makakakuha tayo ng data sa pagitan ng mga thread sa pamamagitan ng paggamit ng shared object, o concurrent istruktura ng data tulad ng BlockingQueue. Nagpapatupad ito ng pattern ng producer-consumer gamit ang wait and notify method. Kasama rin dito ang pagbabahagi ng mga bagay sa pagitan ng dalawang thread.


24) Paano makokontrol ang maramihang mga thread nang sabay-sabay?

Maaaring sabay na kontrolin ang maramihang mga thread kung ginawa ang mga ito sa isang bagay na ThreadGroup.


25) Ano ang paraan ng pagharang sa Java?

Sa Java blocking method ay isang paraan na humaharang hanggang sa matapos ang gawain. Halimbawa, tanggapin ang () na paraan ng mga bloke ng ServerSocket hanggang sa oras na nakakonekta ang isang kliyente. Dito, ang pag-block ay tumutukoy sa anumang kumokontrol na hindi babalik sa tumatawag hanggang sa matapos ang gawain.


26) Ano ang pangunahing pagkakaiba sa pagitan ng wait () at sleep () method?

Maghintay() Matulog()
Ang pamamaraang ito ay tinukoy sa klase ng Bagay Ang pamamaraan ay tinukoy sa klase ng Thread
Ang pamamaraang Wait() ay naglalabas ng lock Ang pamamaraang ito ay hindi kailanman naglalabas ng lock.

27) Ano ang isang bagay na hindi nababago? Paano ito makakatulong sa pagsulat ng sabay na aplikasyon?

Anumang bagay ay maaaring ituring na hindi mapaghamong kung ang estado nito ay hindi magbabago matapos itong maitayo. Ang mga Immutable Object ay ginagamit sa paglikha ng simple, maaasahan, at kasabay na mga application.

Para sa paglikha ng object na hindi nababago, mahalagang gawing pangwakas ang klase at ang miyembro nito upang sa sandaling malikha ang mga bagay, hindi nagbabago ang estado nito.


28) Sabihin sa akin ang pagkakaiba sa pagitan ng pagbigay at pagtulog?

Kapag invokes ng isang gawain ang yield() method nito, babalik ito sa ready state.

Kapag invokes ng isang gawain ang sleep() method nito, babalik ito sa waiting state.


29) Ano ang ThreadPool?

Ang ThreadPool ay isang pool ng mga thread na muling gumagamit ng isang nakapirming bilang ng mga thread upang isagawa ang partikular na gawain.


30) Ano ang gamit ng Naka-synchronize na keyword?

Maaaring ilapat ang naka-synchronize na keyword sa static o non-static na paraan. Ang paggamit ng Naka-synchronize ay isang thread lamang ang makaka-access ng mga naka-synchronize na pamamaraan. Gayunpaman, sa sitwasyon kung saan maraming mga thread na sinusubukang i-access ang parehong paraan. Sa oras na iyon, ang ibang mga thread ay kailangang maghintay para sa execution thread. Nagbibigay din ito ng lock sa bagay upang maiwasan ang kondisyon ng lahi.

public void synchronized method1(){}

public void synchronized staticmethod1(){}

public void myMethod(){

synchronized (this){

//synchronized keyword on block of code

}

}

31) Ano ang pabagu-bagong keyword?

Ang pabagu-bagong keyword ay isang qualifier na inilalapat sa isang variable kapag ito ay idineklara. Sinasabi nito sa compiler na ang halaga ng variable ay maaaring magbago anumang oras–nang walang anumang aksyon na ginagawa ng code.


32) Ano ang mga pangunahing pagkakaiba sa pagitan ng notify at notifyAll sa Java?

Notify () method ay hindi nagbibigay ng anumang paraan upang pumili ng partikular na thread, kaya naman ito ay kapaki-pakinabang lamang kapag ang isang While notifyAll() ay nagpapadala ng notification sa lahat ng thread. Ito rin ay nagpapahintulot sa kanila na makipagkumpetensya para sa mga kandado. Tinitiyak din nito na hindi bababa sa isang thread ang magpapatuloy pa.


33) Aling parameter ng JVM ang ginagamit upang kontrolin ang laki ng stack ng isang thread?

Upang kontrolin ang laki ng stack ng Thread sa Java Xss parameter ay ginagamit.


34) Maaari ka bang magsimula ng thread nang dalawang beses sa Java?

Hindi, kapag nagsimula na ang isang thread, hindi na ito masisimulan sa pangalawang pagkakataon.


35) Ano ang layunin ng paggamit ng yield method ng thread class?

Ang paraan ng pagbubunga ay ang pinakasimpleng paraan upang humiling ng kasalukuyang thread na iwanan ang CPU upang ang ibang thread. Ito ay isang static na pamamaraan at ginagarantiyahan lamang na ang kasalukuyang thread ay bibitawan ang CPU ngunit hindi nagsasabi ng anuman tungkol sa kung aling iba pang thread ang makakaapekto rin sa CPU.


36) Kailan natin masasabi na ang mga thread ay hindi magaan na proseso sa java?

Ang mga thread ay hindi magaan na proseso kapag ang mga thread ng parehong proseso ay gumagana nang sabay-sabay. Bagaman, kung ang mga thread ng iba't ibang mga proseso ay sabay-sabay na isinasagawa sa oras na iyon ang mga thread ay nagiging isang mabigat na proseso.


37) Posible bang i-synchronize ang constructor ng isang Java Class?

Bilang Java Standard, hindi maaaring i-synchronize ang mga constructor dahil hindi makikita ng ibang mga thread ang object bago matapos ito sa proseso ng paggawa ng thread. Hindi na kailangang i-synchronize ang Java Objects constructor dahil i-lock nito ang ginagawang object.


38) Ano ang transient variable?

Ang isang lumilipas na variable ay isang variable na hindi maaaring i-serialize sa panahon ng serialization. Sinisimulan ito sa default na halaga nito sa panahon ng serialization.

Ang mga tanong sa panayam na ito ay makakatulong din sa iyong viva(orals)

magbahagi

4 Comments

  1. awatara pagsasanay sa java sabi ni:

    hii
    nakakatulong talaga ito sa akin. sa panahon ng paghahanda ng panayam.
    Talagang kapuri-puri na isulat ang artikulong ito at ibigay ang impormasyong ito.
    Icommnedable sa

  2. awatara Shwethashree Venkatesh sabi ni:

    5) Ano ang mga estado ng thread?
    Ang Runnable ay hindi Running state. Handa na itong tumakbo

    1. updated! Salamat sa pagturo nito

    2. awatara Amuda Adeolu Badmus sabi ni:

      1. Ang mga runnable na estado ay tinitingnan bilang isang bilayer sa antas ng OS

      2. Halos lahat ng programming language ay nakikita ang thread bilang runnable o HINDI.

      3. Ang isang runnable na thread ay maaaring nasa (handa o tumatakbo) na estado.

      4. Maaari kang magkaroon ng dalawang thread sa mga runnable na estado, ngunit isang thread lang ang iiral sa "tumatakbo" na estado,
      habang ang pangalawang thread ay umiiral sa isang "tumatakbo" na estado.

Mag-iwan ng Sagot

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan *