En Çok Kullanılan 40 Mülakat Sorusu ve Yanıtı (2025)
En Popüler Java Çoklu İş Parçacığı Mülakat Soruları
İşte hayallerindeki işi bulmaları için hem yeni başlayanlar hem de deneyimli adaylar için Çok İş Parçalı Mülakat Soruları mülakat soruları ve cevapları.
1) Konu Nedir?
Bir İş Parçacığı eşzamanlı bir yürütme birimidir. Sürecin diğer bölümleriyle kolaylıkla eş zamanlı çalışabilen bir sürecin parçası diyebiliriz.
Ücretsiz PDF İndir: Çok İş Parçalı Röportaj Soruları ve Cevapları
2) Çoklu iş parçacığı nedir?
Çok iş parçacığı Java'da, CPU'nun maksimum kullanımı için iki veya daha fazla iş parçacığının aynı anda çalıştırılması işlemidir.
Ana avantajı:
- Konular aynı adres alanını paylaşıyor
- İplik hafif kalır
- İş parçacıkları arasındaki iletişimin maliyeti düşüktür.
3) İş parçacığıyla ilişkili durumlar nelerdir?
- Hazır
- Koşu
- Bekleyen
- ölü hal
4) İş Parçacığı Yaşam Döngüsünü Tartışıyor musunuz?
Bir iş parçacığının yaşam döngüsü, bir iş parçacığında çalışan süreçlerin yaşam döngüsüne benzer. işletim sistemi. Yaşam döngüsü boyunca iş parçacığı bir durumdan diğerine geçebilir. Ancak bu, üzerinde yapılan işleme bağlıdır.
5) İş parçacığı durumları nelerdir?
Aşağıda farklı iş parçacığı durumları verilmiştir:
Yeni: Yeni başlatılan bir iş parçacığı yeni durumdadır. Bir start() yöntemi çağrıldığında iş parçacığı hazır durumuna geçer. Daha sonra iş parçacığı zamanlayıcı tarafından çalıştırılabilir duruma taşınır.
- Çalıştırılabilir: Çalıştırılmaya hazır bir iş parçacığı
- Koşu: Yürütülmekte olan bir iş parçacığı çalışma durumundadır.
- Engellendi: Engellenen bir iş parçacığı bu durumda bir monitör kilidini bekliyor. Bu durum, bir iş parçacığının bir G/Ç işlemi gerçekleştirip bir sonraki duruma geçmesi durumunda da meydana gelebilir.
- Bekleyen: Başka bir iş parçacığının belirli bir eylemi gerçekleştirmesini bekleyen bir iş parçacığıdır.
- Timed_waiting: Başka bir iş parçacığının çalışmasını bekleyen bir iş parçacığıdır.
- Sonlandırılmış: Çıkış yapılan bir iş parçacığı bu durumdadır.
6) İş parçacığı ve Süreç arasındaki temel farklar nelerdir?
İş parçacığı sürecin bir alt kümesidir. İşlem birden fazla iş parçacığı içerebilir. İşlem farklı bellek alanında çalışabilir ancak tüm iş parçacıkları aynı bellek alanını paylaşır.
7) Kilitlenme nedir?
Kilitlenme, bir iş parçacığının başka bir iş parçacığı tarafından elde edilen bir nesne kilidini beklediği ve ikinci iş parçacığının da birinci iş parçacığı tarafından elde edilen bir nesne kilidini beklediği bir durumdur. Her iki iş parçacığı da birbirinin serbest bırakılmasını beklediğinden bu duruma kilitlenme denir.
8) LiveLock nedir?
Livelock, tüm iş parçacıkları engellendiğinde ve gerekli kaynakların mevcut olmaması ve engellenmemiş herhangi bir iş parçacığının mevcut olmaması nedeniyle yürütülemediğinde meydana gelir.
Livelock aşağıdaki durumlarda meydana gelebilir:
- Bir programdaki tüm iş parçacıkları sıfır parametreli bir nesne üzerinde çalıştırıldığında. Program canlı olarak kilitlenir ve bir veya daha fazla iş parçacığı ilgili nesnelerde Object.notify () veya Object.notifyAll() öğesini çağırana kadar asla işlenmez.
- Livelock ayrıca bir programdaki tüm iş parçacıklarının sonsuz döngülerde sıkışıp kalması durumunda da meydana gelir.
9) Monitör nedir?
- Monitör, aynı anda yalnızca bir iş parçacığı tarafından yürütülebilen bir kod gövdesidir.
- Aynı anda başka bir iş parçacığı erişim sağlamaya çalışırsa, geçerli iş parçacığı Monitörü serbest bırakana kadar askıya alınacaktır.
10) İplik açlığıyla ne demek istiyorsunuz?
Bir iş parçacığının yürütülmesi için yeterli CPU'ya sahip olmadığı durumda, iş parçacığı açlığı meydana gelir.
Ancak aşağıdaki senaryolarda gerçekleşebilir
- Düşük öncelikli iş parçacıkları, yüksek öncelikli iş parçacıklarına kıyasla daha az CPU alacaktır. Düşük öncelikli iş parçacığı, hesaplamaları gerçekleştirmek için daha fazla CPU alanı elde etmeyi bekleyerek aç kalabilir.
- İş parçacığı nesnenin monitöründe süresiz olarak kilitlenmeyi bekliyor olabilir, ancak notify() başka iş parçacıklarını tekrar tekrar uyandırıyor olabilir. Bu durumda iplik de açlıktan ölür.
11) Çoklu iş parçacığında meşgul dönüşün anlamı nedir?
Meşgul döndürme, eşzamanlı programcıların bir iş parçacığını belirli bir durumda bekletmek için kullandıkları bir tekniktir. Bu, tümü CPU kontrolünden vazgeçmeyi içeren wait () ve uyku () gibi geleneksel yöntemlerden oldukça farklıdır. Bu yöntem CPU'nun terk edilmesini gerektirmez, bunun yerine sadece boş döngüyü çalıştırır.
12) Çoklu iş parçacığında bağlam değiştirme nedir?
CPU durumunun saklanması ve geri yüklenmesi işlemidir. Bu yardımcı olur devam et daha sonraki bir noktada aynı noktadan iş parçacığı yürütmesi. Çok görevli işletim sistemi ve çok iş parçacıklı ortam desteği için temel özelliklerden biridir.
13) İş parçacığının davranışı neden tahmin edilemez?
İş parçacığı davranışının tahmin edilemez olduğunu söyleyebiliriz çünkü İş Parçacıklarının yürütülmesi İş Parçacığı zamanlayıcısına bağlıdır. Her iş parçacığı zamanlayıcının Windows, Unix vb. farklı platformlarda farklı bir uygulamaya sahip olduğu unutulmamalıdır.
14) Bir Konunun yürütülmesini belirli bir süre için nasıl duraklatabilirsiniz?
Sleep () yöntemi, iş parçacığının yürütülmesini belirli bir süre duraklatmak için kullanılır. Ancak bu, iş parçacığının işlenmesini belirli bir süre durdurmaz. Ancak iş parçacığı uykudan uyandığında durumu çalıştırılabilir olarak değişir ve iş parçacığı zamanlamasına bağlı olarak yürütülür.
15) Bir iş parçacığının bekleme durumuna girebilmesinin çeşitli yolları nelerdir?
Bir iş parçacığı bekleme durumuna aşağıdaki yollarla girebilir
- uyku() yöntemini kullanma
- G/Ç'de engelleme
- Başarısız bir şekilde bir nesnenin kilidini almaya çalışmak
- Bir nesnenin wait() yöntemini çağırarak
16) Bir run yöntemini geçersiz kılmazsak ne olur?
Java'da, bir iş parçacığı üzerinde start() yöntemini çağırdığımızda, yeni oluşturulan iş parçacığı ile dahili olarak run() yöntemini çağırır. Yani, eğer run( ) metodunu geçersiz kılmazsak, yeni oluşturulan thread çağrılmayacak ve dolayısıyla hiçbir şey olmayacaktır.
Örnek:
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) Thread.start() ve Thread?run() yöntemi arasındaki en büyük fark nedir?
Thread sınıfının Thread.start() yöntemi (yerel yöntem), bir iş parçacığında Thread.A run() yöntemini çalıştırma işini yapar. Yani, doğrudan Thread.'i çağırırsak, run() yöntemi de aynı iş parçacığında yürütülür. Böylece yeni bir iş parçacığı oluşturma amacını asla çözemez.
18) Java'da thread nasıl oluşturulur?
Java'da thread oluşturmanın iki yöntemi vardır.
- İlk önce Runnable arayüzünü uygulayarak ve ardından ondan bir iş parçacığı nesnesi oluşturun.
- İkinci yöntem iş parçacığı sınıfını genişletmektir.
19) Konu Önceliği anlamı nedir?
Her iş parçacığının bir önceliği vardır. Ancak, daha yüksek öncelik, yürütmede de öncelik kazanır. Ancak bu aynı zamanda işletim sistemine bağlı olan İş Parçacığı Zamanlayıcı uygulamasına da bağlıdır. İş parçacığının önceliğini değiştirmek mümkündür, ancak bu, daha yüksek öncelikli iş parçacığının önce yürütüleceğinin garantisini vermez.
20) join() yöntemi ne işe yarar?
join() yöntemi bir iş parçacığının ölmesini bekler. İş parçacığının işini tamamlamak için birleştiği zamana kadar çalışan tüm iş parçacıklarını yürütmeyi durdurmaya zorlar.
21) Java Kapatma Kancası nedir?
Java kapatma kancası, JVM kapatıldığında kaynakları temizlemek için kullanılır. Temiz kaynaklar, günlük dosyasını kapatmak, bazı uyarılar göndermek veya başka bir şey anlamına gelir. JVM kapanmadan önce kodu yürütmek için kapatma kancasının kullanılması gerekir.
22) Java'da volatile'ın iki ana kullanımı nelerdir?
İş parçacıklarının değişkenlerin değerlerini yerel bellekte tutmasına izin verilir. Bir değişken geçici olarak işaretlendiyse, aynı değişken her kullanıldığında ana bellekten okunması gerekir.
Aynı şekilde değişken her yazıldığında değerin ana bellekte saklanması gerekir.
23) Java'da iki iş parçacığı arasında veriyi nasıl paylaşabilirsiniz?
Paylaşılan bir nesne veya eşzamanlı kullanarak iş parçacıkları arasında veri alabiliriz. veri yapısı BlockingQueue gibi. Bekleme ve bildirim yöntemlerini kullanarak üretici-tüketici modelini uygular. Aynı zamanda iki iş parçacığı arasında nesnelerin paylaşılmasını da içerir.
24) Birden fazla iş parçacığı aynı anda nasıl kontrol edilebilir?
Bir ThreadGroup nesnesinde oluşturulmuşlarsa birden fazla iş parçacığı aynı anda kontrol edilebilir.
25) Java'da engelleme yöntemi nedir?
Java'da engelleme yöntemi, görev tamamlanana kadar bloke eden bir yöntemdir. Örneğin, Accept() yöntemi ServerSocket'in istemciye bağlanana kadar bloke edilmesini sağlar. Burada engelleme, görev bitene kadar kontrolün arayan kişiye geri dönmeyeceği herhangi bir şeyi ifade eder.
26) wait () ve uyku () yöntemi arasındaki temel fark nedir?
Bekle() | Uyku() |
Bu yöntem Object sınıfında tanımlanmıştır. | Yöntem Thread sınıfında tanımlanmıştır. |
Wait() yöntemi kilidi serbest bırakır | Bu yöntem asla kilidi açmaz. |
27) Değişmez nesne nedir? Eşzamanlı bir başvuru yazmaya nasıl yardımcı olabilir?
Herhangi bir nesne, inşa edildikten sonra durumu değişmiyorsa, karşı çıkılamaz olarak kabul edilebilir. Değişmez Nesneler basit, güvenilir ve eşzamanlı uygulamaların oluşturulmasında kullanılır.
Nesneyi değişmez oluşturmak için, sınıfı ve üyesini sonlandırmak önemlidir, böylece nesneler oluşturulduktan sonra durumu değişmez.
28) Bana teslim olmak ve uyumak arasındaki farkı söyler misin?
Bir görev, verim() yöntemini çağırdığında hazır durumuna geri döner.
Bir görev, uyku() yöntemini çağırdığında bekleme durumuna geri döner.
29) ThreadPool nedir?
ThreadPool, belirli bir görevi yürütmek için sabit sayıda iş parçacığını yeniden kullanan bir iş parçacığı havuzudur.
30) Senkronize anahtar kelimenin kullanımı nedir?
Senkronize anahtar kelime, statik veya statik olmayan yönteme uygulanabilir. Senkronize kullanımı yalnızca bir iş parçacığı senkronize yöntemlere erişebilir. Ancak aynı yönteme erişmeye çalışan birden fazla iş parçacığının olduğu durumda. O zaman, diğer iş parçacıklarının yürütme iş parçacığını beklemesi gerekir. Ayrıca bir yarış durumunu önlemek için nesne üzerinde kilitlenme sağlar.
public void synchronized method1(){} public void synchronized staticmethod1(){} public void myMethod(){ synchronized (this){ //synchronized keyword on block of code } }
31) Uçucu anahtar kelime nedir?
Uçucu anahtar kelime, bir değişken bildirildiğinde ona uygulanan bir niteleyicidir. Derleyiciye, kod tarafından herhangi bir işlem yapılmadan değişkenin değerinin herhangi bir zamanda değişebileceğini bildirir.
32) Java'da notify ve notifyAll arasındaki temel farklar nelerdir?
Notify () yöntemi belirli bir iş parçacığını seçmek için herhangi bir yol sağlamaz; bu nedenle yalnızca tek bir While notifyAll() yöntemi tüm iş parçacıklarına bir bildirim gönderdiğinde kullanışlıdır. Aynı zamanda kilitler için rekabet etmelerine de olanak tanır. Ayrıca en az bir iş parçacığının daha da ilerlemesini sağlar.
33) Bir iş parçacığının yığın boyutunu kontrol etmek için hangi JVM parametresi kullanılır?
Java Xss parametresinde Thread'in yığın boyutunu kontrol etmek için kullanılır.
34) Java'da bir konuyu iki kez başlatabilir misiniz?
Hayır, bir konu bir kez başlatıldığında ikinci kez başlatılamaz.
35) Thread sınıfının verimi yöntemini kullanmanın amacı nedir?
Verim yöntemi, mevcut iş parçacığının CPU'yu bırakmasını ve diğer iş parçacığının da bunu yapmasını istemenin en basit yoludur. Bu statik bir yöntemdir ve yalnızca mevcut iş parçacığının CPU'dan vazgeçeceğini garanti eder ancak diğer hangi iş parçacığının da CPU'yu etkilediği hakkında hiçbir şey söylemez.
36) Java'da iş parçacıklarının hafif bir süreç olmadığını ne zaman söyleyebiliriz?
Aynı işlemin iş parçacıkları aynı anda yürütüldüğünde iş parçacıkları hafif bir işlem değildir. Bununla birlikte, farklı süreçlerin iş parçacıkları aynı anda yürütülüyorsa, iş parçacıkları ağır bir süreç haline gelir.
37) Bir Java Sınıfının yapıcısını senkronize etmek mümkün mü?
Java Standardı olarak, iş parçacığı oluşturma işlemi tamamlanmadan diğer iş parçacıkları nesneyi göremediği için yapıcılar senkronize edilemez. Oluşturulmakta olan nesneyi kilitleyeceği için Java Objects yapıcısının senkronize edilmesine gerek yoktur.
38) Geçici değişken nedir?
Geçici değişken, serileştirme sırasında serileştirilemeyen bir değişkendir. Serileştirme sırasında varsayılan değerine başlatılır.
Bu mülakat soruları aynı zamanda yaşamınızda da yardımcı olacaktır.
Merhaba ben
bana gerçekten yardımcı oluyor. röportaj hazırlığı sırasında.
Bu makaleyi yazmak ve bu bilgiyi sağlamak gerçekten övgüye değer.
Ben tavsiye ederim
5) İş parçacığı durumları nelerdir?
Çalıştırılabilir, Çalıştırılıyor durumu değildir. Çalıştırılmaya hazır
güncellenmiş! Bunu belirttiğiniz için teşekkürler
1.Çalıştırılabilir durumlar, işletim sistemi düzeyinde çift katmanlı olarak görüntülenir
2.Neredeyse tüm programlama dilleri iş parçacığını çalıştırılabilir veya çalıştırılamaz olarak görür.
3. Çalıştırılabilir bir iş parçacığı (hazır veya çalışıyor) durumda olabilir.
4. Çalıştırılabilir durumda iki iş parçacığınız olabilir, ancak "çalışıyor" durumunda yalnızca bir iş parçacığı mevcut olacaktır,
ikinci iş parçacığı ise “çalışıyor” durumundadır.