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
Q

Контракт equls() и hashcode()?

A
  1. Для одного и того же объекта, хэш-код всегда будет одинаковым;
  2. Если объекты равно то хэшкоды тоже равны
  3. Если хэш коды равны то объекты не всегда равны
  4. Если хэшкоды разный то и объекты разные
26
Q

Какая разница между TreeSet и LinkedHashSet?

A

LinkedHashSet в основе лежит LinkedHashMap вместо HashSet

TreeSet - содержит в себе объект NavigableMap что и обуславливает его поведение

27
Q

Внутренняя реализация HashSet и HashMap?

A

HashSet - реализация интерфейса Set, базирующаяся на HashMap.
HashMap - внутри массив связанных списков. Элемент связанного списка - объект класса Entry

28
Q

Как разница между Hashtable и HashMap?

A

HashMap не синхронизированна и HashMap позволяет использовать null в качестве ключа и в качестве значения

29
Q

Какое отличие между ConcurrentHashMap, HashTable и SynchronizedMap?

A

все методы в HashTable synchronized
SynchronizedMap подобна к HashTable, но можно любую Map обернуть в SynchronizedMap используя Collections.synchronizedMap()
ConcurrentHashMap - синхронизация по частям коллекции
SynchronizedMap и HashTable блокируют коллекции целиком

30
Q

Что такое не модифицированная коллекция?

Как ее создать?

A

read-only коллекция

Collections.unmodifiableList(List extends T> list)

31
Q

Как и когда происходит увеличение количества корзин в HashMap?

A

По достижению предельного значения, число корзин увеличивается в 2 раза. Для всех хранимых элементов вычисляется новое местоположение с учетом нового числа корзин.

32
Q

Как найти средний элемент в связном списке за один проход?

A

Использовать два указателя. Один будет итерировать каждый раз и так найдем длину списка второй будет будет итерировать каждый второй раз.