#Вопросы_с_собеседования
❓В каких пакетах расположены классы потоков ввода/вывода?
❓В каких пакетах расположены классы потоков ввода/вывода?
java.io
, java.nio
. Для работы с потоками компрессированных данных используются классы из пакета java.util.zip
.👍21
👍45😱7👎3
#Вопросы_с_собеседования
❓Почему метод clone() объявлен в классе Object, а не в интерфейсе Cloneable?
Метод
❓Почему метод clone() объявлен в классе Object, а не в интерфейсе Cloneable?
Метод
clone()
объявлен в классе Object
с указанием модификатора native
, чтобы обеспечить доступ к стандартному механизму поверхностного копирования объектов. Одновременно он объявлен и как protected
, чтобы нельзя было вызвать этот метод у не переопределивших его объектов. Непосредственно интерфейс Cloneable
является маркерным (не содержит объявлений методов) и нужен только для обозначения самого факта, что данный объект готов к тому, чтобы быть клонированным. Вызов переопределённого метода clone()
у не Cloneable
объекта вызовет выбрасывание CloneNotSupportedException
.👍27
#Вопросы_с_собеседования
Сколько элементов будет пропущено, если Iterator.nеxt() будет вызван после 10-ти вызовов Iterator.hasNext()?
Ответ:
Нисколько - hasNext() осуществляет только проверку наличия следующего элемента.
Сколько элементов будет пропущено, если Iterator.nеxt() будет вызван после 10-ти вызовов Iterator.hasNext()?
Ответ:
Нисколько - hasNext() осуществляет только проверку наличия следующего элемента.
👍21👎2
Play Framework
Play Framework позволяет легко разрабатывать расширяемые вебприложения на Java и Scala.
Play Framework позволяет легко разрабатывать расширяемые вебприложения на Java и Scala.
GitHub
GitHub - playframework/playframework: The Community Maintained High Velocity Web Framework For Java and Scala.
The Community Maintained High Velocity Web Framework For Java and Scala. - playframework/playframework
👍16
#Вопросы_с_собеседования
❓Зачем нужны и какие бывают блоки инициализации?
Блоки инициализации представляют собой код, заключенный в фигурные скобки и размещаемый внутри класса вне объявления методов или конструкторов.
• Существуют статические и нестатические блоки инициализации.
• Блок инициализации выполняется перед инициализацией класса загрузчиком классов или созданием объекта класса с помощью конструктора.
• Несколько блоков инициализации выполняются в порядке следования в коде класса.
• Блок инициализации способен генерировать исключения, если их объявления перечислены в throws всех конструкторов класса.
• Блок инициализации возможно создать и в анонимном классе.
❓Зачем нужны и какие бывают блоки инициализации?
Блоки инициализации представляют собой код, заключенный в фигурные скобки и размещаемый внутри класса вне объявления методов или конструкторов.
• Существуют статические и нестатические блоки инициализации.
• Блок инициализации выполняется перед инициализацией класса загрузчиком классов или созданием объекта класса с помощью конструктора.
• Несколько блоков инициализации выполняются в порядке следования в коде класса.
• Блок инициализации способен генерировать исключения, если их объявления перечислены в throws всех конструкторов класса.
• Блок инициализации возможно создать и в анонимном классе.
👍19
Java 17 для тех, кто не следил. Часть 1
Уже вышла Java 18, но для всех, кто сидит на LTS, по-прежнему остаётся актуальной версия 17. Такие люди могут не отслеживать постоянно фичи каждой новой версии, а спокойно заниматься своими делами и иногда навёрстывать сразу всё.
https://habr.com/ru/company/jugru/blog/652821/
Уже вышла Java 18, но для всех, кто сидит на LTS, по-прежнему остаётся актуальной версия 17. Такие люди могут не отслеживать постоянно фичи каждой новой версии, а спокойно заниматься своими делами и иногда навёрстывать сразу всё.
https://habr.com/ru/company/jugru/blog/652821/
Хабр
Java 17 для тех, кто не следил. Часть 1
Уже вышла Java 18, но для всех, кто сидит на LTS, по-прежнему остаётся актуальной версия 17. Такие люди могут не отслеживать постоянно фичи каждой новой версии, а спокойно заниматься своими делами и...
👍17❤1
#Вопросы_с_собеседования
Когда в приложении может быть выброшено исключение ClassCastException?
Когда в приложении может быть выброшено исключение ClassCastException?
ClassCastException
(потомок RuntimeException
) - исключение, которое будет выброшено при ошибке приведения типа.👍19
#Вопросы_с_собеседования
❓Как добавить 1 неделю, 1 месяц, 1 год, 10 лет к текущей дате с использованием Date Time API?
Ответ на картинке.
❓Как добавить 1 неделю, 1 месяц, 1 год, 10 лет к текущей дате с использованием Date Time API?
Ответ на картинке.
👍32
Учебник по Java: списочный массив ArrayList
ArrayList – это реализация динамического использования массива в Java.
Смотреть статью
ArrayList – это реализация динамического использования массива в Java.
Смотреть статью
Библиотека программиста
☕ Учебник по Java: списочный массив ArrayList
В продолжении серии постов о языке программировании Java поговорим об ArrayList. Для чего он нужен и как его использовать.
👍14😱1
#Вопросы_с_собеседования
❓Как одним вызовом из List получить List со всеми элементами, кроме первых и последних 3-х?
Ответ на картинке.
❓Как одним вызовом из List получить List со всеми элементами, кроме первых и последних 3-х?
Ответ на картинке.
👍39
#Вопросы_с_собеседования
❓Что такое «fail-fast поведение»?
fail-fast поведение означает, что при возникновении ошибки или состояния, которое может привести к ошибке, система немедленно прекращает дальнейшую работу и уведомляет об этом. Использование fail-fast подхода позволяет избежать недетерминированного поведения программы в течение времени.
В Java Collections API некоторые итераторы ведут себя как fail-fast и выбрасывают
Реализация такого поведения осуществляется за счет подсчета количества модификаций коллекции (modification count):
• при изменении коллекции счетчик модификаций так же изменяется;
• при создании итератора ему передается текущее значение счетчика;
• при каждом обращении к итератору сохраненное значение счетчика сравнивается с текущим, и, если они не совпадают, возникает исключение.
❓Что такое «fail-fast поведение»?
fail-fast поведение означает, что при возникновении ошибки или состояния, которое может привести к ошибке, система немедленно прекращает дальнейшую работу и уведомляет об этом. Использование fail-fast подхода позволяет избежать недетерминированного поведения программы в течение времени.
В Java Collections API некоторые итераторы ведут себя как fail-fast и выбрасывают
ConcurrentModificationException
, если после его создания была произведена модификация коллекции, т.е. добавлен или удален элемент напрямую из коллекции, а не используя методы итератора.Реализация такого поведения осуществляется за счет подсчета количества модификаций коллекции (modification count):
• при изменении коллекции счетчик модификаций так же изменяется;
• при создании итератора ему передается текущее значение счетчика;
• при каждом обращении к итератору сохраненное значение счетчика сравнивается с текущим, и, если они не совпадают, возникает исключение.
👍25❤1
#Вопросы_с_собеседования
Как вывести на экран 5 случайных чисел в порядке возрастания в одну строку?
Ответ на картинке.
Как вывести на экран 5 случайных чисел в порядке возрастания в одну строку?
Ответ на картинке.
👍49
Java RegEx: использование регулярных выражений на практике
Рассмотрим регулярные выражения в Java, затронув синтаксис и наиболее популярные конструкции, а также продемонстрируем работу RegEx на примерах.
Смотреть статью
Рассмотрим регулярные выражения в Java, затронув синтаксис и наиболее популярные конструкции, а также продемонстрируем работу RegEx на примерах.
Смотреть статью
Tproger
Регулярные выражения в Java: спецификации языка, примеры, задачи
Рассмотрим регулярные выражения в Java с учётом особенностей языка и с практическим применением для решения нескольких задач.
👍8
#Вопросы_с_собеседования
❓Как, используя LinkedHashMap, сделать кэш c «invalidation policy»?
Необходимо использовать LRU-алгоритм (Least Recently Used algorithm) и
Стоит заметить, что
❓Как, используя LinkedHashMap, сделать кэш c «invalidation policy»?
Необходимо использовать LRU-алгоритм (Least Recently Used algorithm) и
LinkedHashMap
с access-order. В этом случае при обращении к элементу он будет перемещаться в конец списка, а наименее используемые элементы будут постепенно группироваться в начале списка. Так же в стандартной реализации LinkedHashMap
есть метод removeEldestEntries()
, который возвращает true
, если текущий объект LinkedHashMap
должен удалить наименее используемый элемент из коллекции при использовании методов put()
и putAll()
.Стоит заметить, что
LinkedHashMap
не позволяет полностью реализовать LRU-алгоритм, поскольку при вставке уже имеющегося в коллекции элемента порядок итерации по элементам не меняется.👍12❤1