Algoritms, Collections Flashcards

1
Q

В чем идея merge sort?

A

Сначала задача разбивается на несколько подзадач меньшего размера. Затем эти задачи решаются с помощью рекурсивного вызова или непосредственно, если их размер достаточно мал. Наконец, их решения комбинируются, и получается решение исходной задачи.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

В чем идея quick sort?

A
  1. из массива выбирается некоторой опорный элемент a[i]
  2. запускается процедура разделения массива, которая перемещает все ключи, меньшие, либо равные a[i], влево от него, а все ключи, большие, либо равные a[i] - вправо,
  3. для обоих подмассивов: если в подмассиве более двух элементов, рекурсивно запускаем для него ту же процедуру.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Что такое двоичный поиск?

A

Это алгоритм поиска элемента в отсортированном массиве, использующий дробление массива на половины.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Что такое Big O notation?

A

Обозначение для описания предельного поведения алгоритма.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

принадлежит ли интерфейс Map к иерархии интерфейсов Collection?

A

Нет, это разные иерархии.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Почему интерфейс Map не наследуется от Collection?

A

Потому что у Map принцип хранения данных: пара ключ-значение, а у Collection - только значение.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Что такое NavigableSet и NavigableMap?

A

Это интерфейсы являются расширениями интерфейсов SortedSet и SortedMap и добавляют возможности перемещения по отсортированной коллекции.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Что такое интерфейс Enumeration?

A

Это быстрая версия интерфейса Iterator. У Enumeration есть всего два метода: hasMoreElements() и nextElement().

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Какое отличие Enumeration и Iterator

A

Enumeration быстрее и использует меньше памяти чем Iterator

Iterator безопаснее потому что запрещает изменять коллекцию, а также может удалять элементы из коллекции.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Чем отличается Iterator от ListInterator?

A

Iterator для List и Set, а ListIterator только для List.
Iterator может проходить только в одном направлении, а ListIterator в двух.
ListIterator наследуется от Iterator и может также добавлять , заменять элементы,и возвращать индекс элементов.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Что такое ConcurrentModificationException?

A

Это исключительная ситуация которая возникает, когда модифицируем коллекцию во время прохождения по ней итератором, не используя итератор.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Какое отличие свойств итератора fail-fast от fail-safe?

A

Fail-Fast итератор бросает ConcurrentModificationException, а Fail-Safe нет.
Fail-Safe внутри работает с клонированной коллекцией.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Какая внутренняя организация HaspMap в Java?

A

HashMap - Внутри это массив, элементы в документации называются бакетами(buckets). В бакете хранится первый эемент связанного списка. Таким образом, HashMap имеет внутри - массив связанных списков. Элемент связанного списка - объект класса Entry, содержит ключ, значение и ссылку на следующий Entry.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Что значит маркерный интерфейс java.util.RandomAccess?

A

Означает что доступ к элементам коллекции происходит за константное время О(1)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Какие коллекции реализует интерфейс RandomAccess?

A

ArrayList
CopyOnWriteArrayList
Stack
Vector

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Чем отличаются интерфейсы List, Set, Queue?

A

List - Представляет собой не упорядоченную коллекцию, в которой допустимы дублирующие значения.
Set - описывает не упорядоченную коллекцию, не содержащую повторяющихся элементов.
Queue - коллекция, предназначенная для хранения элементов в порядке, нужном для их обработки.

17
Q

Что такое TreeMap

A

Класс TreeMap разширяет класс AbsractMap и реализует интерфейс NavigableMap.
Хранение элементов в дереве
Объекты сохраняются в отсортированном порядке по возрастанию

18
Q

Чем отличается ArrayList от Vector?

A

Методы класса Vector синхронизированны, в то время как ArrayList -нет

19
Q

Чем отличается ArrayList от LinkedList?

A

В первом массив, во втором список.

20
Q

Какой тип списка LinkedList?

A

Двухсвязный список

21
Q

Что такое java.util.EnumSet?

A

EnumSet это реализация интерфейса для работы с enum типами. Все элементы должны принадлежать к одному типу enum
EnumSet не синхронизирован и не позволяет использовать null как элемент

22
Q

Какие есть thread-safe коллекции?

A

Vector, Hashtable, Properties, Stack

23
Q

Что такое Iterator?

A

Итератор - это стандартный способ доступа к элементам коллекции. Это объект, связанный с коллекцией, и предоставляет доступ к элементам по одному.

24
Q

Назовите реализации интерфейсов Iterator и ListIterator?

A

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

25
Контракт equls() и hashcode()?
1. Для одного и того же объекта, хэш-код всегда будет одинаковым; 2. Если объекты равно то хэшкоды тоже равны 3. Если хэш коды равны то объекты не всегда равны 4. Если хэшкоды разный то и объекты разные
26
Какая разница между TreeSet и LinkedHashSet?
LinkedHashSet в основе лежит LinkedHashMap вместо HashSet | TreeSet - содержит в себе объект NavigableMap что и обуславливает его поведение
27
Внутренняя реализация HashSet и HashMap?
HashSet - реализация интерфейса Set, базирующаяся на HashMap. HashMap - внутри массив связанных списков. Элемент связанного списка - объект класса Entry
28
Как разница между Hashtable и HashMap?
HashMap не синхронизированна и HashMap позволяет использовать null в качестве ключа и в качестве значения
29
Какое отличие между ConcurrentHashMap, HashTable и SynchronizedMap?
все методы в HashTable synchronized SynchronizedMap подобна к HashTable, но можно любую Map обернуть в SynchronizedMap используя Collections.synchronizedMap() ConcurrentHashMap - синхронизация по частям коллекции SynchronizedMap и HashTable  блокируют коллекции целиком
30
Что такое не модифицированная коллекция? | Как ее создать?
read-only коллекция | Collections.unmodifiableList(List extends T> list)
31
Как и когда происходит увеличение количества корзин в HashMap?
По достижению предельного значения, число корзин увеличивается в 2 раза. Для всех хранимых элементов вычисляется новое местоположение с учетом нового числа корзин.
32
Как найти средний элемент в связном списке за один проход?
Использовать два указателя. Один будет итерировать каждый раз и так найдем длину списка второй будет будет итерировать каждый второй раз.