Java'da koleksiyon röportajı soruları en çok görüşmeyi yapanlar tarafından sorulur. İşte cevaplarıyla birlikte en çok sorulan koleksiyon röportajı sorularının listesi.
1) Java'daki Koleksiyon çerçevesi nedir?
Koleksiyon Çerçevesi, verileri nesneler biçiminde depolamak ve değiştirmek için kullanılan sınıfların ve arayüzün birleşimidir. Bu amaçla ArrayList, Vector, Stack, HashSet vb. çeşitli sınıflar ve List, Queue, Set vb. arayüzler sağlar.
2) Dizi ve koleksiyon arasındaki temel farklar nelerdir?
Dizi ve Koleksiyon, nesnelerin referanslarının saklanması ve verilerin işlenmesi açısından biraz benzerdir, ancak birçok yönden farklılık gösterirler. Dizi ve Koleksiyon arasındaki temel farklar aşağıda tanımlanmıştır:
- Diziler her zaman sabit boyuttadır; yani kullanıcı, dizinin uzunluğunu gereksinimlerine göre veya çalışma zamanında artıramaz veya azaltamaz, ancak Koleksiyonda boyut ihtiyaca göre dinamik olarak değiştirilebilir.
- Diziler yalnızca homojen veya benzer türdeki nesneleri depolayabilir, ancak Koleksiyonda heterojen nesneler depolanabilir.
- Diziler ?hazır? sıralama, arama vb. gibi kullanıcı gereksinimlerine yönelik yöntemler içerir ancak Koleksiyon, kullanıma hazır yöntemleri içerir.
3) Koleksiyon çerçevesinde kullanılan çeşitli arayüzleri açıklayın?
Koleksiyon çerçevesi çeşitli arayüzleri uygular; Koleksiyon arayüzü ve Harita arayüzü (java.util.Map), Java Koleksiyon Çerçevesinin temel olarak kullanılan arayüzleridir. Collection Framework arayüzlerinin listesi aşağıda verilmiştir:
1. Koleksiyon arayüzü: Koleksiyon (java.util.Collection) birincil arayüzdür ve her koleksiyonun bu arayüzü uygulaması gerekir.
Sözdizimi:
public interface Collectionextends Iterable
Bu arayüzün Genel tipte olduğunu temsil eden yer
2. Liste arayüzü: Liste arayüzü Koleksiyon arayüzünü genişletir ve sıralı bir nesne koleksiyonudur. Yinelenen öğeler içerir. Ayrıca öğelere rastgele erişime de izin verir.
Sözdizimi:
public interface List extends Collection
3. Arayüzü ayarlayın: Set (Java.util.Set) arayüzü yinelenen öğeler içeremeyen bir koleksiyondur. Yalnızca Koleksiyon arayüzünün devralınan yöntemlerini içerebilir
Sözdizimi:
public interface Set extends Collection
Kuyruk arayüzü: Kuyruk (java.util.Queue) arayüzü, elemanları FIFO (ilk giren ilk çıkar) biçiminde saklayan kuyruk veri yapısını tanımlar.
Sözdizimi:
public interface Queue extends Collection
4. Sıradan çıkarma arayüzü: bu çift uçlu bir kuyruktur. Her iki uçtan elemanların takılmasına ve çıkarılmasına olanak sağlar. Hem Yığın hem de kuyruğun özelliklerini yerleştirir, böylece LIFO (Son giren ilk çıkar) yığını ve FIFO (ilk giren ilk çıkar) kuyruk işlemlerini gerçekleştirebilir.
Sözdizimi:
public interface Dequeue extends Queue
5. Harita arayüzü: Bir Harita (java.util.Map), öğelerin anahtar, değer çifti deposunu temsil eder. Harita arayüzü Koleksiyon arayüzünü uygulamaz. Yalnızca benzersiz bir anahtar içerebilir ancak yinelenen öğelere sahip olabilir. Java'da Haritayı uygulayan, Harita arayüzü ve Sıralı Harita olmak üzere iki arayüz vardır.
Java'yı dilimleme
4) ArrayList ve Vector arasındaki fark nedir?
HAYIR. | Dizi Listesi | Vektör |
---|---|---|
1) | ArrayList senkronize edilmedi. | Vektör senkronize edilir. |
2) | ArrayList eski bir sınıf değil. | Vector eski bir sınıftır. |
3) | ArrayList, boyutunu dizi boyutunun %50'si kadar artırır. | Vektör, dizi boyutunu iki katına çıkararak boyutunu artırır. |
4) | ArrayList iş parçacığı açısından güvenli değil mi? çünkü senkronize değil. | Vektör listesi ?iş parçacığı açısından güvenli mi? her yöntem senkronize olduğundan. |
5) ArrayList ile LinkedList arasındaki fark nedir?
HAYIR. | Dizi Listesi | Bağlantılı liste |
---|---|---|
1) | ArrayList dinamik bir dizi kullanır. | LinkedList çift bağlantılı bir liste kullanır. |
2) | ArrayList çok fazla şey gerektirdiğinden manipülasyon için verimli değildir. | LinkedList manipülasyon için etkilidir. |
3) | ArrayList, verileri depolamak ve getirmek için daha iyidir. | LinkedList verileri işlemek için daha iyidir. |
4) | ArrayList rastgele erişim sağlar. | LinkedList rastgele erişim sağlamaz. |
5) | ArrayList yalnızca nesneyi sakladığından daha az bellek yükü alır | LinkedList, nesneyi ve o nesnenin adresini sakladığından daha fazla bellek yükü alır. |
6) Iterator ve ListIterator arasındaki fark nedir?
Iterator, elemanları yalnızca ileri yönde hareket ettirirken ListIterator, elemanları ileri ve geri yönde hareket ettirir.
HAYIR. | Yineleyici | ListeYineleyici |
---|---|---|
1) | Yineleyici, elemanları yalnızca ileri yönde hareket ettirir. | ListIterator, elemanları hem ileri hem de geri yönde hareket ettirir. |
2) | Yineleyici Liste, Ayarla ve Kuyrukta kullanılabilir. | ListIterator yalnızca Listede kullanılabilir. |
3) | Yineleyici, yalnızca koleksiyonda dolaşırken kaldırma işlemini gerçekleştirebilir. | ListIterator ?add,? işlemini gerçekleştirebilir. ?kaldırmak,? ve ?ayarla? Koleksiyonda dolaşırken işlem. |
7) Yineleyici ve Numaralandırma arasındaki fark nedir?
HAYIR. | Yineleyici | Numaralandırma |
---|---|---|
1) | Yineleyici, eski ve eski olmayan öğeler arasında geçiş yapabilir. | Numaralandırma yalnızca eski öğeler arasında geçiş yapabilir. |
2) | Yineleyici hızlıdır. | Numaralandırma hızlı değildir. |
3) | Yineleyici, Numaralandırmadan daha yavaştır. | Numaralandırma Iterator'dan daha hızlıdır. |
4) | Yineleyici, koleksiyonda dolaşırken kaldırma işlemini gerçekleştirebilir. | Numaralandırma, koleksiyon üzerinde yalnızca çapraz işlem gerçekleştirebilir. |
8) Liste ve Set arasındaki fark nedir?
Liste ve Set'in her ikisi de koleksiyon arayüzünü genişletir. Ancak her ikisi arasında aşağıda listelenen bazı farklılıklar vardır.
- Liste yinelenen öğeler içerebilirken Set benzersiz öğeler içerir.
- Liste, ekleme sırasını koruyan sıralı bir koleksiyondur, Set ise ekleme sırasını korumayan sırasız bir koleksiyondur.
- Liste arayüzü, Vector sınıfı olan tek bir eski sınıf içerirken Set arayüzünde herhangi bir eski sınıf yoktur.
- Liste arayüzü n sayıda boş değere izin verebilirken Set arayüzü yalnızca tek bir boş değere izin verir.
9) HashSet ve TreeSet arasındaki fark nedir?
Her iki sınıf olan HashSet ve TreeSet, Set arayüzünü uygular. Her ikisi arasındaki farklar aşağıda listelenmiştir.
- HashSet 'sırayı' korumazken TreeSet artan sırayı korur.
- HashSet karma tablosu tarafından uygulanırken TreeSet bir Ağaç yapısı tarafından uygulanır.
- HashSet, TreeSet'ten daha hızlı performans gösterir.
- HashSet, HashMap tarafından desteklenirken TreeSet, TreeMap tarafından desteklenir.
10) Küme ve Harita arasındaki fark nedir?
Set ve Harita arasındaki farklar aşağıda verilmiştir.
- Set yalnızca değerleri içerirken Harita hem anahtarı hem de değerleri içerir.
- Set benzersiz değerler içerirken Harita, yinelenen değerlere sahip benzersiz Anahtarlar içerebilir.
- Set tek sayıda boş değer tutarken Harita n sayıda boş değere sahip tek bir boş anahtar içerebilir.
11) HashSet ve HashMap arasındaki fark nedir?
HashSet ve HashMap arasındaki farklar aşağıda listelenmiştir.
- HashSet yalnızca değerleri içerirken HashMap girişi (anahtar, değer) içerir. HashSet yinelenebilir, ancak HashMap'in yinelenmesi için Set'e dönüştürülmesi gerekir.
- HashSet Set arayüzünü uygularken HashMap Harita arayüzünü uygular
- HashSet herhangi bir yinelenen değere sahip olamazken, HashMap benzersiz anahtarlara sahip yinelenen değerler içerebilir.
- HashSet yalnızca tek sayıda boş değer içerirken HashMap, n sayıda boş değere sahip tek bir boş anahtar tutabilir.
12) HashMap ve TreeMap arasındaki fark nedir?
HashMap ve TreeMap arasındaki farklar aşağıda verilmiştir.
- HashMap herhangi bir sırayı korumaz, ancak TreeMap artan sırayı korur.
- HashMap karma tablosu tarafından uygulanırken TreeMap bir Ağaç yapısı tarafından uygulanır.
- HashMap Anahtar veya değere göre sıralanabilirken TreeMap Anahtara göre sıralanabilir.
- HashMap birden fazla boş değere sahip bir boş anahtar içerebilirken TreeMap bir boş anahtar tutamaz ancak birden fazla boş değere sahip olabilir.
13) HashMap ve Hashtable arasındaki fark nedir?
HAYIR. | Hash Haritası | Karma tablo |
---|---|---|
1) | HashMap senkronize değil. | Hashtable senkronize edildi. |
2) | HashMap bir boş anahtar ve birden çok boş değer içerebilir. | Hashtable herhangi bir boş anahtar veya boş değer içeremez. |
3) | HashMap iş parçacığı açısından güvenli değil mi? bu nedenle iş parçacıklı olmayan uygulamalar için kullanışlıdır. | Hashtable iş parçacığı açısından güvenlidir ve çeşitli iş parçacıkları arasında paylaşılabilir. |
4) | 4) HashMap, AbstractMap sınıfını miras alır | Hashtable, Dictionary sınıfını miras alır. |
14) Koleksiyon ve Koleksiyonlar arasındaki fark nedir?
Koleksiyon ve Koleksiyonlar arasındaki farklar aşağıda verilmiştir.
- Koleksiyon bir arayüzdür, Koleksiyonlar ise bir sınıftır.
- Koleksiyon arayüzü, Liste, Ayarla ve Kuyruğa veri yapısının standart işlevselliğini sağlar. Ancak Collections sınıfı, koleksiyon öğelerini sıralamak ve senkronize etmek içindir.
- Koleksiyon arayüzü veri yapısı için kullanılabilecek yöntemleri sağlarken Koleksiyonlar sınıfı, bir koleksiyon üzerinde çeşitli işlemler için kullanılabilecek statik yöntemleri sağlar.
15) Karşılaştırılabilir ve Karşılaştırıcı arasındaki fark nedir?
HAYIR. | Karşılaştırılabilir | Karşılaştırıcı |
---|---|---|
1) | Karşılaştırılabilir yalnızca tek bir dizi dizisi sağlar. | Karşılaştırıcı birden fazla dizi türü sağlar. |
2) | CompareTo() adında bir yöntem sağlar. | Compare() adında bir yöntem sağlar. |
3) | Java.lang paketinde bulunur. | Java.util paketinde bulunur. |
4) | Karşılaştırılabilir arayüzü uygularsak, gerçek sınıf değiştirilir. | Gerçek sınıf değişmedi. |
16) BlockingQueue'dan ne anlıyorsunuz?
BlockingQueue, Queue arayüzünü genişleten bir arayüzdür. Alma, ekleme, silme gibi işlemlerde eş zamanlılık sağlar. Herhangi bir elemanın alımı sırasında kuyruğun boş olmamasını bekler. Elemanları saklarken kullanılabilir alanı bekler. BlockingQueue boş öğeler içeremez ve BlockingQueue uygulaması iş parçacığı açısından güvenlidir.
Sözdizimi:
public interface BlockingQueue extends Queue
17) Properties dosyasının avantajı nedir?
Özellikler dosyasındaki değeri değiştirirseniz Java sınıfını yeniden derlemeniz gerekmez. Yani uygulamanın yönetimini kolaylaştırır. Sık sık değiştirilmesi gereken bilgilerin saklanması için kullanılır. Aşağıdaki örneği düşünün.
import java.util.*; import java.io.*; public class Test { public static void main(String[] args)throws Exception{ FileReader reader=new FileReader('db.properties'); Properties p=new Properties(); p.load(reader); System.out.println(p.getProperty('user')); System.out.println(p.getProperty('password')); } }
Çıktı
system oracle
18) hashCode() yöntemi ne işe yarar?
hashCode() yöntemi bir karma kod değeri (bir tam sayı) döndürür.
HashCode() yöntemi, iki anahtarın aynı olması durumunda ( equals() yöntemini çağırarak) aynı tam sayıyı döndürür.
Ancak iki karma kod numarasının farklı veya aynı anahtarlara sahip olması mümkündür.
Equals() yöntemini kullanarak iki nesne eşit bir sonuç üretmezse, hashcode() yöntemi her iki nesne için de farklı tamsayı sonucunu sağlayacaktır.
Ssis eğitimi
19) Neden equals() yöntemini geçersiz kılıyoruz?
Eşittir yöntemi, iki nesnenin aynı olup olmadığını kontrol etmek için kullanılır. Nesneleri özelliğe göre kontrol etmek istiyorsak geçersiz kılınması gerekir.
Örneğin, Çalışan 3 veri üyesine sahip bir sınıftır: kimlik, ad ve maaş. Ancak biz çalışanın nesnesinin maaşla eşitliğini kontrol etmek istiyoruz. Daha sonra equals() yöntemini geçersiz kılmamız gerekir.
20) Liste, Set ve Harita elemanları nasıl senkronize edilir?
Evet, Collections sınıfı Liste, Set veya Harita öğelerini senkronize hale getirmek için yöntemler sağlar:
genel statik Liste synchronizedList(Liste l){} |
public static Set synchronizedSet(Set s){} |
public static SortedSet synchronizedSortedSet(SortedSet s){} |
genel statik Harita synchronizedMap(Harita m){} |
genel statik SortedMap synchronizedSortedMap(SortedMap m){} |
21) Jenerik koleksiyonun avantajı nedir?
Genel koleksiyonu kullanmanın üç ana avantajı vardır.
- Eğer jenerik sınıfı kullanırsak tiplemeye ihtiyacımız olmaz.
- Tür açısından güvenlidir ve derleme zamanında kontrol edilir.
- Generic, derleme zamanında hata tespit edilebilir hale getirerek kodun kararlılığını doğrular.
22) Hashtable'da karma çarpışma nedir ve Java'da nasıl ele alınır?
Aynı hash değerine sahip iki farklı anahtar, karma çarpışma olarak bilinir. Çarpışmayı önlemek için iki ayrı giriş tek bir karma kovada tutulacak. Karma çarpışmasını önlemenin iki yolu vardır.
- Ayrı Zincirleme
- Açık Adresleme
23) Dictionary sınıfı nedir?
Dictionary sınıfı, anahtar/değer çiftlerini saklama yeteneği sağlar.
24) Karma tabanlı koleksiyonda yük faktörünün varsayılan boyutu nedir?
Yük faktörünün varsayılan boyutu: 0,75 . Varsayılan kapasite, başlangıç kapasitesi * yük faktörü olarak hesaplanır. Örneğin, 16 * 0,75 = 12. Yani 12, Haritanın varsayılan kapasitesidir.
25) Orucu bozmaktan ne anlıyorsunuz?
Herhangi bir yapısal değişiklik meydana gelirse, anında ConcurrentmodificationException'ı atan Java'daki Yineleyici, Arıza hızlı yineleyici olarak adlandırılır. Arızalı yağ yineleyicisi bellekte herhangi bir ekstra alana ihtiyaç duymaz.
26) Array ve ArrayList arasındaki fark nedir?
Array ve ArrayList arasındaki temel farklar aşağıda verilmiştir.
java ile başlar
SN | Sıralamak | Dizi Listesi |
---|---|---|
1 | Dizi sabit boyuttadır, yani diziyi ihtiyaca göre yeniden boyutlandıramayız. | ArrayList sabit boyutta değil, boyutu dinamik olarak değiştirebiliyoruz. |
2 | Diziler statik tiptedir. | ArrayList dinamik boyuttadır. |
3 | Diziler, nesnelerin yanı sıra ilkel veri türlerini de depolayabilir. | ArrayList ilkel veri türlerini depolayamaz, yalnızca nesneleri depolayabilir. |
27) Array'in uzunluğu ile ArrayList'in boyutu arasındaki fark nedir?
Bir dizinin uzunluğu, uzunluk özelliği kullanılarak elde edilebilirken ArrayList, uzunluk özelliğini desteklemez ancak listedeki nesnelerin sayısını almak için size() yöntemini kullanabiliriz.
Dizinin uzunluğunu bulma
Int [] array = new int[4]; System.out.println('The size of the array is ' + array.length);
ArrayList'in boyutunu bulma
ArrayList list=new ArrayList(); list.add('ankit');�� list.add('nippun'); System.out.println(list.size());
28) ArrayList'i Array'e ve Array'i ArrayList'e nasıl dönüştürebilirim?
Arrays sınıfının asList() yöntemini kullanarak bir Array'i ArrayList'e dönüştürebiliriz. asList() yöntemi Arrays sınıfının statik yöntemidir ve List nesnesini kabul eder. Aşağıdaki sözdizimini göz önünde bulundurun:
Arrays.asList(item)
ArrayList sınıfının toArray() yöntemini kullanarak bir ArrayList'i Array'e dönüştürebiliriz. ArrayList'i List nesnesine dönüştürmek için aşağıdaki sözdizimini göz önünde bulundurun.
List_object.toArray(new�String[List_object.size()])
29) Java ArrayList Salt Okunur nasıl yapılır?
Collections.unmodifiableCollection() yöntemini çağırarak Java ArrayList Salt Okunur'u elde edebiliriz. ArrayList'i Salt Okunur olarak tanımladığımızda, koleksiyonda add(), Remove() veya set() yöntemiyle herhangi bir değişiklik yapamayız.
30) ArrayList'teki kopyalar nasıl kaldırılır?
ArrayList'teki kopyaları kaldırmanın iki yolu vardır.
LinkedHashSet'i kullanarak ArrayList'ten yinelenen öğeleri kaldırma işlemi:
- ArrayList'in tüm öğelerini LinkedHashSet'e kopyalayın.
- Listedeki tüm öğeleri kaldıracak olan clear() yöntemini kullanarak ArrayList'i boşaltın.
- Şimdi LinkedHashset'in tüm öğelerini ArrayList'e kopyalayın.
31) ArrayList nasıl tersine çevrilir?
ArrayList'i tersine çevirmek için Collections sınıfının revers() yöntemini kullanabiliriz. Aşağıdaki örneği düşünün.
import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; public class ReverseArrayList { public static void main(String[] args) { List list = new ArrayList(); list.add(10); list.add(50); list.add(30); Iterator i = list.iterator(); System.out.println('printing the list....'); while(i.hasNext()) { System.out.println(i.next()); } Iterator i2 = list.iterator(); Collections.reverse(list); System.out.println('printing list in reverse order....'); while(i2.hasNext()) { System.out.println(i2.next()); } } }
Çıktı
printing the list.... 10 50 30 printing list in reverse order.... 30 50 10
32) ArrayList'i azalan düzende nasıl sıralayabilirim?
ArrayList'i azalan düzende sıralamak için Collections sınıfının tersOrder yöntemini kullanabiliriz. Aşağıdaki örneği düşünün.
import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; public class ReverseArrayList { public static void main(String[] args) { List list = new ArrayList(); list.add(10); list.add(50); list.add(30); list.add(60); list.add(20); list.add(90); Iterator i = list.iterator(); System.out.println('printing the list....'); while(i.hasNext()) { System.out.println(i.next()); } Comparator cmp = Collections.reverseOrder(); Collections.sort(list,cmp); System.out.println('printing list in descending order....'); Iterator i2 = list.iterator(); while(i2.hasNext()) { System.out.println(i2.next()); } } }
Çıktı
printing the list.... 10 50 30 60 20 90 printing list in descending order.... 90 60 50 30 20 10
33) ArrayList nasıl senkronize edilir?
ArrayList'i iki şekilde senkronize edebiliriz.
- Collections.synchronizedList() yöntemini kullanma
- CopyOnWriteArrayList'i kullanma
3.4) ArrayList ve LinkedList ne zaman kullanılır?
LinkedLists'in güncelleme işlemleri için kullanılması daha iyidir, ArrayList'lerin ise arama işlemleri için kullanılması daha iyidir.