Masalah multithreading dan konkurensi adalah bagian penting dari setiap wawancara Java. Jika Anda ingin mendapatkan posisi informasi front-end di bank investasi saham mana pun, maka Anda harus menyiapkan banyak pertanyaan tentang multithreading. Multithreading dan concurrency adalah topik yang sangat populer dalam perbankan investasi, terutama terkait dengan pengembangan transaksi elektronik. Mereka akan bertanya kepada pewawancara banyak pertanyaan threading Java yang membingungkan. Pewawancara hanya ingin memastikan bahwa pewawancara memiliki pengetahuan Java yang cukup dan konkurensi, karena banyak kandidat hanya dangkal. Kapasitas tinggi dan sistem perdagangan elektronik latensi rendah untuk transaksi berorientasi pasar langsung secara inheren bersamaan. Berikut ini adalah pertanyaan threading Java yang ingin saya tanyakan pada waktu dan tempat yang berbeda. Saya tidak memberikan jawaban, tetapi saya akan memberi Anda petunjuk jika memungkinkan, dan kadang -kadang petunjuk ini cukup untuk menjawab pertanyaan. Sekarang ada semakin banyak masalah yang mengacu pada paket bersamaan Java5 mengenai alat bersamaan dan koleksi bersamaan. Threadlocal, memblokir antrian, menghitung semaphore dan concurrenthashmap lebih populer di antara pertanyaan -pertanyaan itu.
15 Java Multi-Threaded Wawancara Pertanyaan dan Jawaban
1) Sekarang ada tiga utas T1, T2 dan T3. Bagaimana Anda memastikan bahwa T2 dieksekusi setelah T1 dieksekusi dan T3 dieksekusi setelah T2 dieksekusi?
Pertanyaan utas ini biasanya ditanyakan selama tahap wawancara putaran pertama atau telepon, dengan tujuan memeriksa apakah Anda terbiasa dengan metode "bergabung". Masalah multi-threading ini relatif sederhana dan dapat diimplementasikan menggunakan metode gabungan.
2) Apa keuntungan dari antarmuka kunci di atas blok yang disinkronkan di java? Anda perlu menerapkan cache yang efisien yang memungkinkan banyak pengguna untuk membaca tetapi hanya satu pengguna untuk menulis untuk mempertahankan integritasnya. Bagaimana Anda mengimplementasikannya?
Keuntungan terbesar dari antarmuka kunci dalam pemrograman multi-threaded dan bersamaan adalah mereka memberikan kunci untuk membaca dan menulis secara terpisah, yang dapat memuaskan Anda untuk menulis struktur data kinerja tinggi seperti concurrenthashmap dan pemblokiran bersyarat. Pertanyaan wawancara Java Thread semakin diajukan berdasarkan jawaban pewawancara. Saya sangat merekomendasikan membaca kunci dengan hati-hati sebelum Anda pergi ke wawancara multi-threaded, karena saat ini digunakan untuk membangun cache klien sistem transaksi elektronik dan ruang koneksi transaksi.
3) Apa perbedaan antara metode tunggu dan tidur di java?
Java Thread Wawancara Pertanyaan yang sering ditanyakan selama wawancara telepon. Perbedaan terbesar adalah bahwa Wait melepaskan kunci sambil menunggu, sementara tidur selalu menahan kunci. Tunggu biasanya digunakan untuk interaksi antar-thread, dan tidur biasanya digunakan untuk menjeda eksekusi.
4) Gunakan Java untuk menerapkan antrian pemblokiran.
Ini adalah pertanyaan wawancara multi-threaded yang relatif sulit, yang dapat mencapai banyak tujuan. Pertama, dapat mendeteksi apakah kandidat dapat benar -benar menulis program di utas Java; Kedua, dapat mendeteksi pemahaman kandidat tentang skenario bersamaan, dan Anda dapat mengajukan banyak pertanyaan berdasarkan ini. Jika dia menggunakan metode Wait () dan Notify () untuk mengimplementasikan antrian pemblokiran, Anda dapat memintanya untuk menulisnya lagi dengan kelas bersamaan terbaru di Java 5.
5) Gunakan Java untuk menulis kode untuk menyelesaikan masalah produser-konsumen.
Ini sangat mirip dengan pertanyaan di atas, tetapi pertanyaan ini lebih klasik. Terkadang pertanyaan berikut akan ditanyakan dalam wawancara. Bagaimana cara menyelesaikan masalah produser-konsumen di Java? Tentu saja, ada banyak solusi. Saya telah berbagi metode yang menggunakan antrian memblokir untuk diimplementasikan. Kadang -kadang mereka bahkan bertanya bagaimana menyadari masalah yang dimakan para filsuf.
6) Bagaimana Anda akan menyelesaikan masalah pemrograman program yang akan menyebabkan kebuntuan di Java?
Ini adalah pertanyaan wawancara java thread favorit saya, karena meskipun masalah kebuntuan sangat umum ketika menulis program bersamaan multi-utas, banyak kandidat tidak dapat menulis kode bebas kebuntuan (tidak ada kode kebuntuan?), Dan mereka berjuang. Cukup beri tahu mereka bahwa Anda memiliki sumber daya N dan n utas, dan Anda memerlukan semua sumber daya untuk menyelesaikan operasi. Untuk kesederhanaan, N dapat diganti dengan 2, semakin besar data akan membuat masalah tampak lebih rumit. Dapatkan informasi lebih lanjut tentang kebuntuan dengan menghindari kebuntuan di Java.
7) Apa itu operasi atom dan apa itu operasi atom di java?
Pertanyaan wawancara Java Thread yang sangat sederhana, pertanyaan berikutnya adalah Anda perlu menyinkronkan operasi atom.
8) Apa peran kunci volatile dalam java? Bagaimana cara menggunakannya? Apa bedanya dengan metode yang disinkronkan di java?
Karena model memori Java 5 dan Java telah berubah, masalah threading berdasarkan kata kunci yang mudah menguap menjadi semakin populer. Anda harus siap menjawab tentang bagaimana variabel yang mudah menguap memastikan visibilitas di lingkungan yang bersamaan.
9) Apa kondisi kompetisi? Bagaimana Anda menemukan dan menyelesaikan kompetisi?
Ini adalah pertanyaan yang muncul pada tahap lanjutan wawancara multi-threaded. Sebagian besar pewawancara akan bertanya tentang kondisi kompetisi yang Anda temui baru -baru ini dan bagaimana Anda menyelesaikannya. Ada kalanya mereka menulis kode sederhana dan kemudian membiarkan Anda mendeteksi kondisi balapan untuk kode. Anda dapat merujuk ke artikel saya sebelumnya tentang kondisi balapan Java. Menurut pendapat saya ini adalah salah satu pertanyaan wawancara utas Java terbaik, yang secara akurat dapat mendeteksi pengalaman kandidat dalam menyelesaikan kondisi ras, atau menulis kode yang bebas dari lomba data atau kondisi balapan lainnya. Buku terbaik tentang ini adalah "Praktik Konkurensi di Java".
10) Bagaimana Anda akan menggunakan dump utas? Bagaimana Anda akan menganalisis dump utas?
Di UNIX Anda dapat menggunakan Kill -3, dan kemudian Thread Dump akan mencetak log. Di Windows Anda dapat menggunakan "Ctrl+Break". Pertanyaan wawancara utas yang sangat sederhana dan profesional, tetapi akan sulit jika dia bertanya kepada Anda bagaimana menganalisisnya.
11) Mengapa kita menjalankan metode run () ketika kita memanggil metode start (), dan mengapa kita tidak dapat secara langsung memanggil metode run ()?
Ini adalah pertanyaan wawancara multi-threaded Java yang sangat klasik. Ini juga kebingungan saya ketika saya pertama kali mulai menulis program threading. Sekarang pertanyaan ini biasanya ditanyakan selama wawancara telepon atau putaran pertama wawancara java junior dan tengah. Jawaban untuk pertanyaan ini harus seperti ini: Ketika Anda memanggil metode start (), Anda akan membuat utas baru dan menjalankan kode dalam metode run (). Tetapi jika Anda memanggil metode run () secara langsung, itu tidak akan membuat utas baru atau menjalankan kode yang memanggil utas. Baca artikel "Perbedaan Antara Metode Mulai dan Jalankan" yang saya tulis sebelumnya untuk mendapatkan informasi lebih lanjut.
12) Bagaimana Anda membangunkan benang pemblokiran di Java?
Ini adalah pertanyaan yang sulit tentang threading dan pemblokiran, dan memiliki banyak solusi. Jika utas mengalami penyumbatan IO, saya tidak berpikir ada cara untuk membatalkan utas. Jika utas blok karena memanggil metode tunggu (), sleep (), atau gabung (), Anda dapat mengganggu utas dan membangunkannya dengan melemparkan Exception interrupted. "Cara menangani metode pemblokiran di Java" yang saya tulis sebelumnya memiliki banyak informasi tentang menangani pemblokiran utas.
13) Apa perbedaan antara Cyclibarriar dan Countdownlatch di Java?
Masalah threading ini terutama digunakan untuk mendeteksi apakah Anda terbiasa dengan paket bersamaan di JDK5. Perbedaan antara keduanya adalah bahwa cyclicbarrier dapat menggunakan kembali penghalang yang telah dilewati, sementara Countdownlatch tidak dapat digunakan kembali.
14) Apa itu objek yang tidak dapat diubah dan bagaimana hal itu membantu menulis aplikasi bersamaan?
Pertanyaan wawancara klasik lainnya untuk multi-threading tidak secara langsung terkait dengan utas, tetapi sangat membantu secara tidak langsung. Pertanyaan wawancara Java ini bisa menjadi sangat rumit jika dia meminta Anda untuk menulis objek yang tidak dapat diubah, atau bertanya mengapa string tidak dapat berubah.
15) Apa masalah umum yang Anda temui di lingkungan multi-threaded? Bagaimana Anda menyelesaikannya?
Biasanya ditemui dalam program multithreaded dan concurrent adalah antarmuka memori, kondisi ras, kebuntuan, kunci langsung dan kelaparan. Masalahnya tidak ada habisnya, dan jika Anda salah, akan sulit untuk ditemukan dan debug. Ini sebagian besar berbasis wawancara, bukan pertanyaan java threading berbasis aplikasi praktis.
Beberapa pertanyaan lain ditambahkan:
1) Apa perbedaan antara benang hijau dan utas lokal di java?
2) Perbedaan antara utas dan proses?
3) Apa itu switching konteks dalam multithreading?
4) Perbedaan antara kebuntuan dan kunci hidup, perbedaan antara kebuntuan dan kelaparan?
5) Apa algoritma penjadwalan utas yang digunakan dalam java?
6) Apa penjadwalan utas di Java?
7) Bagaimana Anda menangani pengecualian yang tidak tertandingi di utas?
8) Apa itu grup utas dan mengapa tidak direkomendasikan di Java?
9) Mengapa lebih baik menggunakan kerangka kerja pelaksana daripada membuat dan mengelola utas dengan aplikasi?
10) Apa perbedaan antara pelaksana dan pelaksana di Java?
11) Bagaimana cara menemukan utas mana yang menggunakan waktu CPU terpanjang di Windows dan Linux?
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.