Java Koleksiyonları Mülakat Soruları ve Cevapları [Yeni Başlayanlar ve Deneyimliler İçin]
Yayınlanan: 2020-12-16Lisans derecenizde Java ile ilgilendiyseniz veya Java ile çalıştıysanız, Java Koleksiyonu çerçevesini iyi biliyor olmalısınız. Java yolculuğuna yeni başlayan yeni başlayanlar için, Koleksiyon çerçevesi, bir grup nesneyi (koleksiyonunu) depolamak ve işlemek için tasarlanmış birleşik bir mimaridir.
Esasen, bir "koleksiyon" tek bir nesne grubunu temsil eder. Bir Java Koleksiyonu, verileri depolamak ve işlemek için kullanıma hazır bir mimariye sahip arabirimler, sınıflar (ArrayList, Vector, Stack ve Hashtable, vb.) ve algoritmalar içerir.
Bu yazıda, en sık sorulan Java Koleksiyonları mülakat sorularına göz atacağız. Java profilleri için adaylarla görüşürken mülakatlarda sıkça sorulan temel soruların bir listesini oluşturduk. Bu, bir sonraki görüşmenizde ne tür sorular beklemeniz gerektiğini anlamanıza yardımcı olacaktır.
Java Koleksiyonları Mülakat Soruları ve Cevapları
1. Collections çerçevesini kullanmanın avantajı nedir?
Java Koleksiyonları, iş parçacığı güvenli işlemler için hem Generics hem de Concurrent koleksiyon sınıflarını içerir. Ayrıca, Java eşzamanlı paketlerindeki uygulamalarının yanı sıra engelleme arayüzleri ile donatılmış olarak gelir. Java Koleksiyonları çerçevesinin birkaç avantajı şunlardır:
Kodun yeniden kullanılabilirliğini ve birlikte çalışabilirliğini kolaylaştırır.

Çekirdek toplama sınıflarının kullanımı, geliştirme çabasını ve süresini önemli ölçüde azaltır.
JDK ile birlikte gönderilen koleksiyon sınıfları, kod bakımı için gereken çabaları azaltır.
2. Dizi ve Koleksiyon arasında ayrım yapın.
Dizi ve koleksiyon, nesneleri depolamak ve verileri işlemek için kullanılsa da, doğuştan gelen bazı farklılıkları vardır:
- Çalışma zamanı gereksinimlerinize göre bir dizinin uzunluğunu artıramaz veya azaltamazsınız - dizilerin boyutu sabittir. Ancak, bir koleksiyonun boyutunu ölçeklendirme ihtiyaçlarınıza göre değiştirebilirsiniz.
- Bir dizi yalnızca homojen (benzer veya aynı) nesneleri depolayabilirken, bir koleksiyon heterojen bir nesne grubunu depolayabilir.
- Diziler, kullanıcı gereksinimleri için kullanıma hazır yöntemler (arama, sıralama, ekleme vb.) sunmazken, koleksiyonlar her zaman kullanıma hazır yöntemler içerir.
3. Koleksiyonlar çerçevesinde Jeneriklerin rolü nedir?
Generics, bir koleksiyonun depolayabileceği nesnelerin türünü belirtmenize veya tanımlamanıza olanak tanır. Farklı türde bir öğe eklemeye çalışırsanız, Generics bir derleme zamanı hatası görüntüler. Böylece derleme sırasında bir hata göstererek çalışma zamanında ClassCastException'ın engellenmesine yardımcı olur. Ayrıca, Generics, döküm ve instanceof function kullanma ihtiyacını ortadan kaldırdığından, kodu temiz ve kesin hale getirir.
4. Collections çerçevesinin arayüzlerini adlandırın.
Koleksiyonlar çerçevesindeki beş temel arayüz şunlardır:
Koleksiyon arayüzü – Java Koleksiyon hiyerarşisinin temelidir. Java'daki çoğu koleksiyon, Koleksiyonlar arabiriminden devralınır.
Liste arabirimi – Sıralı öğeleri ve bunların kopyalarını içeren genişletilmiş bir dizidir. Bu arabirim, dizin tabanlı aramayı destekler. Böylece, dizininden herhangi bir öğeye erişebilirsiniz. ArrayList, LinkedList gibi farklı sınıflar kullanılarak uygulanır.
Set interface – Yinelenen öğeler içeremeyen bir koleksiyon sınıfıdır. Listeden farklı olarak, dizin tabanlı aramayı desteklemez ve öğeler için herhangi bir sıra tanımlamaz. Set modelleri matematiksel küme soyutlamasını sağlar ve HashSet, TreeSet, LinkedHashSet vb. sınıflar tarafından uygulanır.
Harita arayüzü – Verileri anahtar/değer çiftlerinde depolayan iki boyutlu bir veri yapısıdır. Anahtar benzersiz bir karma kod olsa da, değer öğeyi belirtir. Bir haritanın yinelenen anahtarları/öğeleri olamaz.
Kuyruk arabirimi – Bu arabirim, öğeyi İlk Giren İlk Çıkar (FIFO) yaklaşımında düzenler. Böylece, kuyruk arayüzündeki elemanlar önden kaldırılır ve arka uçtan eklenir.
Ayrıca Okuyun: Java Projeleri Nasıl Kodlanır, Derlenir ve Çalıştırılır
5. Java'da equals() yöntemini ne zaman geçersiz kılmalısınız?
equals() yönteminin ilk uygulaması iki nesnenin benzer olup olmadığını kontrol ederken, nesneleri özelliklerine göre karşılaştırmak istiyorsanız equals() yöntemini geçersiz kılmak gerekir.
6. Properties dosyasını kullanmak faydalı mı?
Evet, Java'da Properties dosyasını kullanmak büyük bir avantaj sağlar – bu dosyadaki değerleri değiştirirseniz, Java sınıfını yeniden derlemeye gerek kalmadan otomatik olarak yansıtılacaktır. Sonuç olarak, Özellikler dosyası esas olarak değişme olasılığı olan bilgileri (örneğin kullanıcı adı ve şifreleri) depolamak için kullanılır. Bir Java uygulamasının kolay yönetimine olanak tanır.
7. Koleksiyon çerçevesinde Yineleyicinin işlevi nedir?
Iterator, java.util paketinde gelen bir arayüzdür. Evrensel Java İmleci olarak da bilinen Yineleyici, bir nesne koleksiyonunu yinelemeye yardımcı olur. Yineleyici, bir nesne koleksiyonunu tek tek geçirmenize izin verir ve OKUMA ve KALDIRMA işlemlerini destekler. Yineleyici yöntem adları kolayca uygulanabildiğinden yaygın olarak kullanılır.
8. Koleksiyon nesnelerini nasıl sıralayabilirsiniz?
Koleksiyonlar çerçevesinde, sıralama genellikle Karşılaştırılabilir ve Karşılaştırıcı arabirimleri kullanılarak uygulanır. Collections.sort() yöntemini kullanırsanız, bu, öğeleri karşılaştırmaTo() yönteminde belirtilen doğal sıraya göre sıralayacaktır. Ancak Collections.sort(Comparator) yöntemini kullandığınızda, öğeleri Comparator arabiriminin karşılaştırma() yöntemine göre sıralayacaktır.
Okuyun: Java Swing Projesi

9. ArrayList'i Array'e ve Array'i ArrayList'e dönüştürmek mümkün müdür?
Evet, bunu yapmak mümkündür. Array sınıfının asList() işlevini kullanarak bir Array'i ArrayList'e dönüştürebilirsiniz. Bunun sözdizimi aşağıdaki gibidir:
Arrays.asList(öğe)
ArrayList sınıfının toArray() işlevini kullanarak bir ArrayList'i Array'e dönüştürebilirsiniz, örneğin:
List_object.toArray(yeni Dize[List_object.size()])
10. Bir Liste nasıl tersine çevrilir?
Bir ArrayList'i nasıl tersine çevireceksiniz?
Collections sınıfının reverse() işlevini kullanarak bir ArrayList'i tersine çevirebilirsiniz. Bunun sözdizimi aşağıdaki gibidir:
genel statik boşluk ters(Koleksiyon c)
11. “Engelleme Sırası” nedir?
BlockingQueue arabirimi, java.util.concurrent paketinde bulunur . Birincil amacı, bir iş parçacığı boş bir kuyruğu kaldırmak veya mevcut bir tam kuyruğu kuyruğa almak istediğinde engellemeyi etkinleştirerek akış kontrolünü geliştirmektir. BlockingQueue arabirimi boş değerleri kabul etmez ve boş bir değer girmeye çalışırsanız bir NullPointerException görüntüler.
12. "Öncelik Sırası"nı açıklayın.
Priority Queue, standart bir kuyruk veya yığın veri yapısı gibi soyut bir veri türüdür. Ancak bu kuyrukta her elemanın “öncelik” adı verilen benzersiz bir özelliği vardır. Öncelikli bir yığına dayalı olduğundan, Priority Queue, ekleme sıralarından bağımsız olarak yüksek öncelikli öğeye düşük öncelikli bir öğeden önce hizmet eder. Bir Öncelik Kuyruğunda, elemanlar ya doğal sıralamaya göre ya da kuyruk oluşturma zamanında kullanılan bir Karşılaştırıcı tarafından sıralanır (hangi oluşturucuyu kullandığınıza bağlıdır).
13. HashSet sınıfı öğeleri nasıl depolar?
HashSet sınıfı, AbstractSet sınıfını miras alan ve Set arabirimini uygulayan Java Collections çerçevesinin bir üyesidir.
HashSet, hem bir öğe koleksiyonu oluşturmak hem de depolamak için bir Hashtable uygular. Hashtable, bir HashSet içinde veri depolamak için bir hash mekanizması kullanan HashMap sınıfının bir örneğidir. Hashing, bilgiyi Hash Kodu olarak bilinen benzersiz bir değere dönüştürme tekniğini ifade eder. Hash Kodu, benzersiz anahtarla ilişkili verileri indeksler.
14. Bir TreeSet veya HashSet'e boş bir öğe eklemek mümkün müdür?
Bir HashSet'e yalnızca bir boş öğe ekleyebilseniz de, öğeleri depolamak için bir NavigableMap kullandığından TreeSet'te bunu yapamazsınız. NavigableMap, boş değerleri kabul etmeyen/desteklemeyen bir SortedMap alt türüdür. Bir TreeSet'e boş bir öğe eklerseniz, bu bir NullPointerException'ı tetikler.
15. emptySet() işlevi ne yapar?
Java'da Collections.emptySet(), tüm boş öğeleri ortadan kaldırarak boş değişmez kümeyi döndürmek için kullanılır. İşte bir emptySet() bildirmek için sözdizimi:
genel statik final <T> Küme<T> emptySet()
16. Harita arayüzü neden Koleksiyon Arayüzünü genişletmiyor?
Harita arabirimi bir anahtar-değer çifti yapısını takip ederken, Koleksiyon arabirimi, tanımlanmış bir erişim mekanizmasıyla yapılandırılmış bir şekilde bir nesneler koleksiyonunu depolar. Koleksiyon arabiriminin add(E e) işlevi, Harita'nın put(K tuşu, V değeri) işlevinin anahtar/değer çifti modelini desteklemediğinden Harita, Koleksiyon arabirimini genişletmez.
17. Harita arayüzü tarafından genişletilen farklı Koleksiyon görünümlerini adlandırın.
Harita arayüzü, anahtar/değer çiftlerinin üç görünümünü sunar, yani:
- Tuş takımı görünümü
- Değer seti görünümü
- Giriş seti görünümü
18. Java Hashmap'in temel özelliklerini listeleyin.
Hashmap'in temel özellikleri şunlardır:
- Anahtar/değer çiftleri oluşturarak öğeleri saklayabilir ve anahtarı doğru yönteme geçirerek değeri alabilirsiniz.
- Haritada hiçbir öğe yoksa NoSuchElementException öğesini görüntüler.
- Yalnızca nesne referanslarını saklayarak double veya int gibi ilkel veri türlerini kullanmayı imkansız hale getirir. Bunun yerine, Integer veya Double gibi bir sarmalayıcı sınıfı kullanabilirsiniz.
Mutlaka Okuyun: Java Mülakat Soruları ve Cevapları
19. “Yığın”ı tanımlayın.

Java'da bir Yığın, bir işlev tarafından oluşturulan geçici değişkenleri tutan bir bilgisayarın belleğinin belirlenmiş bir alanını belirtir. Değişkenler, çalışma zamanı sırasında bir Yığın içinde bildirilir, depolanır ve başlatılır.
20. “Big-O notasyonu”nu tanımlayın.
Big-O notasyonu, bir veri yapısındaki eleman sayısı ile ilgili olarak bir algoritmanın performansını tanımlar. Koleksiyon sınıfları veri yapılarıdır ve bu nedenle bellek, zaman ve performansa dayalı olarak hangi koleksiyon uygulamasının kullanılacağına karar vermek için Big-O gösterimini kullanmanız gerekir.
Dünyanın En İyi Üniversitelerinden Yazılım Mühendisliği Kurslarına Kaydolun . Kariyerinizi hızlandırmak için Yönetici PG Programları, Gelişmiş Sertifika Programları veya Yüksek Lisans Programları kazanın.
Çözüm
Java, tam yığın yazılım geliştirme hakkında daha fazla bilgi edinmek istiyorsanız, upGrad & IIIT-B'nin çalışan profesyoneller için tasarlanmış ve 500+ saatlik zorlu eğitim, 9+ projeler ve ödevler, IIIT-B Mezunları statüsü, pratik uygulamalı bitirme projeleri ve en iyi firmalarla iş yardımı.
