Что такое ReadWriteLock?
Существует реализующий интерфейс
ReadWriteLock
– это интерфейс расширяющий базовый интерфейс Lock
. Используется для улучшения производительности в многопоточном процессе и оперирует парой связанных блокировок (одна - для операций чтения, другая - для записи). Блокировка чтения может удерживаться одновременно несколькими читающими потоками, до тех пор, пока не появится записывающий. Блокировка записи является эксклюзивеной.Существует реализующий интерфейс
ReadWriteLock
класс ReentrantReadWriteLock
, который поддерживает до 65535 блокировок записи и до стольки же блокировок чтения.👍19
JFreeChart
Библиотека для создания диаграмм прямо на Java — круговых, объёмных и линейных, а также графиков. Позволяет настраивать фон, оси, заголовки. Полученные диаграммы можно сохранять в JPEG и PNG форматы.
Посмотреть документацию можно здесь.
Библиотека для создания диаграмм прямо на Java — круговых, объёмных и линейных, а также графиков. Позволяет настраивать фон, оси, заголовки. Полученные диаграммы можно сохранять в JPEG и PNG форматы.
Посмотреть документацию можно здесь.
👍13
#Вопросы_с_собеседования
Правда ли, что примитивные типы данных всегда хранятся в стеке, а экземпляры ссылочных типов данных — в куче?
Ответ:
Нет. Примитивные поля экземпляра класса хранятся не в стеке, а в куче, а любой объект (всё, что создаётся при помощи оператора new) хранится в куче.
Правда ли, что примитивные типы данных всегда хранятся в стеке, а экземпляры ссылочных типов данных — в куче?
Ответ:
👍27👎6
java8-tutorial
Подробный гайд по Java 8, шаг за шагом описывающий все возможности и особенности Java. Короткие примеры грамотно иллюстрируют основные концепции: минимум текста, максимум наглядности. Данный репозиторий может быть как справочником, так и учебником.
https://github.com/winterbe/java8-tutorial
Подробный гайд по Java 8, шаг за шагом описывающий все возможности и особенности Java. Короткие примеры грамотно иллюстрируют основные концепции: минимум текста, максимум наглядности. Данный репозиторий может быть как справочником, так и учебником.
https://github.com/winterbe/java8-tutorial
GitHub
GitHub - winterbe/java8-tutorial: Modern Java - A Guide to Java 8
Modern Java - A Guide to Java 8. Contribute to winterbe/java8-tutorial development by creating an account on GitHub.
👍8😱2
Какова оценка временной сложности операций над элементами из HashMap? Гарантирует ли HashMap указанную сложность выборки элемента?
В общем случае операции добавления, поиска и удаления элементов занимают константное время.
Данная сложность не гарантируется, т.к. если хэш-функция распределяет элементы по корзинам равномерно, временная сложность станет не хуже Логарифмического времени O(log(N)), а в случае, когда хэш-функция постоянно возвращает одно и то же значение, HashMap превратится в связный список со сложностью О(n).
Пример кода двоичного поиска приведен выше.
В общем случае операции добавления, поиска и удаления элементов занимают константное время.
Данная сложность не гарантируется, т.к. если хэш-функция распределяет элементы по корзинам равномерно, временная сложность станет не хуже Логарифмического времени O(log(N)), а в случае, когда хэш-функция постоянно возвращает одно и то же значение, HashMap превратится в связный список со сложностью О(n).
Пример кода двоичного поиска приведен выше.
👍20
#Вопросы_с_собеседования
❓Сколько выделяется дополнительно памяти при вызове LinkedList.add()?
Ответ:
Создается один новый экземпляр вложенного класса Node.
❓Сколько выделяется дополнительно памяти при вызове LinkedList.add()?
Ответ:
👍25👎4
#Вопросы_с_собеседования
Что такое Spring Initializr?
Spring Initializr — это удобный способ создать проект на Spring Boot.
Для этого можно перейти на сайт Spring Initializr, выбрать инструмент управления зависимостями (Maven или Gradle), язык (Java, Kotlin или Groovy), схему упаковки (Jar или War), версию, зависимости и загрузить проект. Это создаст для нас каркас проекта и сэкономит время на настройку, поэтому мы сможем сосредоточиться на добавлении бизнес-логики.
Даже когда мы используем мастер создания нового проекта в IDE (например, STS или Eclipse с плагином STS) для создания проекта со Spring Boot, под капотом используется Spring Initializr.
Что такое Spring Initializr?
Spring Initializr — это удобный способ создать проект на Spring Boot.
Для этого можно перейти на сайт Spring Initializr, выбрать инструмент управления зависимостями (Maven или Gradle), язык (Java, Kotlin или Groovy), схему упаковки (Jar или War), версию, зависимости и загрузить проект. Это создаст для нас каркас проекта и сэкономит время на настройку, поэтому мы сможем сосредоточиться на добавлении бизнес-логики.
Даже когда мы используем мастер создания нового проекта в IDE (например, STS или Eclipse с плагином STS) для создания проекта со Spring Boot, под капотом используется Spring Initializr.
Spring Initializr
Initializr generates spring boot project with just what you need to start quickly!
👍20
#Вопросы_с_собеседования
❓Каким образом можно создать поток?
• Создать потомка класса
• Создать объект класса
• Вызвать метод
❓Каким образом можно создать поток?
• Создать потомка класса
Thread
и переопределить его метод run()
;• Создать объект класса
Thread
, передав ему в конструкторе экземпляр класса, реализующего интерфейс Runnable
. Эти интерфейс содержит метод run()
, который будет выполняться в новом потоке. Поток закончит выполнение, когда завершится его метод run()
.• Вызвать метод
submit()
у экземпляра класса реализующего интерфейс ExecutorService
, передав ему в качестве параметра экземпляр класса реализующего интерфейс Runnable
или Callable
(содержит метод call()
, в котором описывается логика выполнения).👍22
#Вопросы_с_собеседования
❓Как вывести на экран 10 случайных чисел, используя forEach()?
Ответ на картинке.
❓Как вывести на экран 10 случайных чисел, используя forEach()?
Ответ на картинке.
👍46
#Вопросы_с_собеседования
❓Чем LinkedHashSet отличается от HashSet?
❓Чем LinkedHashSet отличается от HashSet?
LinkedHashSet
отличается от HashSet
только тем, что в его основе лежит LinkedHashMap
вместо HashMap
. Благодаря этому порядок элементов при обходе коллекции является идентичным порядку добавления элементов (insertion-order). При добавлении элемента, который уже присутствует в LinkedHashSet
(т.е. с одинаковым ключом), порядок обхода элементов не изменяется.👍17
👍42👎3
#Вопросы_с_собеседования
❓Какой символ является разделителем при указании пути в файловой системе?
Для различных операционных систем символ разделителя различается. Для Windows это
В Java получить разделитель для текущей операционной системы можно через обращение к статическому полю
❓Какой символ является разделителем при указании пути в файловой системе?
Для различных операционных систем символ разделителя различается. Для Windows это
\
, для Linux - /
.В Java получить разделитель для текущей операционной системы можно через обращение к статическому полю
File.separator
.👍32
#Вопросы_с_собеседования
❓Что такое ZonedDateTime?
Документацию можно найти здесь.
❓Что такое ZonedDateTime?
java.time.ZonedDateTime
— аналог java.util.Calendar
, класс с самым полным объемом информации о временном контексте в календарной системе ISO-8601. Включает временную зону, поэтому все операции с временными сдвигами этот класс проводит с её учётом.Документацию можно найти здесь.
👍12😱3
Apache Struts
Apache Struts — фреймворк с открытым исходным кодом для создания Java EE веб-приложений. Struts был создан для того, чтобы чётко разделить модель (бизнес-логику), представление (HTML-страницы) и контроллер (отвечающий за передачу данных от модели к представлению и обратно).
https://github.com/apache/struts
Apache Struts — фреймворк с открытым исходным кодом для создания Java EE веб-приложений. Struts был создан для того, чтобы чётко разделить модель (бизнес-логику), представление (HTML-страницы) и контроллер (отвечающий за передачу данных от модели к представлению и обратно).
https://github.com/apache/struts
GitHub
GitHub - apache/struts: Apache Struts is a free, open-source, MVC framework for creating elegant, modern Java web applications
Apache Struts is a free, open-source, MVC framework for creating elegant, modern Java web applications - apache/struts
👍9