#Вопросы_с_собеседования
❓Каково максимальное число значений hashCode()?
Число значений следует из сигнатуры
❓Каково максимальное число значений hashCode()?
Число значений следует из сигнатуры
int hashCode()
и равно диапазону типа int
— 2^32.👍33❤2
#Вопросы_с_собеседования
❓Что позволяет сделать PriorityQueue?
Особенностью
Используя
❓Что позволяет сделать PriorityQueue?
Особенностью
PriorityQueue
является возможность управления порядком элементов. По-умолчанию, элементы сортируются с использованием «natural ordering», но это поведение может быть переопределено при помощи объекта Comparator
, который задаётся при создании очереди. Данная коллекция не поддерживает null в качестве элементов.Используя
PriorityQueue
, можно, например, реализовать алгоритм Дейкстры для поиска кратчайшего пути от одной вершины графа к другой. Либо для хранения объектов согласно определённого свойства.👍24👎1
Учебник по Java: введение в класс String
Оттачиваем навык работы со строчками: создание, форматирование, конкатенация строк и самые часто используемые методы.
Смотреть статью
Оттачиваем навык работы со строчками: создание, форматирование, конкатенация строк и самые часто используемые методы.
Смотреть статью
Библиотека программиста
☕ Учебник по Java: введение в класс String
Оттачиваем навык работы со строчками: создание, форматирование, конкатенация строк и самые часто используемые методы.
👍16❤1👎1
#Вопросы_с_собеседования
Что такое shutdownhook?
Shutdownhook — это поток, который неявно вызывается до завершения работы JVM(виртуальная машина Java). Таким образом, мы можем использовать его для очистки ресурса или сохранения состояния, когда виртуальная машина Java выключается нормально или внезапно.
Мы можем добавить shutdown hook, используя следующий метод:
Runtime.getRuntime().addShutdownHook(new ShutdownHookThreadExample());
Что такое shutdownhook?
Shutdownhook — это поток, который неявно вызывается до завершения работы JVM(виртуальная машина Java). Таким образом, мы можем использовать его для очистки ресурса или сохранения состояния, когда виртуальная машина Java выключается нормально или внезапно.
Мы можем добавить shutdown hook, используя следующий метод:
Runtime.getRuntime().addShutdownHook(new ShutdownHookThreadExample());
👍27
#Вопросы_с_собеседования
❓Как избежать ConcurrentModificationException во время перебора коллекции?
• Попробовать подобрать или реализовать самостоятельно другой итератор, работающий по принципу fail-safe.
• Использовать
• Преобразовать список в массив и перебирать массив.
• Блокировать изменения списка на время перебора с помощью блока
Отрицательная сторона последних двух вариантов - ухудшение производительности.
❓Как избежать ConcurrentModificationException во время перебора коллекции?
• Попробовать подобрать или реализовать самостоятельно другой итератор, работающий по принципу fail-safe.
• Использовать
ConcurrentHashMap
и CopyOnWriteArrayList
.• Преобразовать список в массив и перебирать массив.
• Блокировать изменения списка на время перебора с помощью блока
synchronized
.Отрицательная сторона последних двух вариантов - ухудшение производительности.
👍19
#Вопросы_с_собеседования
❓Напишите программу, которая узнает сколько дней прошло с начала года?
Ответ на картинке.
❓Напишите программу, которая узнает сколько дней прошло с начала года?
Ответ на картинке.
👍35👎20😱3
Глубокое погружение в Java Memory Model
В этой статье мы подробно разберем Java Memory Model (JMM) и применим полученные знания на практике.
Смотреть статью
В этой статье мы подробно разберем Java Memory Model (JMM) и применим полученные знания на практике.
Смотреть статью
Хабр
Глубокое погружение в Java Memory Model
Я провел в изучении JMM много часов и теперь делюсь с вами знаниями в простой и понятной форме. В этой статье мы подробно разберем Java Memory Model (JMM) и применим полученные знания на практике. Да,...
👍13
#Вопросы_с_собеседования
❓FileNotFoundException в какой последовательности должны идти блоки catch? Сколько блоков catch будет выполнено?
Общее правило: обрабатывать исключения нужно от «младшего» к старшему. Т.е. нельзя поставить в первый блок
Таким образом, исходя из факта, что
❓FileNotFoundException в какой последовательности должны идти блоки catch? Сколько блоков catch будет выполнено?
Общее правило: обрабатывать исключения нужно от «младшего» к старшему. Т.е. нельзя поставить в первый блок
catch(Exception ex) {}
, иначе все дальнейшие блоки catch()
уже ничего не смогут обработать, т.к. любое исключение будет соответствовать обработчику catch(Exception ex)
.Таким образом, исходя из факта, что
FileNotFoundException extends IOException
сначала нужно обработать FileNotFoundException
, а затем уже IOException
.👍43
#Вопросы_с_собеседования
❓Как и когда происходит увеличение количества корзин в HashMap?
Помимо
❓Как и когда происходит увеличение количества корзин в HashMap?
Помимо
capacity
у HashMap
есть еще поле loadFactor
, на основании которого, вычисляется предельное количество занятых корзин capacity * loadFactor
. По умолчанию loadFactor = 0.75
. По достижению предельного значения, число корзин увеличивается в 2 раза и для всех хранимых элементов вычисляется новое «местоположение» с учетом нового числа корзин.👍27
Как проверить, отсортирован ли массив в Java
Один из способов - это использование библиотеки Apache Commons Lang, которая предлагает статический служебный метод. isSorted() в ArrayUtils учебный класс.
Другие варианты проверки отсортирован ли массив можно найти здесь.
Один из способов - это использование библиотеки Apache Commons Lang, которая предлагает статический служебный метод. isSorted() в ArrayUtils учебный класс.
Другие варианты проверки отсортирован ли массив можно найти здесь.
👍28
#Вопросы_с_собеседования
❓Как перебрать все пары «ключ-значение» в Map?
Использовать метод
❓Как перебрать все пары «ключ-значение» в Map?
Использовать метод
entrySet()
, который возвращает множество Set<Map.Entry<K, V>
пар «ключ-значение».👍22👎4
👎34👍31😱3
LJV: Чему нас может научить визуализация структур данных в Java
LJV — проект, созданный в 2004 году как инструмент для преподавания языка Java студентам. Он позволяет визуализировать внутреннее устройство структур данных. В этом докладе запускается LJV на разных структурах (от String до ConcurrentSkipListMap) в разных версиях Java и разбирается, что там внутри, как оно менялось от версии к версии, и как это всё работает.
Смотреть статью
LJV — проект, созданный в 2004 году как инструмент для преподавания языка Java студентам. Он позволяет визуализировать внутреннее устройство структур данных. В этом докладе запускается LJV на разных структурах (от String до ConcurrentSkipListMap) в разных версиях Java и разбирается, что там внутри, как оно менялось от версии к версии, и как это всё работает.
Смотреть статью
Хабр
LJV: Чему нас может научить визуализация структур данных в Java
Эта статья является пересказом моего доклада на Java-конференции SnowOne 2021 года. LJV — проект, созданный в 2004 году как инструмент для преподавания языка Java студентам. Он позволяет...
👍11
#Вопросы_с_собеседования
❓Напишите минимальный неблокирующий стек (всего два метода — push() и pop()) с использованием Semaphore
Ответ на картинке.
❓Напишите минимальный неблокирующий стек (всего два метода — push() и pop()) с использованием Semaphore
Ответ на картинке.
👍24
#Вопросы_с_собеседования
❓Сколько создается новых объектов, когда вы добавляете новый элемент в HashMap?
Создается один новый объект статического вложенного класса
❓Сколько создается новых объектов, когда вы добавляете новый элемент в HashMap?
Создается один новый объект статического вложенного класса
Entry<K,V>
.👍24