JavaRush /Blog Jawa /Random-JV /Terjemahan: Top 50 pitakonan wawancara miturut utas. Bage...
KapChook
tingkat
Volga

Terjemahan: Top 50 pitakonan wawancara miturut utas. Bagean 2.

Diterbitake ing grup
Pérangan kapindho terjemahan artikel asli Top 50 Pitakonan Wawancara Utas Jawa Jawaban kanggo Freshers, Programmer Experienced. Pérangan pisanan.
  1. Kepiye carane mriksa yen benang nyekel kunci?

  2. Aku ora ngerti yen sampeyan bisa mriksa manawa ana benang sing lagi nyekel kunci nganti aku nemokake pitakonan iki ing wawancara telpon. java.lang.Thread wis cara holdsLock (), bali bener yen lan mung yen Utas saiki nyekeli monitor ing obyek tartamtu.
  3. Carane njaluk thread dump?

  4. A thread dump ngijini sampeyan kanggo mangerteni apa thread saiki mengkono. Ana sawetara cara kanggo entuk dump thread, gumantung saka sistem operasi. Ing Windows sampeyan bisa nggunakake kombinasi ctrl + Break, ing Linux sampeyan bisa nggunakake printah kill -3. Sampeyan uga bisa nggunakake utilitas jstack; makaryakke ing id proses, sing bisa ditemokake nggunakake sarana jps liyane.
  5. Parameter JVM apa sing digunakake kanggo ngontrol ukuran tumpukan benang?

  6. Iki salah siji saka prasaja, -Xss parameter digunakake kanggo ngontrol ukuran tumpukan thread ing Jawa.
  7. Bedane antarane sinkronisasi lan ReentrantLock?

  8. Ana wektu nalika siji-sijine cara kanggo entuk pengecualian bebarengan yaiku liwat tembung kunci sing disinkronake, nanging nduweni sawetara kekurangan, kayata ora bisa ngluwihi kunci ngluwihi cara utawa blok kode, lsp. Jawa 5 ngatasi masalah iki kanthi menehi kontrol luwih granular liwat antarmuka Kunci. ReentrantLock minangka implementasi Lock umum sing nyedhiyakake Kunci kanthi prilaku lan semantik dhasar sing padha karo monitor implisit, sing digayuh nggunakake cara sing diselarasake, nanging kanthi kemampuan sing luwih apik.
  9. Diwenehi 3 Utas T1, T2 lan T3? Carane ngleksanakake urutan T1, T2, T3?

  10. Konsistensi bisa digayuh kanthi akeh cara, nanging sampeyan mung bisa nggunakake cara gabung () kanggo miwiti thread nalika liyane wis rampung nglakokaké. Kanggo ngleksanakake urutan diwenehi, sampeyan kudu miwiti thread pungkasan pisanan, lan banjur nelpon cara gabung () ing urutan mbalikke, sing, T3 nelpon T2.join lan T2 nelpon T1.join, supaya T1 bakal rampung pisanan lan T3 pungkasan. .
  11. Apa sing ditindakake metode ngasilake?

  12. Cara ngasilake minangka salah sawijining cara kanggo njaluk thread nyerahake CPU supaya thread liyane bisa dieksekusi. Iki minangka cara statis lan mung mesthekake yen benang saiki bakal nyerahake prosesor, nanging ora nemtokake eksekusi thread sing bakal ditindakake.
  13. Apa tingkat concurrency saka ConcurrentHashMap?

  14. ConcurrentHashMap entuk skalabilitas lan safety thread kanthi misahake peta nyata dadi bagean. Pemisahan iki digayuh kanthi nggunakake tingkat paralelisme. Iki minangka parameter opsional kanggo konstruktor ConcurrentHashMap lan nilai standar yaiku 16.
  15. Apa Semaphore?

  16. Semaphore minangka jinis sinkronisasi anyar. Iki minangka semaphore kanthi counter. Secara konseptual, semafor ngontrol sakumpulan ijin. Saben ndarbeni () pamblokiran, yen perlu, sadurunge ijin kasedhiya, banjur ndarbeni iku. Saben release () nambah ijin, duweni potensi ngeculake pamblokiran acquirer. Nanging, iki ora nggunakake obyek ijin nyata; Semaphore mung nyimpen jumlah sing kasedhiya lan tumindak sesuai. Semaphore digunakake kanggo nglindhungi sumber daya larang sing kasedhiya ing jumlah winates, kayata sambungan menyang database sing dikumpulake.
  17. Apa sing kedadeyan yen antrian blumbang thread wis kebak lan sampeyan ngirim tugas?

  18. Yen antrian blumbang Utas kebak, tugas sing dikirim bakal "ditolak". ThreadPoolExecutor ngirim () cara mbalang RejectedExecutionException, sawise kang RejectedExecutionHandler disebut.
  19. Beda antarane cara ngirim () lan eksekusi () ing blumbang thread?

  20. Kaloro cara kasebut minangka cara ngirim tugas menyang kolam benang, nanging ana bedane tipis. Execute(runnable command) ditetepake ing antarmuka Executor lan nglakokake tugas sing diwenehake ing mangsa ngarep, nanging sing luwih penting, ora ngasilake apa-apa. Ing tangan liyane, ngirim () cara overloaded, bisa nampa Runnable lan Callable tugas lan bisa bali obyek Future sing bisa digunakake kanggo mbatalake eksekusi lan / utawa ngenteni asil pitungan. Cara iki ditetepake ing antarmuka ExecutorService, kang oleh warisan saka antarmuka Executor, lan saben thread blumbang kelas, kayata ThreadPoolExecutor utawa ScheduledThreadPoolExecutor, warisan cara iki.
  21. Apa metode pamblokiran?

  22. Cara pamblokiran minangka cara sing ngalangi nganti tugas rampung, contone, pamblokiran metode ServerSocket nampa () nalika ngenteni klien nyambung. Ing kene, pamblokiran tegese kontrol ora bakal bali menyang cara nelpon nganti proyek rampung. Ing sisih liya, ana cara sing ora sinkron utawa ora mblokir sing rampung sadurunge tugas rampung.
  23. Apa Utas Swing aman?

  24. Cukup, ora, Swing ora aman, nanging sampeyan kudu nerangake apa sing dimaksud, sanajan sing diwawancarai ora takon. Nalika kita ngomong sing Swing ora Utas-aman, kita biasane deleng kasunyatan sing iku komponen sing ora bisa diowahi dening sawetara Utas. Kabeh owah-owahan kanggo komponen GUI kudu digawe ing thread AWT, lan Swing menehi cara sinkron lan bedo kanggo jadwal owah-owahan kuwi.
  25. Bedane antarane invokeAndWait lan invokeLater?

  26. Iki minangka rong cara API Swing sing ngidini pangembang nganyari komponen GUI saka thread tinimbang saka thread Manager Event. InvokeAndWait() nganyari komponen GUI kanthi sinkron kayata bar progres; saben kemajuan digawe, bar kudu dianyari kanggo nggambarake owah-owahan. Yen kemajuan lagi dilacak ing thread liyane, iku kudu nelpon invokeAndWait () kanggo nemtokake thread Dispatcher Event nganyari komponen. Lan invokeLater () iku telpon bedo kanggo nganyari komponen.
  27. Cara API Swing sing aman kanggo benang?

  28. Pitakonan iki maneh babagan Swing lan safety thread, sanajan komponen Swing ora aman, ana cara sing bisa diarani kanthi aman saka pirang-pirang benang. Aku ngerti sing repaint () lan revalidate () Utas-aman, nanging ana cara liyane ing komponen Swing beda, kayata JTextComponent setText () lan insert JTextArea () lan append ().
  29. Kepiye carane nggawe obyek sing ora bisa diganti?

  30. Pitakonan iki koyone ora ana hubungane karo multithreading lan concurrency, nanging ora. Immutability mbantu nyederhanakake kode paralel sing wis kompleks. Obyek sing ora bisa diganti larang banget kanggo pangembang amarga bisa disebarake tanpa sinkronisasi. Sayange, Jawa ora duwe anotasi @Immutable, sing bakal nggawe obyek sampeyan ora bisa diganti, amarga pangembang iki kudu kerja keras. Kanggo nggawe obyek sing ora bisa diganti, sampeyan kudu ngetutake dhasar: initialization ing konstruktor, ora ana setter, ora ana bocor referensi, nyimpen salinan kapisah saka obyek sing bisa diganti.
  31. Apa ReadWriteLock?

  32. Umumé, ReadWriteLock minangka asil saka teknik parsing kunci kanggo nambah kinerja aplikasi paralel. Iki minangka antarmuka sing ditambahake ing Jawa 5. Makaryakke ing pasangan kunci sing gegandhengan, siji kanggo operasi maca, siji kanggo operasi nulis. Kunci maca bisa dicekel bebarengan dening sawetara utas maca nganti ora ana panulis. Kunci nulis iku eksklusif. Yen sampeyan pengin, sampeyan bisa ngleksanakake antarmuka karo ruleset Panjenengan, utawa sampeyan bisa nggunakake ReentrantReadWriteLock, sing ndhukung maksimum 65535 recursive nulis kunci lan 65535 maca kunci.
  33. Apa sing sibuk muter?

  34. Sibuk Spin punika technique programer digunakake kanggo meksa thread ngenteni ing kondisi tartamtu. Boten kados cara tradisional, ngenteni (), turu () utawa ngasilaken (), kang melu kontrol ceding saka prosesor, cara iki ora cede prosesor, nanging mung nglakokaké daur ulang kosong. Yagene ana wong sing nindakake iki? Kanggo nyimpen cache prosesor. Ing sistem multi-inti, bisa uga thread sing digantung bakal terus dieksekusi ing inti liyane, sing tegese cache dibangun maneh. Kanggo ngindhari mbangun maneh sing larang regane, programer luwih seneng ngenteni kanthi nggunakake spin sibuk.
  35. Bedane antarane variabel molah malih lan atom?

  36. Iki minangka pitakonan sing cukup menarik, ing wiwitan variabel molah malih lan atom katon meh padha, nanging isih beda. Variabel Volatile nyedhiyakake jaminan kedadeyan-sadurunge yen nulis bakal kedadeyan sadurunge nulis sakteruse; ora njamin atomicity. Contone, operasi count++ ora bakal dadi atom mung amarga count diumumake molah malih. Ing tangan liyane, kelas AtomicInteger menehi cara atom kanggo nindakake operasi Komplek kuwi atom, contone getAndIncrement () panggantos atom kanggo operator increment, iku bisa digunakake kanggo atom nambah Nilai saiki dening siji. Ana uga versi atom kanggo jinis data liyane.
  37. Apa sing kedadeyan yen benang mbuwang Pengecualian ing blok sing disinkronake?

  38. Iki minangka pitakonan trick liyane kanggo programer Java biasa. Ora ketompo carane sampeyan metu saka blok sing disinkronake, biasane kanthi ngrampungake eksekusi utawa dumadakan kanthi mbuwang pengecualian, benang kasebut ngeculake kunci sing dipikolehi nalika mlebu blok sing diselarasake. Iki minangka salah sawijining alasan kenapa aku seneng karo blok kunci sing disinkronake menyang antarmuka sing mbutuhake perawatan khusus nalika ngeculake kunci, biasane digayuh kanthi ngeculake kunci ing blok pungkasan.
  39. Apa Singleton kang pindho dicenthang ngunci?

  40. Iki minangka salah sawijining pitakonan wawancara sing paling populer, nanging, sanajan popularitase, kemungkinan calon sing mangsuli 50% paling apik. Setengah wektu padha gagal ing nulis kode, lan setengah liyane nerangake carane rusak lan tetep ing Jawa 1.5. Iki minangka cara lawas kanggo nggawe singleton sing aman kanggo thread sing nyoba ngoptimalake kinerja kanthi mung mblokir nalika instance singleton pisanan digawe, nanging amarga kerumitan lan kasunyatan sing rusak ing JDK 1.4, aku ora seneng. iku. Isih, sanajan sampeyan ora seneng pendekatan iki, migunani kanggo ngerti saka perspektif wawancara.
  41. Kepiye carane nggawe Singleton sing aman kanggo benang?

  42. Pitakonan iki nglengkapi pitakonan sadurunge. Yen sampeyan ngomong sampeyan ora seneng ngunci pindho dicenthang, banjur interviewer bakal dipeksa kanggo takon bab cara alternatif kanggo nggawe Singleton aman thread. Lan padha, sampeyan bisa njupuk kauntungan saka loading kelas lan fitur initialization variabel statis kanggo instantiate Singleton, utawa sampeyan bisa njupuk kauntungan saka jinis enum kuat.
  43. Dhaptar 3 adat sing sampeyan tindakake ing program paralel?

  44. Iki minangka pitakonan sing paling disenengi amarga aku yakin ana aturan tartamtu sing kudu ditindakake nalika nulis kode paralel, sing mbantu kinerja, debugging, lan dhukungan. Ing ngisor iki ana 3 aturan paling apik sing aku yakin saben programmer Java kudu tindakake:
    • Tansah menehi jeneng sing migunani kanggo benang sampeyan
    • Nemokake bug utawa nelusuri pengecualian ing kode paralel minangka tugas sing rada angel. OrderProcessor, QuoteProcessor utawa TradeProcessor luwih apik tinimbang Thread-1. Utas-2 lan Utas-3. Jeneng kudu nggambarake tugas sing ditindakake dening benang. Kabeh kerangka utama lan malah JDK tindakake aturan iki.
    • Aja ngalangi utawa nyuda ruang lingkup sinkronisasi
    • Pamblokiran iku larang, lan ngoper konteks malah luwih larang. Coba supaya sinkronisasi lan pamblokiran sabisa, lan sampeyan bakal ngurangi bagean kritis kanggo minimal dibutuhake. Mulane aku luwih seneng blok wektu tinimbang metode wektu amarga menehi kontrol mutlak babagan pamblokiran.
    • Antarane sinkronisasi lan ngenteni lan ngabari, pilih sinkronisasi
    • Kaping pisanan, sinkronisasi kayata CountDownLatch, Semaphore, CyclicBarrier utawa Exchanger nyederhanakake coding. Iku angel banget kanggo ngleksanakake aliran kontrol Komplek nggunakake ngenteni lan notifikasi. Kapindho, kelas kasebut ditulis lan dikelola dening sing paling apik ing bisnis kasebut lan ana kemungkinan sing bakal dioptimalake utawa diganti karo kode sing luwih apik ing rilis JDK ing mangsa ngarep. Kanthi nggunakake utilitas sinkronisasi tingkat dhuwur, sampeyan kanthi otomatis entuk kabeh keuntungan kasebut.
    • Antarane Koleksi Serentak lan Koleksi Selaras, pilih Koleksi Serentak
    • Iki minangka aturan prasaja liyane sing gampang dituruti lan entuk keuntungan. Koleksi bebarengan luwih bisa diukur tinimbang mitra sing disinkronake, mula luwih becik digunakake nalika nulis kode paralel. Dadi sabanjure sampeyan butuh peta, pikirake ConcurrentHashMap sadurunge sampeyan mikir babagan Hashtable.
  45. Carane meksa thread kanggo miwiti?

  46. Iki pitakonan a la carane meksa koleksi uwuh kanggo mbukak. Ing cendhak, ora, sampeyan bisa mesthi nggawe pitakonan nggunakake System.gc (), nanging ora njamin apa-apa. Pancen ora ana cara kanggo meksa thread kanggo miwiti ing Jawa, iki dikontrol dening jadwal thread lan Jawa ora nyedhiyani sembarang API kanggo ngontrol. Bagian Jawa iki isih acak-acakan.
  47. Apa kerangka Fork/Join?

  48. Framework Fork/Join sing dienal ing JDK 7 minangka sarana kuat sing ngidini pangembang kanggo njupuk kauntungan saka macem-macem prosesor server modern. Iki dirancang kanggo karya sing bisa dipérang sacara rekursif dadi partikel cilik. Tujuane yaiku nggunakake kabeh daya komputasi sing kasedhiya kanggo nambah kinerja aplikasi sampeyan. Salah sawijining kauntungan penting saka kerangka iki yaiku nggunakake algoritma nyolong karya (saka karya - kerja lan nyolong - kanggo nyolong). Utas buruh sing wis entek proyek bisa nyolong proyek saka utas liyane sing isih sibuk.
  49. Apa prabédan antarane telpon ngenteni () lan turu ()?

  50. Senajan loro ngenteni lan turu makili jenis ngaso ing aplikasi Java, iku piranti kanggo kabutuhan beda. Enteni digunakake kanggo komunikasi thread internal, iku ngasilake kanggo ngunci yen kondisi Enteni bener, lan ngenteni kabar yen tumindak thread liyane nggawe kahanan Enteni palsu. Ing tangan liyane, turu () cara mung menehi munggah prosesor utawa mungkasi thread saiki saka nglakokaké kanggo wektu tartamtu. Nelpon turu () ora ngeculake kunci sing dicekel thread saiki.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION