logo

34 Питання для співбесіди про колекції Java

У Java інтерв’юери найчастіше задають запитання для співбесіди з колекцією. Ось список найпоширеніших питань для інтерв’ю з колекціями з відповідями.


1) Що таке структура колекції в Java?

Framework колекції — це комбінація класів та інтерфейсу, яка використовується для зберігання та маніпулювання даними у формі об’єктів. Він надає різні класи, такі як ArrayList, Vector, Stack і HashSet тощо, а також такі інтерфейси, як List, Queue, Set тощо для цієї мети.


2) Які основні відмінності між масивом і колекцією?

Масив і колекція дещо схожі щодо зберігання посилань на об’єкти та маніпулювання даними, але вони багато в чому відрізняються. Нижче наведено основні відмінності між масивом і колекцією:

  • Масиви завжди мають фіксований розмір, тобто користувач не може збільшувати або зменшувати довжину масиву відповідно до своїх вимог або під час виконання, але в колекції розмір можна змінювати динамічно відповідно до потреби.
  • Масиви можуть зберігати лише однорідні об’єкти або об’єкти схожого типу, але в колекції можна зберігати різнорідні об’єкти.
  • Масиви не можуть забезпечити ?готовий? методи для вимог користувача, як-от сортування, пошук тощо, але колекція включає готові методи для використання.

3) Поясніть різні інтерфейси, які використовуються в рамках колекції?

Framework колекції реалізує різні інтерфейси, інтерфейс колекції та інтерфейс карти (java.util.Map) є основними використовуваними інтерфейсами Java Collection Framework. Список інтерфейсів Collection Framework наведено нижче:

1. Інтерфейс колекції: Колекція (java.util.Collection) є основним інтерфейсом, і кожна колекція повинна реалізовувати цей інтерфейс.

Синтаксис:

 public interface Collectionextends Iterable 

Де означає, що цей інтерфейс має загальний тип

2. Інтерфейс списку: Інтерфейс списку розширює інтерфейс колекції, і це впорядкована колекція об’єктів. Він містить повторювані елементи. Це також дозволяє довільний доступ до елементів.

Синтаксис:

 public interface List extends Collection 

3. Встановити інтерфейс: Інтерфейс Set (java.util.Set) — це колекція, яка не може містити повторюваних елементів. Він може включати лише успадковані методи інтерфейсу колекції

Синтаксис:

 public interface Set extends Collection 

Інтерфейс черги: Інтерфейс черги (java.util.Queue) визначає структуру даних черги, яка зберігає елементи у формі FIFO (першим прийшов, першим вийшов).

Синтаксис:

 public interface Queue extends Collection 

4. Інтерфейс видалення з черги: це двостороння черга. Це дозволяє вставляти та видаляти елементи з обох кінців. Він імплантує властивості як стека, так і черги, щоб він міг виконувати операції стека LIFO (останній прийшов, перший вийшов) і FIFO (перший прийшов, перший вийшов) у черзі.

Синтаксис:

 public interface Dequeue extends Queue 

5. Інтерфейс карти: Карта (java.util.Map) представляє сховище елементів пари ключів і значень. Інтерфейс карти не підтримує інтерфейс колекції. Він може містити лише унікальний ключ, але може мати повторювані елементи. Є два інтерфейси, які реалізують Map у java: інтерфейс Map і Sorted Map.

скільки міст в США

4) Яка різниця між ArrayList і Vector?

Немає.ArrayListВектор
1)ArrayList не синхронізовано.Вектор синхронізований.
2)ArrayList не є застарілим класом.Vector є застарілим класом.
3)ArrayList збільшує свій розмір на 50% від розміру масиву.Vector збільшує свій розмір, подвоюючи розмір масиву.
4)ArrayList не є потокобезпечним? оскільки він не синхронізований.Векторний список ?потоково-безпечний? оскільки кожен метод синхронізовано.

5) Яка різниця між ArrayList і LinkedList?

Немає.ArrayListLinkedList
1)ArrayList використовує динамічний масив.LinkedList використовує подвійний зв’язаний список.
2)ArrayList неефективний для маніпулювання, оскільки потрібно занадто багато.LinkedList ефективний для маніпуляцій.
3)ArrayList краще зберігати та отримувати дані.LinkedList краще маніпулювати даними.
4)ArrayList забезпечує довільний доступ.LinkedList не надає довільного доступу.
5)ArrayList потребує менше витрат пам’яті, оскільки зберігає лише об’єктLinkedList займає більше пам’яті, оскільки зберігає об’єкт, а також адресу цього об’єкта.

6) Яка різниця між Iterator і ListIterator?

Ітератор обходить елементи лише в прямому напрямку, тоді як ListIterator обходить елементи в прямому та зворотному напрямку.

Немає.ІтераторListIterator
1)Ітератор обходить елементи лише в прямому напрямку.ListIterator перетинає елементи як у зворотному, так і в прямому напрямках.
2)Ітератор можна використовувати в списку, наборі та черзі.ListIterator можна використовувати лише в List.
3)Ітератор може виконувати операцію видалення лише під час обходу колекції.ListIterator може виконувати ?add,? ?видалити,? і ?набір? операція під час обходу колекції.

7) Яка різниця між ітератором і перерахуванням?

Немає.ІтераторПерерахування
1)Ітератор може проходити застарілі та не застарілі елементи.Перерахування може проходити лише застарілі елементи.
2)Ітератор є безвідмовним.Перерахування не є безвідмовним.
3)Ітератор працює повільніше, ніж перерахування.Перерахування швидше, ніж Ітератор.
4)Ітератор може виконувати операцію видалення під час обходу колекції.Перерахування може виконувати лише операцію обходу колекції.

8) Яка різниця між List і Set?

Список і набір розширюють інтерфейс колекції. Однак між ними є деякі відмінності, які наведено нижче.

  • Список може містити повторювані елементи, тоді як Set включає унікальні елементи.
  • Список — це впорядкована колекція, яка підтримує порядок вставки, тоді як Set — невпорядкована колекція, яка не зберігає порядок вставки.
  • Інтерфейс List містить єдиний застарілий клас, який є класом Vector, тоді як інтерфейс Set не має жодного застарілого класу.
  • Інтерфейс List може дозволити n кількість нульових значень, тоді як інтерфейс Set дозволяє лише одне нульове значення.

9) Яка різниця між HashSet і TreeSet?

HashSet і TreeSet, обидва класи, реалізують інтерфейс Set. Нижче наведено відмінності між ними.

  • HashSet не підтримує порядок, тоді як TreeSet підтримує порядок за зростанням.
  • HashSet перешкоджає хеш-таблиці, тоді як TreeSet реалізується структурою дерева.
  • HashSet працює швидше, ніж TreeSet.
  • HashSet підтримується HashMap, тоді як TreeSet підтримується TreeMap.

10) Яка різниця між Set і Map?

Відмінності між Set і Map наведені нижче.

  • Набір містить лише значення, тоді як Карта містить і ключ, і значення.
  • Набір містить унікальні значення, тоді як Карта може містити унікальні ключі з повторюваними значеннями.
  • Набір містить одну кількість нульових значень, тоді як Карта може містити один нульовий ключ із n кількістю нульових значень.

11) Яка різниця між HashSet і HashMap?

Відмінності між HashSet і HashMap перераховані нижче.

  • HashSet містить лише значення, тоді як HashMap містить запис (ключ, значення). HashSet можна ітерувати, але HashMap потрібно перетворити на Set, щоб ітерувати.
  • HashSet реалізує інтерфейс Set, тоді як HashMap реалізує інтерфейс Map
  • HashSet не може мати повторюваних значень, тоді як HashMap може містити повторювані значення з унікальними ключами.
  • HashSet містить єдине число нульових значень, тоді як HashMap може містити один нульовий ключ із n кількістю нульових значень.

12) Яка різниця між HashMap і TreeMap?

Відмінності між HashMap і TreeMap наведені нижче.

  • HashMap не підтримує порядок, але TreeMap підтримує порядок за зростанням.
  • HashMap реалізовано хеш-таблицею, тоді як TreeMap реалізовано структурою дерева.
  • HashMap можна сортувати за ключем або значенням, тоді як TreeMap можна сортувати за ключем.
  • HashMap може містити нульовий ключ із кількома нульовими значеннями, тоді як TreeMap не може містити нульовий ключ, але може мати кілька нульових значень.

13) Яка різниця між HashMap і Hashtable?

Немає.HashMapХеш-таблиця
1)HashMap не синхронізовано.Хеш-таблиця синхронізована.
2)HashMap може містити один нульовий ключ і кілька нульових значень.Хеш-таблиця не може містити нульовий ключ або нульове значення.
3)HashMap не є потокобезпечним,? тому це корисно для непотокових програм.Хеш-таблиця є потокобезпечною, і її можна спільно використовувати між різними потоками.
4)4) HashMap успадковує клас AbstractMapHashtable успадковує клас Dictionary.

14) Яка різниця між Collection і Collections?

Відмінності між колекцією та колекціями наведені нижче.

  • Колекція — це інтерфейс, тоді як Колекція — це клас.
  • Інтерфейс колекції надає стандартну функціональність структури даних для списку, набору та черги. Однак клас Collections призначений для сортування та синхронізації елементів колекції.
  • Інтерфейс Collection надає методи, які можна використовувати для структури даних, тоді як клас Collections надає статичні методи, які можна використовувати для різних операцій над колекцією.

15) Яка різниця між Comparable і Comparator?

Немає.Порівняннийкомпаратор
1)Comparable надає лише один вид послідовності.Компаратор надає кілька видів послідовностей.
2)Він надає один метод під назвою compareTo().Він надає один метод під назвою compare().
3)Його можна знайти в пакеті java.lang.Він знаходиться в пакеті java.util.
4)Якщо ми реалізуємо інтерфейс Comparable, фактичний клас буде змінено.Фактичний клас не змінюється.

16) Що ви розумієте під BlockingQueue?

BlockingQueue — це інтерфейс, який розширює інтерфейс черги. Він забезпечує паралельність таких операцій, як пошук, вставка, видалення. Під час отримання будь-якого елемента він очікує, поки черга не буде порожньою. Під час зберігання елементів він очікує на вільний простір. BlockingQueue не може містити нульові елементи, а реалізація BlockingQueue є потокобезпечною.

Синтаксис:

 public interface BlockingQueue extends Queue 

17) У чому перевага файлу властивостей?

Якщо ви зміните значення у файлі властивостей, вам не потрібно перекомпілювати клас Java. Отже, це спрощує керування програмою. Він використовується для зберігання інформації, яка часто змінюється. Розглянемо наступний приклад.

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

Вихід

 system oracle 

18) Що означає метод hashCode()?

Метод hashCode() повертає значення хеш-коду (ціле число).

Метод hashCode() повертає те саме ціле число, якщо два ключі (через виклик метода equals()) ідентичні.

Однак можливо, що два номери хеш-коду можуть мати різні або однакові ключі.

Якщо два об’єкти не дають однакового результату за допомогою методу equals(), тоді метод hashcode() надасть різний цілочисельний результат для обох об’єктів.


19) Чому ми замінюємо метод equals()?

Метод equals використовується для перевірки того, чи є два об’єкти однаковими чи ні. Його потрібно перевизначити, якщо ми хочемо перевіряти об’єкти на основі властивості.

Наприклад, Employee — це клас, який має 3 члени даних: id, name та salary. Однак ми хочемо перевірити рівність об'єкта працівника за окладом. Потім нам потрібно перевизначити метод equals().


20) Як синхронізувати елементи List, Set і Map?

Так, клас Collections надає методи для синхронізації елементів List, Set або Map:

публічний статичний список synchronizedList(List l){}
public static Set synchronizedSet(Set s){}
публічний статичний SortedSet synchronizedSortedSet(SortedSet s){}
публічна статична карта synchronizedMap(Map m){}
public static SortedMap synchronizedSortedMap(SortedMap m){}

21) У чому перевага родової колекції?

Є три основні переваги використання загальної колекції.

конвертувати ціле число в рядок java
  • Якщо ми використовуємо загальний клас, нам не потрібно приведення типів.
  • Він типобезпечний і перевіряється під час компіляції.
  • Generic підтверджує стабільність коду, дозволяючи виявити помилку під час компіляції.

22) Що таке хеш-колізія в Hashtable і як вона обробляється в Java?

Два різні ключі з однаковим хеш-значенням відомі як хеш-колізія. Щоб уникнути зіткнення, два окремі записи зберігатимуться в одному хеш-бакеті. Є два способи уникнути хеш-колізії.

  • Окреме з’єднання
  • Відкрийте Адресацію

23) Що таке клас Dictionary?

Клас Dictionary надає можливість зберігати пари ключ-значення.


24) Який розмір коефіцієнта завантаження за замовчуванням у колекції на основі хешування?

За замовчуванням коефіцієнт навантаження становить 0,75 . Потужність за замовчуванням обчислюється як початкова потужність * коефіцієнт навантаження. Наприклад, 16 * 0,75 = 12. Отже, 12 — це стандартна місткість Map.


25) Що ви розумієте під невдалим?

Ітератор у java, який негайно викидає ConcurrentmodificationException, якщо відбувається будь-яка структурна зміна, називається Fail-fast ітератором. Ітератор Fail-fats не вимагає додаткового місця в пам'яті.


26) Яка різниця між Array і ArrayList?

Нижче наведено основні відмінності між Array і ArrayList.

SNМасивArrayList
1Масив має фіксований розмір, тобто ми не можемо змінити розмір масиву відповідно до потреб.ArrayList не має фіксованого розміру, ми можемо змінювати розмір динамічно.
2Масиви статичні.ArrayList має динамічний розмір.
3Масиви можуть зберігати примітивні типи даних, а також об’єкти.ArrayList не може зберігати примітивні типи даних, він може зберігати лише об’єкти.

27) Яка різниця між довжиною масиву та розміром ArrayList?

Довжину масиву можна отримати за допомогою властивості length, тоді як ArrayList не підтримує властивість length, але ми можемо використовувати метод size(), щоб отримати кількість об’єктів у списку.

Знаходження довжини масиву

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

Знаходження розміру ArrayList

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

28) Як перетворити ArrayList на Array і Array на ArrayList?

Ми можемо перетворити масив на ArrayList за допомогою методу asList() класу Arrays. Метод asList() є статичним методом класу Arrays і приймає об’єкт List. Розглянемо такий синтаксис:

 Arrays.asList(item) 

Ми можемо перетворити ArrayList на Array за допомогою методу toArray() класу ArrayList. Розгляньте наступний синтаксис, щоб перетворити ArrayList на об’єкт List.

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

29) Як зробити Java ArrayList лише для читання?

Ми можемо отримати java ArrayList лише для читання, викликавши метод Collections.unmodifiableCollection(). Коли ми визначаємо ArrayList як Read-only, тоді ми не можемо виконувати будь-які зміни в колекції за допомогою методів �add(), remove() або set().

оператори java

30) Як видалити дублікати з ArrayList?

Є два способи видалити дублікати зі списку ArrayList.

    Використання HashSet:Використовуючи HashSet, ми можемо видалити повторюваний елемент із ArrayList, але це не збереже порядок вставки.Використання LinkedHashSet:Ми також можемо підтримувати порядок вставки, використовуючи LinkedHashSet замість HashSet.

Процес видалення повторюваних елементів із ArrayList за допомогою LinkedHashSet:

  • Скопіюйте всі елементи ArrayList до LinkedHashSet.
  • Очистіть ArrayList за допомогою методу clear(), який видалить усі елементи зі списку.
  • Тепер скопіюйте всі елементи LinkedHashset в ArrayList.

31) Як повернути ArrayList?

Щоб повернути ArrayList, ми можемо використати метод reverse() класу Collections. Розглянемо наступний приклад.

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

Вихід

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

32) Як відсортувати ArrayList у порядку спадання?

Щоб відсортувати ArrayList у порядку спадання, ми можемо використати метод reverseOrder класу Collections. Розглянемо наступний приклад.

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

Вихід

 printing the list.... 10 50 30 60 20 90 printing list in descending order.... 90 60 50 30 20 10 

33) Як синхронізувати ArrayList?

Ми можемо синхронізувати ArrayList двома способами.

  • Використання методу Collections.synchronizedList().
  • Використання CopyOnWriteArrayList

3. 4) Коли використовувати ArrayList і LinkedList?

LinkedLists краще використовувати для операцій оновлення, тоді як ArrayLists краще використовувати для операцій пошуку.