Java Learning
19.3K subscribers
1.59K photos
1 video
3 files
962 links
№ 5079899194

Обучающий канал по Java

Ссылка для друга - https://t.iss.one/+ZEYYht6-46w5MDM6

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/Java_per_month
Download Telegram
#Вопросы_с_собеседования

Как избежать ConcurrentModificationException во время перебора коллекции?

• Попробовать подобрать или реализовать самостоятельно другой итератор, работающий по принципу fail-safe.
• Использовать ConcurrentHashMap и CopyOnWriteArrayList.
• Преобразовать список в массив и перебирать массив.
• Блокировать изменения списка на время перебора с помощью блока synchronized.

Отрицательная сторона последних двух вариантов - ухудшение производительности.
👍19
#Вопросы_с_собеседования

Напишите программу, которая узнает сколько дней прошло с начала года?

Ответ на картинке.
👍35👎20😱3
Выключение компьютера с помощью Java

С помощью следующего фрагмента кода, вы сможете с легкостью выключить свой компьютер.
👍51😱10👎4
#Вопросы_с_собеседования

FileNotFoundException в какой последовательности должны идти блоки catch? Сколько блоков catch будет выполнено?

Общее правило: обрабатывать исключения нужно от «младшего» к старшему. Т.е. нельзя поставить в первый блок catch(Exception ex) {}, иначе все дальнейшие блоки catch() уже ничего не смогут обработать, т.к. любое исключение будет соответствовать обработчику catch(Exception ex).

Таким образом, исходя из факта, что FileNotFoundException extends IOException сначала нужно обработать FileNotFoundException, а затем уже IOException.
👍43
#Вопросы_с_собеседования

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

Помимо capacity у HashMap есть еще поле loadFactor, на основании которого, вычисляется предельное количество занятых корзин capacity * loadFactor. По умолчанию loadFactor = 0.75. По достижению предельного значения, число корзин увеличивается в 2 раза и для всех хранимых элементов вычисляется новое «местоположение» с учетом нового числа корзин.
👍27
#Вопросы_с_собеседования

Как преобразовать строку в целое число?

Ответ на картинке.
👍39
Как проверить, отсортирован ли массив в Java

Один из способов - это использование библиотеки Apache Commons Lang, которая предлагает статический служебный метод. isSorted() в ArrayUtils учебный класс.

Другие варианты проверки отсортирован ли массив можно найти здесь.
👍28
#Вопросы_с_собеседования

Как перебрать все пары «ключ-значение» в Map?

Использовать метод entrySet(), который возвращает множество Set<Map.Entry<K, V> пар «ключ-значение».
👍22👎4
👍18👎11😱1
Что выведет код сверху?
Anonymous Quiz
32%
10
24%
100
37%
99
8%
9
👎34👍31😱3
LJV: Чему нас может научить визуализация структур данных в Java

LJV — проект, созданный в 2004 году как инструмент для преподавания языка Java студентам. Он позволяет визуализировать внутреннее устройство структур данных. В этом докладе запускается LJV на разных структурах (от String до ConcurrentSkipListMap) в разных версиях Java и разбирается, что там внутри, как оно менялось от версии к версии, и как это всё работает.

Смотреть статью
👍11
#Вопросы_с_собеседования

Напишите минимальный неблокирующий стек (всего два метода — push() и pop()) с использованием Semaphore

Ответ на картинке.
👍24
#Вопросы_с_собеседования

Сколько создается новых объектов, когда вы добавляете новый элемент в 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 включается опцией -XX:+UseSerialGC.

Parallel (параллельный) — наследует подходы к сборке от последовательного сборщика, но добавляет параллелизм в некоторые операции, а также возможности по автоматической подстройке под требуемые параметры производительности. Параллельный сборщик включается опцией -XX:+UseParallelGC.

Concurrent Mark Sweep (CMS) — нацелен на снижение максимальных задержек путем выполнения части работ по сборке мусора параллельно с основными потоками приложения. Подходит для работы с относительно большими объемами данных в памяти. Использование CMS GC включается опцией -XX:+UseConcMarkSweepGC.

Garbage-First (G1) — создан для замены CMS, особенно в серверных приложениях, работающих на многопроцессорных серверах и оперирующих большими объемами данных. G1 включается опцией Java -XX:+UseG1GC.
👍122👎1
👍4