Проект

Общее

Профиль

Действия

JAVA COLLECTIONS FRAMEWORK » История » Редакция 1

Редакция 1/28 | Следующее »
Александр Александров, 20.04.2019 03:34


JAVA COLLECTIONS FRAMEWORK

Вопросы

  1. Что такое Коллекция?
  2. Назовите основные интерфейсы коллекций и их имплементации.
  3. Чем отличается ArrayList от LinkedList? В каких случаях лучше использовать первый, а в каких второй?
  4. Чем отличается HashMap от Hashtable?
  5. Чем отличается ArrayList от Vector?
  6. Как сравниваются елементы коллекций?
  7. Расположите в виде иерархии следующие интерфейсы: List, Set, Map, SortedSet, SortedMap, Collection,Iterable, Iterator, NavigableSet, NavigableMap.
  8. Почему Map - это не Collection, в то время как List и Set являются Collection?
  9. Дайте определение понятию "iterator".
  10. Что вы знаете об интерфейсе Iterable?
  11. Как одной строчкой преобразовать HashSet в ArrayList?
  12. Как одной строчкой преобразовать ArrayList в HashSet?
  13. Как перебрать все ключи Map учитывая, что Map - это не Iterable?
  14. Как перебрать все значения Map учитывая, что Map - это не Iterable?
  15. Как перебрать все пары ключ-значение в Map учитывая, что Map - это не Iterable?
  16. В чем проявляется "сортированность" SortedMap, кроме того, что toString() выводит все по порядку?
  17. Как одним вызовом копировать элементы из любой Collection в массив?
  18. Реализуйте симметрическую разность двух коллекций используя методы Collection(addAll(), removeAll(), retainAll()).
  19. Сравните Enumeration и Iterator.
  20. Как между собой связаны Iterable и Iterator?
  21. Как между собой связаны Iterable, Iterator и "for-each " введенный в Java 5?
  22. Сравните Iterator и ListIterator.
  23. Что произойдет, если я вызову Iterator.next() не "спросив" Iterator.hasNext()?
  24. Что произойдет, если я вызову Iterator.next() перед этим 10 раз вызвав Iterator.hasNext()? Я пропущу 9 элементов?
  25. Если у меня есть коллекция и порожденный итератор, изменится ли коллекция, если я вызову iterator.remove()?
  26. Если у меня есть коллекция и порожденный итератор, изменится ли итератор, если я вызову collection.remove(..)?
  27. Зачем добавили ArrayList, если уже был Vector?
  28. В реализации класса ArrayList есть следующие поля: Object[] elementData, int size.
  29. Объясните, зачем хранить отдельно size, если всегда можно взять elementData.length?
  30. LinkedList - это односвязный, двусвязный или четырехсвязный список?
  31. Какое худшее время работы метода contain() для элемента, который есть в LinkedList (O(1), O(log(N)), O(N), O(N*log(N)), O(N*N))?
  32. Какое худшее время работы метода contain() для элемента, который есть в ArrayList (O(1), O(log(N)), O(N), O(N*log(N)), O(N*N))?
  33. Какое худшее время работы метода add() для LinkedList (O(1), O(log(N)), O(N), O(N*log(N)), O(N*N))?
  34. Какое худшее время работы метода add() для ArrayList (O(1), O(log(N)), O(N), O(N*log(N)), O(N*N))?
  35. Сколько выделяется элементов в памяти при вызове ArrayList.add()?
  36. Сколько выделяется элементов в памяти при вызове LinkedList.add()?
  37. Оцените количество памяти на хранение одного примитива типа byte в LinkedList?
  38. Оцените количество памяти на хранение одного примитива типа byte в ArrayList?
  39. Я добавляю элемент в середину List-а: list.add(list.size()/2, newElem). Для кого эта операция медленнее - для ArrayList или для LinkedList?
  40. Как перебрать элементы LinkedList в обратном порядке, не используя медленный get(index)?
  41. Как одним вызовом из List получить List со всеми элементами, кроме первых и последних 3-х?
  42. Могут ли у разных объектов в памяти (ref0 != ref1) быть ref0.hashCode() ref1.hashCode()?
  43. Могут ли у разных объектов в памяти (ref0 != ref1) быть ref0.equals(ref1) true?
  44. Могут ли у разных ссылок на один объект в памяти (ref0 ref1) быть ref0.equals(ref1) false?
  45. Есть класс Point{int x, y;}. Почему хэш-код в виде 31 * x + y предпочтительнее чем x + y?
  46. Если у класса Point{int x, y;} "правильно " реализовать метод equals (return ref0.x ref1.x && ref0.y ref1.y), но сделать хэш-код в виде int hashCode() {return x;}, то будут ли корректно такие точки помещаться и извлекаться из HashSet?
  47. equals() порождает отношение эквивалентности. Какими из свойств обладает такое отношение: коммутативность, симметричность, рефлексивность, дистрибутивность, ассоциативность, транзитивность?
  48. Можно ли так реализовать equals(Object that) {return this.hashCode() that.hashCode()}?
  49. В equals требуется проверять, что аргумент (equals(Object that)) такого же типа как и сам объект. В чем разница между this.getClass() that.getClass() и that instanceof MyClass?
  50. Можно ли реализовать метод equals класса MyClass вот так: class MyClass {public boolean equals(MyClass that) {return this that;}}?
  51. Будет ли работать HashMap, если все ключи будут возвращать int hashCode() {return 42;}?
  52. Зачем добавили HashMap, если уже был Hashtable?
  53. Согласно Кнуту и Кормену существует две основных реализации хэш-таблицы: на основе открытой адресацией и на основе метода цепочек. Как реализована HashMap? Почему так сделали (по вашему мнению)? В чем минусы и плюсы каждого подхода?
  54. Сколько переходов по ссылкам происходит, когда вы делаете HashMap.get(key) по ключу, который есть в таблице?
  55. Сколько создается новых объектов, когда вы добавляете новый элемент в HashMap?
  56. Как работает HashMap при попытке сохранить в нее два элемента по ключам с
  57. одинаковым hashCode, но для которых equals false?
  58. HashMap может выродиться в список даже для ключей с разным hashCode. Как это возможно?
  59. Какое худшее время работы метода get(key) для ключа, которого нет в таблице (O(1), O(log(N)), O(N), O(N*log(N)), O(N*N))?
  60. Какое худшее время работы метода get(key) для ключа, который есть в таблице (O(1), O(log(N)), O(N), O(N*log(N)), O(N*N))?
  61. Объясните смысл параметров в конструкторе HashMap(int initialCapacity, float loadFactor).
  62. В чем разница между HashMap и IdentityHashMap? Для чего нужна IdentityHashMap? Как может быть полезна для реализации сериализации или клонирования?
  63. В чем разница между HashMap и WeakHashMap? Для чего нужна WeakHashMap?
  64. В WeakHashMap используются WeakReferences. А почему бы не создать SoftHashMap на SoftReferences?
  65. В WeakHashMap используются WeakReferences. А почему бы не создать PhantomHashMap на PhantomReferences?
  66. Сделайте HashSet из HashMap (используйте только множество ключей, но не множество значений).
  67. Сделайте HashMap из HashSet (HashSet<Map.Entry<K, V>>)
  68. Сравните интерфейсы java.util.Queue и java.util.Deque.
  69. Кто кого расширяет: Queue расширяет Deque, или Deque расширяет Queue?
  70. Почему LinkedList реализует и List, и Deque?
  71. В чем разница между классами java.util.Arrays и java.lang.reflect.Array?
  72. В чем разница между классами java.util.Collection и java.util.Collections?
  73. Напишите НЕмногопоточную программу, которая заставляет коллекцию выбросить ConcurrentModificationException.
  74. Что такое "fail-fast поведение"?
  75. Для множеств еnum-ов есть специальный класс java.util.EnumSet? Зачем? Чем авторов не устраивал HashSet или TreeSet?
  76. java.util.Stack - считается "устаревшим". Чем его рекомендуют заменять? Почему?
  77. Какая коллекция реализует дисциплину обслуживания FIFO?
  78. Какая коллекция реализует дисциплину обслуживания FILO?
  79. Приведите пример, когда какая-либо коллекция выбрасывает UnsupportedOperationException.
  80. Почему нельзя написать "ArrayList<List> numbers = new ArrayList<ArrayList>();" но можно "List<ArrayList> numbers = new ArrayList<ArrayList>();"?
  81. LinkedHashMap - что это еще за "зверь"? Что в нем от LinkedList, а что от HashMap?
  82. LinkedHashSet - что это еще за "зверь"? Что в нем от LinkedList, а что от HashSet?
  83. Говорят, на LinkedHashMap легко сделать простенький кэш c "invalidation policy", знаете как?
  84. Что позволяет сделать PriorityQueue?
  85. В чем заключаются отличия java.util.Comparator от java.lang.Comparable?

Ответы

Что такое Коллекция?

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

Чем отличается ArrayList от LinkedList? В каких случаях лучше использовать первый, а в каких второй?

Чем отличается HashMap от Hashtable?

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

Как сравниваются елементы коллекций?

Расположите в виде иерархии следующие интерфейсы: List, Set, Map, SortedSet, SortedMap, Collection,Iterable, Iterator, NavigableSet, NavigableMap.

Почему Map - это не Collection, в то время как List и Set являются Collection?

Дайте определение понятию "iterator".

Что вы знаете об интерфейсе Iterable?

Как одной строчкой преобразовать HashSet в ArrayList?

Как одной строчкой преобразовать ArrayList в HashSet?

Как перебрать все ключи Map учитывая, что Map - это не Iterable?

Как перебрать все значения Map учитывая, что Map - это не Iterable?

Как перебрать все пары ключ-значение в Map учитывая, что Map - это не Iterable?

В чем проявляется "сортированность" SortedMap, кроме того, что toString() выводит все по порядку?

Как одним вызовом копировать элементы из любой Collection в массив?

Реализуйте симметрическую разность двух коллекций используя методы Collection(addAll(), removeAll(), retainAll()).

Сравните Enumeration и Iterator.

Как между собой связаны Iterable и Iterator?

Как между собой связаны Iterable, Iterator и "for-each " введенный в Java 5?

Сравните Iterator и ListIterator.

Что произойдет, если я вызову Iterator.next() не "спросив" Iterator.hasNext()?

Что произойдет, если я вызову Iterator.next() перед этим 10 раз вызвав Iterator.hasNext()? Я пропущу 9 элементов?

Если у меня есть коллекция и порожденный итератор, изменится ли коллекция, если я вызову iterator.remove()?

Если у меня есть коллекция и порожденный итератор, изменится ли итератор, если я вызову collection.remove(..)?

Зачем добавили ArrayList, если уже был Vector?

В реализации класса ArrayList есть следующие поля: Object[] elementData, int size.

Объясните, зачем хранить отдельно size, если всегда можно взять elementData.length?

LinkedList - это односвязный, двусвязный или четырехсвязный список?

Какое худшее время работы метода contain() для элемента, который есть в LinkedList (O(1), O(log(N)), O(N), O(N*log(N)), O(N*N))?

Какое худшее время работы метода contain() для элемента, который есть в ArrayList (O(1), O(log(N)), O(N), O(N*log(N)), O(N*N))?

Какое худшее время работы метода add() для LinkedList (O(1), O(log(N)), O(N), O(N*log(N)), O(N*N))?

Какое худшее время работы метода add() для ArrayList (O(1), O(log(N)), O(N), O(N*log(N)), O(N*N))?

Сколько выделяется элементов в памяти при вызове ArrayList.add()?

Сколько выделяется элементов в памяти при вызове LinkedList.add()?

Оцените количество памяти на хранение одного примитива типа byte в LinkedList?

Оцените количество памяти на хранение одного примитива типа byte в ArrayList?

Я добавляю элемент в середину List-а: list.add(list.size()/2, newElem). Для кого эта операция медленнее - для ArrayList или для LinkedList?

Как перебрать элементы LinkedList в обратном порядке, не используя медленный get(index)?

Как одним вызовом из List получить List со всеми элементами, кроме первых и последних 3-х?

Могут ли у разных объектов в памяти (ref0 != ref1) быть ref0.hashCode() ref1.hashCode()?

Могут ли у разных объектов в памяти (ref0 != ref1) быть ref0.equals(ref1) true?

Могут ли у разных ссылок на один объект в памяти (ref0 ref1) быть ref0.equals(ref1) false?

Есть класс Point{int x, y;}. Почему хэш-код в виде 31 * x + y предпочтительнее чем x + y?

Если у класса Point{int x, y;} "правильно " реализовать метод equals (return ref0.x ref1.x && ref0.y ref1.y), но сделать хэш-код в виде int hashCode() {return x;}, то будут ли корректно такие точки помещаться и извлекаться из HashSet?

equals() порождает отношение эквивалентности. Какими из свойств обладает такое отношение: коммутативность, симметричность, рефлексивность, дистрибутивность, ассоциативность, транзитивность?

Можно ли так реализовать equals(Object that) {return this.hashCode() that.hashCode()}?

В equals требуется проверять, что аргумент (equals(Object that)) такого же типа как и сам объект. В чем разница между this.getClass() that.getClass() и that instanceof MyClass?

Можно ли реализовать метод equals класса MyClass вот так: class MyClass {public boolean equals(MyClass that) {return this that;}}?

Будет ли работать HashMap, если все ключи будут возвращать int hashCode() {return 42;}?

Зачем добавили HashMap, если уже был Hashtable?

Согласно Кнуту и Кормену существует две основных реализации хэш-таблицы: на основе открытой адресацией и на основе метода цепочек. Как реализована HashMap? Почему так сделали (по вашему мнению)? В чем минусы и плюсы каждого подхода?

Сколько переходов по ссылкам происходит, когда вы делаете HashMap.get(key) по ключу, который есть в таблице?

Сколько создается новых объектов, когда вы добавляете новый элемент в HashMap?

Как работает HashMap при попытке сохранить в нее два элемента по ключам с одинаковым hashCode, но для которых equals false?

HashMap может выродиться в список даже для ключей с разным hashCode. Как это возможно?

Какое худшее время работы метода get(key) для ключа, которого нет в таблице (O(1), O(log(N)), O(N), O(N*log(N)), O(N*N))?

Какое худшее время работы метода get(key) для ключа, который есть в таблице (O(1), O(log(N)), O(N), O(N*log(N)), O(N*N))?

Объясните смысл параметров в конструкторе HashMap(int initialCapacity, float loadFactor).

В чем разница между HashMap и IdentityHashMap? Для чего нужна IdentityHashMap? Как может быть полезна для реализации сериализации или клонирования?

В чем разница между HashMap и WeakHashMap? Для чего нужна WeakHashMap?

В WeakHashMap используются WeakReferences. А почему бы не создать SoftHashMap на SoftReferences?

В WeakHashMap используются WeakReferences. А почему бы не создать PhantomHashMap на PhantomReferences?

Сделайте HashSet из HashMap (используйте только множество ключей, но не множество значений).

Сделайте HashMap из HashSet (HashSet<Map.Entry<K, V>>)

Сравните интерфейсы java.util.Queue и java.util.Deque.

Кто кого расширяет: Queue расширяет Deque, или Deque расширяет Queue?

Почему LinkedList реализует и List, и Deque?

В чем разница между классами java.util.Arrays и java.lang.reflect.Array?

В чем разница между классами java.util.Collection и java.util.Collections?

Напишите НЕмногопоточную программу, которая заставляет коллекцию выбросить ConcurrentModificationException.

Что такое "fail-fast поведение"?

Для множеств еnum-ов есть специальный класс java.util.EnumSet? Зачем? Чем авторов не устраивал HashSet или TreeSet?

java.util.Stack - считается "устаревшим". Чем его рекомендуют заменять? Почему?

Какая коллекция реализует дисциплину обслуживания FIFO?

Какая коллекция реализует дисциплину обслуживания FILO?

Приведите пример, когда какая-либо коллекция выбрасывает UnsupportedOperationException.

Почему нельзя написать "ArrayList<List> numbers = new ArrayList<ArrayList>();" но можно "List<ArrayList> numbers = new ArrayList<ArrayList>();"?

LinkedHashMap - что это еще за "зверь"? Что в нем от LinkedList, а что от HashMap?

LinkedHashSet - что это еще за "зверь"? Что в нем от LinkedList, а что от HashSet?

Говорят, на LinkedHashMap легко сделать простенький кэш c "invalidation policy", знаете как?

Что позволяет сделать PriorityQueue?

В чем заключаются отличия java.util.Comparator от java.lang.Comparable?

Обновлено Александр Александров около 5 лет назад · 1 изменени(я, ий)

Go to top