logo

34 pytania do wywiadu dotyczącego kolekcji Java

W Javie pytania do wywiadu zbiorowego są najczęściej zadawane przez ankieterów. Oto lista najczęściej zadawanych pytań podczas wywiadów dotyczących kolekcji wraz z odpowiedziami.


1) Co to jest framework Collection w Javie?

Collection Framework to połączenie klas i interfejsu, który służy do przechowywania i manipulowania danymi w postaci obiektów. Udostępnia różne klasy, takie jak ArrayList, Vector, Stack i HashSet itp. oraz interfejsy takie jak List, Queue, Set itp. W tym celu.


2) Jakie są główne różnice między tablicą a kolekcją?

Array i Collection są nieco podobne pod względem przechowywania odniesień do obiektów i manipulowania danymi, ale różnią się pod wieloma względami. Główne różnice między tablicą a kolekcją zdefiniowano poniżej:

  • Tablice mają zawsze stały rozmiar, tj. użytkownik nie może zwiększać ani zmniejszać długości tablicy zgodnie ze swoimi wymaganiami lub w czasie wykonywania, ale w kolekcji rozmiar można zmieniać dynamicznie w zależności od potrzeb.
  • Tablice mogą przechowywać tylko obiekty jednorodnego lub podobnego typu, ale w kolekcji można przechowywać obiekty heterogeniczne.
  • Tablice nie mogą zapewnić ?gotowego? metody spełniające wymagania użytkownika, takie jak sortowanie, wyszukiwanie itp., ale Kolekcja zawiera gotowe metody do użycia.

3) Wyjaśnij różne interfejsy używane w frameworku Collection?

Struktura kolekcji implementuje różne interfejsy. Interfejs kolekcji i interfejs mapy (java.util.Map) to głównie używane interfejsy Java Collection Framework. Lista interfejsów Collection Framework znajduje się poniżej:

1. Interfejs kolekcji: Kolekcja (java.util.Collection) to podstawowy interfejs i każda kolekcja musi implementować ten interfejs.

Składnia:

 public interface Collectionextends Iterable 

Gdzie oznacza, że ​​ten interfejs jest typu ogólnego

2. Interfejs listy: Interfejs listy stanowi rozszerzenie interfejsu Collection i jest uporządkowaną kolekcją obiektów. Zawiera zduplikowane elementy. Umożliwia także losowy dostęp do elementów.

Składnia:

 public interface List extends Collection 

3. Ustaw interfejs: Interfejs Set (java.util.Set) to kolekcja, która nie może zawierać zduplikowanych elementów. Może zawierać tylko odziedziczone metody interfejsu Collection

Składnia:

 public interface Set extends Collection 

Interfejs kolejki: Interfejs kolejki (java.util.Queue) definiuje strukturę danych kolejki, która przechowuje elementy w formie FIFO (pierwsze weszło, pierwsze wyszło).

Składnia:

 public interface Queue extends Collection 

4. Interfejs usuwania z kolejki: jest to kolejka z podwójnym zakończeniem. Umożliwia wkładanie i wyjmowanie elementów z obu końców. Implantuje właściwości zarówno stosu, jak i kolejki, dzięki czemu może wykonywać operacje LIFO (ostatnie weszło, pierwsze wyszło) na stosie i kolejce FIFO (pierwsze weszło, pierwsze wyszło).

Składnia:

 public interface Dequeue extends Queue 

5. Interfejs mapy: Mapa (java.util.Map) reprezentuje klucz i parę wartości do przechowywania elementów. Interfejs mapy nie implementuje interfejsu kolekcji. Może zawierać tylko unikalny klucz, ale może zawierać zduplikowane elementy. Istnieją dwa interfejsy implementujące mapę w Javie: interfejs mapy i mapa posortowana.

dla pętli basha

4) Jaka jest różnica między ArrayList a Vector?

NIE.Lista tablicWektor
1)ArrayList nie jest zsynchronizowany.Wektor jest zsynchronizowany.
2)ArrayList nie jest starszą klasą.Vector to starsza klasa.
3)ArrayList zwiększa swój rozmiar o 50% rozmiaru tablicy.Vector zwiększa swój rozmiar, podwajając rozmiar tablicy.
4)ArrayList nie jest „bezpieczny dla wątków”? ponieważ nie jest zsynchronizowany.Lista wektorów jest „bezpieczna dla wątków”? ponieważ każda metoda jest zsynchronizowana.

5) Jaka jest różnica między ArrayList i LinkedList?

NIE.Lista tablicPołączona lista
1)ArrayList używa tablicy dynamicznej.LinkedList używa listy podwójnie połączonej.
2)ArrayList nie jest skuteczny w manipulacji, ponieważ potrzeba zbyt wiele.LinkedList jest skuteczny w manipulacji.
3)ArrayList lepiej przechowuje i pobiera dane.LinkedList lepiej manipuluje danymi.
4)ArrayList zapewnia losowy dostęp.LinkedList nie zapewnia losowego dostępu.
5)ArrayList zajmuje mniej pamięci, ponieważ przechowuje tylko obiektLinkedList zajmuje więcej pamięci, ponieważ przechowuje obiekt oraz adres tego obiektu.

6) Jaka jest różnica między Iteratorem a ListIteratorem?

Iterator przechodzi przez elementy tylko w kierunku do przodu, podczas gdy ListIterator przechodzi przez elementy w kierunku do przodu i do tyłu.

NIE.IteratorListIterator
1)Iterator przechodzi przez elementy tylko w kierunku do przodu.ListIterator przechodzi przez elementy zarówno w kierunku do tyłu, jak i do przodu.
2)Iteratora można używać w listach, zestawach i kolejkach.ListIterator może być używany tylko na liście.
3)Iterator może wykonać operację usuwania tylko podczas przechodzenia przez kolekcję.ListIterator może wykonać ?add,? ?usunąć,? i nastaw? operacja podczas przeglądania kolekcji.

7) Jaka jest różnica między iteratorem a wyliczeniem?

NIE.IteratorWyliczenie
1)Iterator może przechodzić przez starsze i inne elementy.Wyliczenie może przechodzić tylko starsze elementy.
2)Iterator jest niezawodny.Wyliczenie nie jest niezawodne.
3)Iterator jest wolniejszy niż wyliczenie.Wyliczenie jest szybsze niż Iterator.
4)Iterator może wykonać operację usuwania podczas przechodzenia przez kolekcję.Wyliczenie może wykonywać tylko operację przechodzenia na kolekcji.

8) Jaka jest różnica między listą a zestawem?

Zarówno Lista, jak i Zestaw rozszerzają interfejs kolekcji. Istnieją jednak pewne różnice między obydwoma, które wymieniono poniżej.

  • Lista może zawierać zduplikowane elementy, natomiast Zestaw zawiera unikalne elementy.
  • Lista to uporządkowana kolekcja, która zachowuje kolejność wstawiania, natomiast Set to kolekcja nieuporządkowana, która nie zachowuje kolejności wstawiania.
  • Interfejs List zawiera pojedynczą starszą klasę, którą jest klasa Vector, podczas gdy interfejs Set nie ma żadnej starszej klasy.
  • Interfejs List może dopuszczać n wartości null, podczas gdy interfejs Set dopuszcza tylko jedną wartość null.

9) Jaka jest różnica między HashSet a TreeSet?

Obie klasy HashSet i TreeSet implementują interfejs Set. Poniżej wymieniono różnice między obydwoma.

  • HashSet nie utrzymuje porządku, podczas gdy TreeSet utrzymuje porządek rosnący.
  • HashSet wynika z tabeli mieszającej, natomiast TreeSet zaimplementowany przez strukturę drzewa.
  • HashSet działa szybciej niż TreeSet.
  • HashSet jest obsługiwany przez HashMap, podczas gdy TreeSet jest wspierany przez TreeMap.

10) Jaka jest różnica pomiędzy Setem a Mapą?

Poniżej podano różnice pomiędzy Zestawem i Mapą.

  • Zestaw zawiera tylko wartości, podczas gdy Mapa zawiera zarówno klucz, jak i wartości.
  • Zestaw zawiera unikalne wartości, podczas gdy Mapa może zawierać unikalne klucze ze zduplikowanymi wartościami.
  • Set przechowuje pojedynczą liczbę wartości null, podczas gdy Map może zawierać pojedynczy klucz null z n liczbą wartości null.

11) Jaka jest różnica między HashSet a HashMap?

Poniżej wymieniono różnice między HashSet i HashMap.

  • HashSet zawiera tylko wartości, podczas gdy HashMap zawiera wpis (klucz, wartość). HashSet można iterować, ale HashMap musi zostać przekonwertowany na Set, aby można było wykonać iterację.
  • HashSet implementuje interfejs Set, podczas gdy HashMap implementuje interfejs Map
  • HashSet nie może mieć żadnej zduplikowanej wartości, podczas gdy HashMap może zawierać zduplikowane wartości z unikalnymi kluczami.
  • HashSet zawiera tylko jedną liczbę wartości null, podczas gdy HashMap może przechowywać pojedynczy klucz zerowy z n liczbą wartości zerowych.

12) Jaka jest różnica między HashMap a TreeMap?

Poniżej podano różnice pomiędzy HashMap i TreeMap.

  • HashMap nie utrzymuje porządku, ale TreeMap utrzymuje porządek rosnący.
  • HashMap jest implementowany przez tablicę skrótów, podczas gdy TreeMap jest implementowany przez strukturę drzewa.
  • HashMap można sortować według klucza lub wartości, natomiast TreeMap można sortować według klucza.
  • HashMap może zawierać klucz zerowy z wieloma wartościami zerowymi, podczas gdy TreeMap nie może przechowywać klucza zerowego, ale może mieć wiele wartości zerowych.

13) Jaka jest różnica między HashMap a Hashtable?

NIE.HashMapaHashtable
1)HashMap nie jest zsynchronizowany.Hashtable jest zsynchronizowany.
2)HashMap może zawierać jeden klucz zerowy i wiele wartości zerowych.Hashtable nie może zawierać żadnego klucza zerowego ani wartości zerowej.
3)HashMap nie jest „bezpieczny dla wątków”? więc jest przydatny w aplikacjach bez wątków.Hashtable jest bezpieczny dla wątków i może być współużytkowany przez różne wątki.
4)4) HashMap dziedziczy klasę AbstractMapHashtable dziedziczy klasę Dictionary.

14) Jaka jest różnica między kolekcją a kolekcjami?

Poniżej podano różnice między Kolekcją a Kolekcjami.

  • Kolekcja jest interfejsem, natomiast Kolekcje są klasą.
  • Interfejs kolekcji zapewnia standardową funkcjonalność struktury danych w postaci listy, zestawu i kolejki. Jednak klasa Collections ma za zadanie sortować i synchronizować elementy kolekcji.
  • Interfejs Collection udostępnia metody, które można wykorzystać do struktury danych, natomiast klasa Collections udostępnia metody statyczne, których można używać do różnych operacji na kolekcji.

15) Jaka jest różnica między porównywalnym a porównywalnym?

NIE.PorównywalnyKomparator
1)Porównywalny zapewnia tylko jeden rodzaj sekwencji.Komparator udostępnia wiele rodzajów sekwencji.
2)Udostępnia jedną metodę o nazwie CompareTo().Udostępnia jedną metodę o nazwie Compare().
3)Znajduje się w pakiecie java.lang.Znajduje się w pakiecie java.util.
4)Jeśli zaimplementujemy interfejs Comparable, rzeczywista klasa zostanie zmodyfikowana.Rzeczywista klasa nie ulega zmianie.

16) Co rozumiesz przez BlockingQueue?

BlockingQueue jest interfejsem rozszerzającym interfejs Queue. Zapewnia współbieżność operacji takich jak pobieranie, wstawianie i usuwanie. Podczas pobierania dowolnego elementu czeka, aż kolejka nie będzie pusta. Składując elementy czeka na wolne miejsce. BlockingQueue nie może zawierać elementów null, a implementacja BlockingQueue jest bezpieczna dla wątków.

Składnia:

 public interface BlockingQueue extends Queue 

17) Jaka jest zaleta pliku Właściwości?

Jeśli zmienisz wartość w pliku właściwości, nie musisz ponownie kompilować klasy Java. Ułatwia to zarządzanie aplikacją. Służy do przechowywania informacji, które mają być często zmieniane. Rozważ następujący przykład.

 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')); } } 

Wyjście

 system oracle 

18) Do czego służy metoda hashCode()?

Metoda hashCode() zwraca wartość kodu skrótu (liczbę całkowitą).

Metoda hashCode() zwraca tę samą liczbę całkowitą, jeśli dwa klucze (poprzez wywołanie metody równości()) są identyczne.

Jednakże możliwe jest, że dwa numery kodu skrótu mogą mieć różne lub te same klucze.

Jeśli dwa obiekty nie dadzą takiego samego wyniku przy użyciu metody równości(), wówczas metoda hashcode() zwróci różne wyniki w postaci liczb całkowitych dla obu obiektów.


19) Dlaczego zastępujemy metodę równości()?

Metoda równości służy do sprawdzania, czy dwa obiekty są takie same, czy nie. Należy go zastąpić, jeśli chcemy sprawdzić obiekty na podstawie właściwości.

Na przykład Pracownik to klasa, która ma 3 elementy danych: identyfikator, imię i nazwisko oraz wynagrodzenie. Chcemy jednak sprawdzić zgodność przedmiotu pracownika z wynagrodzeniem. Następnie musimy zastąpić metodę równości().


20) Jak zsynchronizować elementy Listy, Zestawu i Mapy?

Tak, klasa Collections udostępnia metody umożliwiające synchronizację elementów Listy, Zestawu i Mapy:

public static Lista synchronizedList(Lista l){}
public static Set synchronizedSet(Set s){}
publiczny statyczny SortedSet synchronizedSortedSet(SortedSet s){}
publiczna statyczna mapa zsynchronizowanaMap(Mapa m){}
public static SortedMap synchronizedSortedMap(SortedMap m){}

21) Jaka jest zaleta kolekcji generycznej?

Istnieją trzy główne zalety korzystania z kolekcji ogólnej.

10 ml na uncje
  • Jeśli użyjemy klasy ogólnej, nie potrzebujemy rzutowania na typ.
  • Jest bezpieczny dla typu i sprawdzany w czasie kompilacji.
  • Generic potwierdza stabilność kodu, sprawiając, że błędy są wykrywalne w czasie kompilacji.

22) Co to jest kolizja hash w Hashtable i jak jest obsługiwana w Javie?

Dwa różne klucze o tej samej wartości skrótu nazywane są kolizją skrótu. Aby uniknąć kolizji, dwa oddzielne wpisy będą przechowywane w jednym wiadrze mieszania. Istnieją dwa sposoby uniknięcia kolizji skrótu.

  • Oddzielne łączenie
  • Otwórz adresowanie

23) Co to jest klasa Dictionary?

Klasa Dictionary umożliwia przechowywanie par klucz-wartość.


24) Jaki jest domyślny rozmiar współczynnika obciążenia w kolekcji opartej na mieszaniu?

Domyślny rozmiar współczynnika obciążenia to 0,75 . Domyślna pojemność jest obliczana jako pojemność początkowa * współczynnik obciążenia. Na przykład 16 * 0,75 = 12. Zatem 12 to domyślna pojemność mapy.


25) Co rozumiesz przez bezawaryjność?

Iterator w języku Java, który natychmiast zgłasza wyjątek ConcurrentmodificationException, jeśli wystąpi jakakolwiek modyfikacja strukturalna, nazywany jest iteratorem odpornym na awarie. Iterator Fail-Fats nie wymaga dodatkowej przestrzeni w pamięci.


26) Jaka jest różnica między Array i ArrayList?

Główne różnice pomiędzy Array i ArrayList podano poniżej.

SNSzykLista tablic
1Tablica ma stały rozmiar, co oznacza, że ​​nie możemy zmienić rozmiaru tablicy w zależności od potrzeb.ArrayList nie ma stałego rozmiaru, możemy dynamicznie zmieniać rozmiar.
2Tablice są typu statycznego.ArrayList ma dynamiczny rozmiar.
3Tablice mogą przechowywać prymitywne typy danych, a także obiekty.ArrayList nie może przechowywać prymitywnych typów danych, może przechowywać jedynie obiekty.

27) Jaka jest różnica między długością tablicy a rozmiarem ArrayList?

Długość tablicy można uzyskać za pomocą właściwości długości, podczas gdy ArrayList nie obsługuje właściwości długości, ale możemy użyć metody size() w celu uzyskania liczby obiektów na liście.

Znajdowanie długości tablicy

 Int [] array = new int[4]; System.out.println('The size of the array is ' + array.length); 

Znajdowanie rozmiaru tablicy ArrayList

 ArrayList list=new ArrayList(); list.add('ankit');�� list.add('nippun'); System.out.println(list.size()); 

28) Jak przekonwertować ArrayList na Array i Array na ArrayList?

Możemy przekonwertować Array na ArrayList za pomocą metody asList() klasy Arrays. Metoda asList() jest metodą statyczną klasy Arrays i akceptuje obiekt List. Rozważ następującą składnię:

 Arrays.asList(item) 

Możemy przekonwertować ArrayList na Array za pomocą metody toArray() klasy ArrayList. Rozważ następującą składnię, aby przekonwertować obiekt ArrayList na obiekt List.

 List_object.toArray(new�String[List_object.size()]) 

29) Jak ustawić Java ArrayList jako tylko do odczytu?

Możemy uzyskać java ArrayList tylko do odczytu, wywołując metodę Collections.unmodifyingCollection(). Kiedy zdefiniujemy ArrayList jako tylko do odczytu, nie możemy dokonać żadnych modyfikacji w kolekcji za pomocą metod „add(), usuń() lub set().


30) Jak usunąć duplikaty z ArrayList?

Istnieją dwa sposoby usuwania duplikatów z listy ArrayList.

    Korzystanie z zestawu HashSet:Używając HashSet, możemy usunąć zduplikowany element z ArrayList, ale nie zachowa to kolejności wstawiania.Korzystanie z LinkedHashSet:Możemy również zachować kolejność wstawiania, używając LinkedHashSet zamiast HashSet.

Proces usuwania zduplikowanych elementów z ArrayList przy użyciu LinkedHashSet:

  • Skopiuj wszystkie elementy ArrayList do LinkedHashSet.
  • Opróżnij ArrayList za pomocą metody clear(), która usunie wszystkie elementy z listy.
  • Teraz skopiuj wszystkie elementy LinkedHashset do ArrayList.

31) Jak odwrócić ArrayList?

Aby odwrócić ArrayList, możemy użyć metody Reverse() klasy Collections. Rozważ następujący przykład.

 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()); } } } 

Wyjście

 printing the list.... 10 50 30 printing list in reverse order.... 30 50 10 

32) Jak posortować ArrayList w kolejności malejącej?

Aby posortować ArrayList w kolejności malejącej, możemy użyć metody ReverseOrder klasy Collections. Rozważ następujący przykład.

 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()); } } } 

Wyjście

tablica ciągów c programowanie
 printing the list.... 10 50 30 60 20 90 printing list in descending order.... 90 60 50 30 20 10 

33) Jak zsynchronizować ArrayList?

Możemy synchronizować ArrayList na dwa sposoby.

  • Korzystanie z metody Collections.synchronizedList().
  • Korzystanie z CopyOnWriteArrayList

3. 4) Kiedy używać ArrayList i LinkedList?

LinkedLists lepiej jest używać do operacji aktualizacji, podczas gdy ArrayLists lepiej jest używać do operacji wyszukiwania.