Интервью с Java Collections Вопросы и ответы [для новичков и опытных]

Опубликовано: 2020-12-16

Если вы имели дело с Java в бакалавриате или работали с Java, вы должны хорошо знать структуру Java Collection. Что касается новичков, которые только начали свое путешествие по Java, платформа Collection представляет собой унифицированную архитектуру, предназначенную для хранения и управления группой (набором) объектов.

По сути, «коллекция» представляет собой единую группу объектов. Коллекция Java включает в себя интерфейсы, классы (ArrayList, Vector, Stack, Hashtable и т. д.) и алгоритмы с готовой архитектурой для хранения и обработки данных.

В этой статье мы рассмотрим наиболее часто задаваемые вопросы на собеседованиях по Java Collections. Мы составили список основных вопросов, которые обычно задают на собеседованиях при собеседовании с кандидатами на профили Java. Это должно помочь вам понять, какие вопросы ожидать от вашего следующего интервью.

Интервью с Java Collections Вопросы и ответы

1. В чем преимущество использования фреймворка Collections?

Коллекции Java включают классы коллекций Generics и Concurrent для потокобезопасных операций. Кроме того, он оснащен блокирующими интерфейсами вместе с их реализациями в параллельных пакетах Java. Вот несколько преимуществ платформы Java Collections:

Это облегчает повторное использование кода и интероперабельность.

Использование основных классов коллекций существенно сокращает усилия и время разработки.

Классы коллекций, поставляемые с JDK, сокращают усилия, необходимые для обслуживания кода.

2. Различайте массив и коллекцию.

Хотя массив и коллекция используются для хранения объектов и управления данными, у них есть несколько внутренних отличий:

  • Вы не можете увеличивать или уменьшать длину массива в соответствии с вашими требованиями времени выполнения — массивы имеют фиксированный размер. Однако вы можете изменить размер коллекции в соответствии с вашими потребностями в масштабировании.
  • Массив может хранить только однородные (похожие или одинаковые) объекты, тогда как коллекция может хранить разнородную группу объектов.
  • В то время как массивы не предлагают готовые к использованию методы (поиск, сортировка, вставка и т. д.) для требований пользователя, коллекции всегда включают готовые к использованию методы.

3. Какова роль универсальных шаблонов в структуре коллекций?

Generics позволяет указать или определить тип объектов, которые может хранить коллекция. Если вы попытаетесь добавить элемент другого типа, Generics отобразит ошибку времени компиляции. Таким образом, отображение ошибки во время компиляции помогает предотвратить исключение ClassCastException во время выполнения. Более того, поскольку Generics устраняет необходимость использования функций приведения типов и instanceof, код становится чистым и точным.

4. Назовите интерфейсы каркаса коллекций.

Вот пять основных интерфейсов в структуре коллекций:

Интерфейс коллекции — это основа иерархии коллекции Java. Большинство коллекций в Java наследуются от интерфейса Collections.

Интерфейс списка — это расширенный массив, содержащий упорядоченные элементы вместе с их дубликатами. Этот интерфейс поддерживает поиск по индексу. Таким образом, вы можете получить доступ к любому элементу из его индекса. Он реализован с использованием различных классов, таких как ArrayList, LinkedList и т. д.

Интерфейс Set — это класс коллекции, который не может содержать повторяющиеся элементы. В отличие от списка, он не поддерживает поиск по индексу и не определяет порядок элементов. Set моделирует математическую абстракцию набора и реализуется такими классами, как HashSet, TreeSet, LinkedHashSet и т. д.

Интерфейс карты — это двумерная структура данных, которая хранит данные в парах ключ-значение. Хотя ключ является уникальным хэш-кодом, значение обозначает элемент. Карта не может иметь повторяющихся ключей/элементов.

Интерфейс очереди — этот интерфейс упорядочивает элемент по принципу «первым пришел — первым обслужен» (FIFO). Таким образом, элементы в интерфейсе очереди удаляются из передней части и добавляются из задней части.

Читайте также: Как кодировать, компилировать и запускать Java-проекты

5. Когда следует переопределить метод equals() в Java?

В то время как первоначальная реализация метода equals() проверяет, похожи ли два объекта, необходимо переопределить метод equals(), если вы хотите сравнить объекты на основе их свойств.

6. Выгодно ли использовать файл свойств?

Да, использование файла свойств в Java дает большое преимущество — если вы измените значения в этом файле, это будет автоматически отражено без необходимости перекомпилировать класс Java. В результате файл свойств в основном используется для хранения информации, которая может быть изменена (например, имя пользователя и пароль). Он позволяет легко управлять приложением Java.

7. Какова функция Iterator в структуре Collection?

Итератор — это интерфейс, который входит в пакет java.util. Также известный как универсальный курсор Java, итератор помогает перебирать набор объектов. Iterator позволяет передавать набор объектов один за другим и поддерживает операции READ и REMOVE. Он широко используется, поскольку имена методов Iterator могут быть легко реализованы.

8. Как можно сортировать объекты коллекции?

В среде коллекций сортировка обычно реализуется с помощью интерфейсов Comparable и Comparator . Если вы используете метод Collections.sort(), он будет сортировать элементы на основе естественного порядка, указанного в методе compareTo(). Однако при использовании метода Collections.sort(Comparator) элементы будут сортироваться в соответствии с методом compare() интерфейса Comparator.

Читайте: Проект Java Swing

9. Можно ли преобразовать ArrayList в Array и Array в ArrayList?

Да, это возможно. Вы можете преобразовать массив в ArrayList, используя функцию asList() класса Array. Синтаксис для этого следующий:

Arrays.asList(элемент)

Вы можете преобразовать ArrayList в Array, используя функцию toArray() класса ArrayList, например:

List_object.toArray(новая строка[List_object.size()])

10. Как перевернуть список?

Как вы будете переворачивать ArrayList?

Вы можете перевернуть ArrayList, используя функцию reverse() класса Collections. Синтаксис для этого следующий:

public static void reverse(коллекция c)

11. Что такое «BlockingQueue»?

Интерфейс BlockingQueue присутствует в пакете java.util.concurrent . Его основная цель — улучшить управление потоком путем активации блокировки всякий раз, когда поток пытается удалить из очереди пустую очередь или поставить в очередь существующую полную очередь. Интерфейс BlockingQueue не принимает нулевые значения, и если вы попытаетесь вставить нулевое значение, будет отображено исключение NullPointerException.

12. Объясните «Приоритетная очередь».

Приоритетная очередь — это абстрактный тип данных, такой как стандартная очередь или структура данных стека. Однако в этой очереди каждый элемент имеет уникальную функцию, называемую «приоритетом». Поскольку она основана на куче приоритетов, Priority Queue обслуживает элемент с высоким приоритетом перед элементом с низким приоритетом, независимо от их порядка вставки. В приоритетной очереди элементы упорядочиваются либо в соответствии с естественным порядком, либо с помощью компаратора, используемого во время построения очереди (зависит от того, какой конструктор вы используете).

13. Как класс HashSet хранит элементы?

Класс HashSet является членом платформы Java Collections, которая наследует класс AbstractSet и реализует интерфейс Set.

HashSet реализует Hashtable как для создания, так и для хранения коллекции элементов. Hashtable — это экземпляр класса HashMap, который использует механизм хеширования для хранения данных в HashSet. Хэширование относится к методу преобразования информации в уникальное значение, известное как хеш-код. Хэш-код индексирует данные, связанные с уникальным ключом.

14. Можно ли добавить нулевой элемент в TreeSet или HashSet?

Хотя вы можете добавить только один пустой элемент в HashSet, вы не можете сделать это в TreeSet, потому что он использует NavigableMap для хранения элементов. NavigableMap — это подтип SortedMap, который не принимает/поддерживает нулевые значения. Если вы вставите нулевой элемент в TreeSet, это вызовет исключение NullPointerException.

15. Что делает функция emptySet()?

В Java Collections.emptySet() используется для возврата пустого неизменяемого набора путем исключения всех нулевых элементов. Вот синтаксис для объявления emptySet():

публичный статический окончательный <T> Set<T> emptySet()

16. Почему интерфейс карты не расширяет интерфейс коллекции?

В то время как интерфейс Map следует структуре пар ключ-значение, интерфейс Collection хранит коллекцию объектов в структурированном виде с определенным механизмом доступа. Map не расширяет интерфейс Collection, поскольку функция add(E e) интерфейса Collection не поддерживает модель пары ключ-значение функции put(K key, V value) Map.

17. Назовите различные представления коллекции, расширенные интерфейсом карты.

Интерфейс карты предлагает три представления пар ключ-значение, а именно:

  • Представление набора ключей
  • Представление набора значений
  • Представление набора записей

18. Перечислите основные функции Java Hashmap.

Основные особенности Hashmap:

  • Вы можете сохранить элементы, сформировав пары ключ-значение, и получить значение, передав ключ правильному методу.
  • Он отображает NoSuchElementException, если на карте нет элементов.
  • Он хранит только ссылки на объекты, что делает невозможным использование примитивных типов данных, таких как double или int. Вместо этого вы можете использовать класс-оболочку, например Integer или Double.

Обязательно к прочтению: Java-интервью, вопросы и ответы

19. Определите «Стек».

В Java стек обозначает выделенную область памяти компьютера, в которой хранятся временные переменные, созданные функцией. Переменные объявляются, сохраняются и инициализируются во время выполнения в стеке.

20. Определите «обозначение Big-O».

Нотация Big-O определяет производительность алгоритма по отношению к количеству элементов в структуре данных. Классы коллекций — это структуры данных, и, следовательно, вам нужно использовать нотацию Big-O, чтобы решить, какую реализацию коллекции использовать на основе памяти, времени и производительности.

Запишитесь на курсы по разработке программного обеспечения в лучших университетах мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.

Заключение

Если вам интересно узнать больше о Java, разработке программного обеспечения с полным стеком, ознакомьтесь с программой Executive PG upGrad и IIIT-B по разработке программного обеспечения с полным стеком, которая предназначена для работающих профессионалов и предлагает более 500 часов тщательного обучения, 9+ проекты и задания, статус выпускника IIIT-B, практические практические проекты и помощь в трудоустройстве в ведущих фирмах.

Получите работу своей мечты

Подать заявку на получение степени магистра в области разработки программного обеспечения