Ответ на "Оцените количество памяти на хранение одного примитива типа byte в ArrayList?"
ArrayList основан на массиве, для примитивных типов данных осуществляется автоматическая упаковка значения, поэтому
В худшем случае вставка в середину списка эффективнее для
#вопросы_с_собеседований
ArrayList основан на массиве, для примитивных типов данных осуществляется автоматическая упаковка значения, поэтому
16 байт тратится на хранение упакованного объекта и 4 байта (8 для x64) - на хранение ссылки на этот объект в самой структуре данных. Таким образом, в x32 JVM 4 байта используются на хранение одного элемента и 16 байт - на хранение упакованного объекта типа Byte. Для x64 - 8 байт и 24 байта соответственно.В худшем случае вставка в середину списка эффективнее для
LinkedList. В остальных - скорее всего, для ArrayList, поскольку копирование элементов осуществляется за счет вызова быстрого системного метода System.arraycopy().#вопросы_с_собеседований
👍6
Для ArrayList или для LinkedList операция добавления элемента в середину (list.add(list.size()/2, newElement)) медленнее?
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
👍1
Ответ на "Для ArrayList или для LinkedList операция добавления элемента в середину (list.add(list.size()/2, newElement)) медленнее?"
Для ArrayList:
• проверка массива на вместимость. Если вместимости недостаточно, то увеличение размера массива и копирование всех элементов в новый массив
• копирование всех элементов, расположенных правее от позиции вставки, на одну позицию вправо
• вставка элемента
Для LinkedList:
• поиск позиции вставки
• вставка элемента
В худшем случае вставка в середину списка эффективнее для
#вопросы_с_собеседований
Для ArrayList:
• проверка массива на вместимость. Если вместимости недостаточно, то увеличение размера массива и копирование всех элементов в новый массив
(O(N));• копирование всех элементов, расположенных правее от позиции вставки, на одну позицию вправо
(O(N));• вставка элемента
(O(1)).Для LinkedList:
• поиск позиции вставки
(O(N));• вставка элемента
(O(1)).В худшем случае вставка в середину списка эффективнее для
LinkedList. В остальных - скорее всего, для ArrayList, поскольку копирование элементов осуществляется за счет вызова быстрого системного метода System.arraycopy().#вопросы_с_собеседований
В реализации класса ArrayList есть следующие поля: Object[] elementData, int size. Объясните, зачем хранить отдельно size, если всегда можно взять elementData.length?
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
👍1
Ответ на "В реализации класса ArrayList есть следующие поля: Object[] elementData, int size. Объясните, зачем хранить отдельно size, если всегда можно взять elementData.length?"
Размер массива
#вопросы_с_собеседований
Размер массива
elementData представляет собой вместимость (capacity) ArrayList, которая всегда больше переменной size - реального количества хранимых элементов. При необходимости вместимость автоматически возрастает.#вопросы_с_собеседований
👍5
LinkedList — это односвязный, двусвязный или четырехсвязный список?
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
👍1
Ответ на "LinkedList — это односвязный, двусвязный или четырехсвязный список?"
Двусвязный: каждый элемент
#вопросы_с_собеседований
Двусвязный: каждый элемент
LinkedList хранит ссылку на предыдущий и следующий элементы.#вопросы_с_собеседований
👍5
Как перебрать элементы LinkedList в обратном порядке, не используя медленный get(index)?
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Ответ на "Как перебрать элементы LinkedList в обратном порядке, не используя медленный get(index)?"
Для этого в
#вопросы_с_собеседований
Для этого в
LinkedList есть обратный итератор, который можно получить вызва метод descendingIterator().#вопросы_с_собеседований
😱4
Stack считается «устаревшим». Чем его рекомендуют заменять? Почему?
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Ответ на "Stack считается «устаревшим». Чем его рекомендуют заменять? Почему?"
#вопросы_с_собеседований
Stack был добавлен в Java 1.0 как реализация стека LIFO (last-in-first-out) и является расширением коллекции Vector, хотя это несколько нарушает понятие стека (например, класс Vector предоставляет возможность обращаться к любому элементу по индексу). Является частично синхронизированной коллекцией (кроме метода добавления push()) с вытекающими отсюда последствиями в виде негативного воздействия на производительность. После добавления в Java 1.6 интерфейса Deque, рекомендуется использовать реализации именно этого интерфейса, например, ArrayDeque.#вопросы_с_собеседований
👍3👏1
Зачем нужен HashMap, если есть Hashtable?
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Ответ на "Зачем нужен HashMap, если есть Hashtable?"
• Методы класса
•
•
Hashtable это устаревший класс и его использование не рекомендовано.
#вопросы_с_собеседований
• Методы класса
Hashtable синхронизированы, что приводит к снижению производительности, а HashMap - нет;•
HashTable не может содержать элементы null, тогда как HashMap может содержать один ключ null и любое количество значений null;•
Iterator у HashMap, в отличие от Enumeration у HashTable, работает по принципу «fail-fast» (выдает исключение при любой несогласованности данных).Hashtable это устаревший класс и его использование не рекомендовано.
#вопросы_с_собеседований
👍7
Что такое «денормализация»? Для чего она применяется?
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Ответ на "Что такое «денормализация»? Для чего она применяется?"
Денормализация базы данных — это процесс осознанного приведения базы данных к виду, в котором она не будет соответствовать правилам нормализации. Обычно это необходимо для повышения производительности и скорости извлечения данных, за счет увеличения избыточности данных.
#вопросы_с_собеседований
Денормализация базы данных — это процесс осознанного приведения базы данных к виду, в котором она не будет соответствовать правилам нормализации. Обычно это необходимо для повышения производительности и скорости извлечения данных, за счет увеличения избыточности данных.
#вопросы_с_собеседований
👍2
Как получить доступ к переопределенным методам родительского класса?
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Ответ на "Как получить доступ к переопределенным методам родительского класса?"
С помощью ключевого слова
С помощью ключевого слова
super мы можем обратиться к любому члену родительского класса - методу или полю, если они не определены с модификатором private.super.method();
#вопросы_с_собеседований👍4❤1
#вопросы_с_собеседований
В чем разница между композицией и агрегацией?
Ассоциация обозначает связь между объектами. Композиция и агрегация — частные случаи ассоциации «часть-целое».
Агрегация предполагает, что объекты связаны взаимоотношением «part-of» (часть). Композиция более строгий вариант агрегации. Дополнительно к требованию «part-of» накладывается условие, что экземпляр «части» может входить только в одно целое (или никуда не входить), в то время как в случае агрегации экземпляр «части» может входить в несколько целых.
Например, книга состоит из страниц, и мы не можем вырвать страницу из книги и вложить в другую книгу. Страницы четко привязаны к конкретной книге, поэтому это композиция. В тоже время мы можем взять и перенести книгу из одной библиотеки в другую - это уже агрегация.
В чем разница между композицией и агрегацией?
Ассоциация обозначает связь между объектами. Композиция и агрегация — частные случаи ассоциации «часть-целое».
Агрегация предполагает, что объекты связаны взаимоотношением «part-of» (часть). Композиция более строгий вариант агрегации. Дополнительно к требованию «part-of» накладывается условие, что экземпляр «части» может входить только в одно целое (или никуда не входить), в то время как в случае агрегации экземпляр «части» может входить в несколько целых.
Например, книга состоит из страниц, и мы не можем вырвать страницу из книги и вложить в другую книгу. Страницы четко привязаны к конкретной книге, поэтому это композиция. В тоже время мы можем взять и перенести книгу из одной библиотеки в другую - это уже агрегация.
👍3
Что вы знаете о функции main()?
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
Пишите в комментариях ваш вариант. Ответ будет у нас в канале.
#вопросы_с_собеседований
👍2
Ответ на "Что вы знаете о функции main()?"
Метод
#вопросы_с_собеседований
Метод
main() — точка входа в программу. В приложении может быть несколько таких методов. Если метод отсутствует, то компиляция возможна, но при запуске будет получена ошибка `Error: Main method not found`.#вопросы_с_собеседований
👍1