#Вопросы_с_собеседования
❓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
Класс AbstractSet
Класс
Подробнее можно почитать здесь.
Класс
AbstractSet
в Java является частью Java Collection Framework , которая реализует интерфейс Collection и расширяет класс AbstractCollection
. Он обеспечивает скелетную реализацию интерфейса Set. Этот класс не переопределяет какие-либо реализации из класса AbstractCollection
, а просто добавляет реализации для методов equals() и hashCode().Подробнее можно почитать здесь.
👍12
#Вопросы_с_собеседования
❓Какие разновидности сборщиков мусора реализованы в виртуальной машине HotSpot?
Java HotSpot VM предоставляет разработчикам на выбор четыре различных сборщика мусора:
• Serial (последовательный) — самый простой вариант для приложений с небольшим объемом данных и не требовательных к задержкам. На данный момент используется сравнительно редко, но на слабых компьютерах может быть выбран виртуальной машиной в качестве сборщика по умолчанию. Использование Serial GC включается опцией
• Parallel (параллельный) — наследует подходы к сборке от последовательного сборщика, но добавляет параллелизм в некоторые операции, а также возможности по автоматической подстройке под требуемые параметры производительности. Параллельный сборщик включается опцией
• Concurrent Mark Sweep (CMS) — нацелен на снижение максимальных задержек путем выполнения части работ по сборке мусора параллельно с основными потоками приложения. Подходит для работы с относительно большими объемами данных в памяти. Использование CMS GC включается опцией
• Garbage-First (G1) — создан для замены CMS, особенно в серверных приложениях, работающих на многопроцессорных серверах и оперирующих большими объемами данных. G1 включается опцией Java
❓Какие разновидности сборщиков мусора реализованы в виртуальной машине HotSpot?
Java HotSpot VM предоставляет разработчикам на выбор четыре различных сборщика мусора:
• Serial (последовательный) — самый простой вариант для приложений с небольшим объемом данных и не требовательных к задержкам. На данный момент используется сравнительно редко, но на слабых компьютерах может быть выбран виртуальной машиной в качестве сборщика по умолчанию. Использование Serial GC включается опцией
-XX:+UseSerialGC
.• Parallel (параллельный) — наследует подходы к сборке от последовательного сборщика, но добавляет параллелизм в некоторые операции, а также возможности по автоматической подстройке под требуемые параметры производительности. Параллельный сборщик включается опцией
-XX:+UseParallelGC
.• Concurrent Mark Sweep (CMS) — нацелен на снижение максимальных задержек путем выполнения части работ по сборке мусора параллельно с основными потоками приложения. Подходит для работы с относительно большими объемами данных в памяти. Использование CMS GC включается опцией
-XX:+UseConcMarkSweepGC
.• Garbage-First (G1) — создан для замены CMS, особенно в серверных приложениях, работающих на многопроцессорных серверах и оперирующих большими объемами данных. G1 включается опцией Java
-XX:+UseG1GC
.👍12❤2👎1
👍30😱10👎6
#Вопросы_с_собеседования
❓Как поведёт себя уже инстанциированный итератор для collection, если вызвать collection.remove()?
Ответ:
При следующем вызове методов итератора будет выброшено ConcurrentModificationException.
❓Как поведёт себя уже инстанциированный итератор для collection, если вызвать collection.remove()?
Ответ:
👍22❤3
Парсинг JSON с помощью Jackson
Jackson в основном известен как библиотека, которая конвертирует строки JSON и простые объекты Java (англ POJO — Plain Old Java Object).
Смотреть статью
Jackson в основном известен как библиотека, которая конвертирует строки JSON и простые объекты Java (англ POJO — Plain Old Java Object).
Смотреть статью
Хабр
Парсинг JSON с помощью Jackson
Большая часть веба на сегодняшний день обменивается данными в формате JSON. Веб-серверы, веб-приложения и мобильные приложения, даже устройства IoT общаются друг с другом, используя JSON. Простой и...
👍11
Spark Framework
Spark — оптимальный выбор для программистов, разрабатывающих веб-приложения на Java. В нём можно быстро и без усилий строить бэкенд сайтов. Spark поддерживает практически все функции Java 8 и имеет выразительный API.
Документация находиться здесь.
Spark — оптимальный выбор для программистов, разрабатывающих веб-приложения на Java. В нём можно быстро и без усилий строить бэкенд сайтов. Spark поддерживает практически все функции Java 8 и имеет выразительный API.
Документация находиться здесь.
👍16❤2