Java8, class loaders, reference types, xml Flashcards

1
Q

Какие новшества появились в Java 8?

A
Lamba expression
Method references
default method
new tools
stream API
Date Time API
Optional
Nashorn, JavaScript Engine
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Что такое лямбда выражения, какой у них синтаксис?

A

(argument)->(body)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Для чего используются лямбда выражения?

A

Уменьшение количества кода

Последовательное и параллельное выполнение

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Какая область видимости лямбда выражений?

A

Лямбда-выражения имеют доступ к области видимости в которой они были объявлены. Лямбда-выражения в отличии от локальных и анонимных классов не порождают своей области видимости объекта, то есть, не переопределяют переменную this.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Что такое функциональные интерфейсы?

A

Это интерфейсы, которые должны содержать только один абстрактный метод.
Runablr, Callable,Comparator, ActionListener

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Для используется аннотация @FunctionalInterface?

A

Для обозначения интерфейса функциональным

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Могут ли лямбда-выражения работать с статическими полями?

A

В отличии от локальных переменных, мы можем записывать значения в экземплярные поля класса и статические переменные внутри лямбда-выражений

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Для чего используется оператор ::?

A

Для получения ссылки на метод или конструктор

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Какие есть виды ссылок на методы?

A

Ссылка на статический метод (ContainingClass::staticMethodName)
Ссылка на метод конкретного объекта
(ContainingObject::instanceMethodName)
Ссылка на метод произвольного объекта конкретного типа
(ContainingType::methodName)
Ссылка на конструктор
(ClassName::new)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Как определяется какой конструктор будет передан через ClassName::new?

A

Автоматически, компилятором. Сигнатуры должны совпадать.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Что такое предикаты?

A

Предикаты - это функции, принимающие один аргумент, и возвращающие значение типа boolean.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Что позволяет делать интерфейс Function?

A

Функции принимают один аргумент и возвращают некоторый результат. Методы по умолчанию могут использоваться для построения цепочек вызовов(compose, andThen)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Что такое поставщики (suppliers) в java8?

A

поставщики (suppliers) предоставляют результат заданного типа. В отличии от функции, поставщики не принимают аргументов.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Что такое потребители(Consumers)

A

Потребители представляют собой операции, которые производятся на одним входным аргуметом

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Что такое опциональные значения(optional)

A

Optionals - это контейнер для значения, которое может быть null. Optionals не являются функциональными интерфейсами, однако удобное средство предотвращения NPE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Что такое потоки java.util.Stream?

A

java.util.Stream представляет собой последовательность элементов, над которой можно проводить операции (промежуточные - intermediate или конечные - terminal). Конечные операции возвращают результат определенного типа, а промежуточные операции возвращают тот же поток.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Что позволяют сделать потоки java.util.Stream?

A

Фильтрация
Сортировка данных
Конвертация
Поиск по шаблону

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Поддерживают ли потоки реализацию Map

A

Нет

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Что делают операции filter и forEach?

A

filter Фильтрует все элементы потока
Принимает предикат. Промежуточная над результатом.
forEach принимает функцию, которая вызывается для каждого элемента в (уже отфильтрованом) поток. Конечная операция.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Что такое операция Sorted?

A

Промежуточная
возвращает отсортированное представление потока
Сортирует в обычном порядке, если не предоставлен другой компаратор

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Что делает операция map?

A

map преобразовывает каждый элемент в другой объект при помощи переданной функции
Промежуточная

22
Q

Для чего предназначена операция match?

A

Для проверки удовлетворяет ли поток заданному предикату, используются различные операции сопоставления(match) Все операции сопоставления являются конечными и возвращается результат boolean

23
Q

Что такое операция Count?

A

Count возвращает количество элементов в потоке(long)

Конечная

24
Q

Что делает операция reduce()?

A

Производит свертку элементов потока по заданной функции(optional)

25
Как вызвать параллельный стрим?
values.parallelStream()
26
Какие новые методы добавлены к интерфейсу Map в java 8?
``` getOrDefault() forEach() replaceAll() putIfAbsent() remove(Object key, Object value) computeIfAbsent() computeIfPresent() merge() ```
27
Что представляет собой класс Clock
Содержит в себе текущее время и дату в зависимости от локали. Можно получить вреся в миллисекундах, а также инстан даты.
28
Как в java 8 представлены часовые пояса
ZoneID
29
Чем отличается LocalDate от LocalTime?
LocalDate представляет конкретную дату Localtime время с учетом часового пояса Оба immutable
30
Какое средство форматирования даты и времени?
DateTimeFormatter
31
Что позволяет аннотация Repeatable и как обходились без нее?
Аннотация Reapeatable позволяет использовать множество аннотаций одного типа
32
Что такое default method
Это метод который можно объявить в интерфейсе
33
В чем отличие между абстрактным методом и default методом в интерфейсе?
Абстрактные класс содержащие abstract методы могут хранить состояние, а точнее переменные, в с вою очередь интерфейсам это не под силу максимум что могут интерфейсы это хранить константы.
34
Можно ли переопределить default метод?
Да
35
Для чего предназначен класс StringJoiner?
Соединение коллекции строк
36
Что такое ClassLoader
Это средство, которое загружает исполняемый код в JVM
37
Какие типы ClassLoader-ов есть?
Bootstrap ClassLoader - он загружает внутренние классы JDK и пакеты java.* Extension Classloader - загружает различные пакеты расширений System Classloader - загружает классы, пути к котором указаны в переменной окружения CLASSPATH или пути, которые указаны в командной строке после ключей -classpath или -cp
38
Как работает ClassLoader?
Системный загрузчик проверит, не загружался ли данный класс ранее, если да, то возвращает данный класс из кэша. Если нет, делегирует поиск класса родительскому классу-загрузчику. Загрузчик расширений выполняет такую же процедуру Базовый загрузчик загружает класс самостоятельно
39
Как создать свой Classloader?
унаследоваться от java.lang.ClassLoader
40
Опишите процесс загрузки класса
1. Loading - происходит поиск и физическая загрузка файла класса в определенном источнике 2. Linking - проверки байт кода, подготовка структуры данных 3. Initialization - происходит выполнение статических инициализаторов определенных в классе
41
Что такое strong referebce?
это обычная ссылка в Java
42
Что такое Weak reference?
Это такая ссылка, которая не достаточно ссыльная что бы заставить достижимый объект оставаться в памяти
43
Что такое Soft reference?
Это как weak reference но они "менее охотно" избавляются от объекта
44
Что такое Phantom Reference?
Хватка такого объекта настолько незначительна, что метод get всегда возвращает null Единственное применение для такой ссылки это отслеживание когда она попадет в очередь ReferenceQueue Помещение PhantomReference объекта в ReferenceQueue свидетельствует о том что данный объект не используется и "сборщик мусора" готов его убрать из памяти
45
Какой подход к парсингу документа в SAX парсерах?
SAX парсер использует событийную модель разбора документа, парсинг происходит на лету и загружать в память сразу весь XML нет необходимости
46
Какой подход к парсингу документа в DOM парсерах?
DOM парсер сначала загружает весть исходный документ в java объект, с которым затем начинает работать
47
Какие преимущества и недостатки SAX и DOM парсеров?
DOM высокая скорость работы и очень большие затраты памяти SAX не требует больших затрат памяти, относительно быстрый, но для сложный для реализации и для изменения процесса загрузки.
48
Что такое XPath?
XPath - это язык запросов к элемента xml xhtml документа Что бы получить интересующие данные, необходимо всего ли создать запрос, описывающий эти данные. Всю черную работу выполнит интерпритатор языка XPath
49
Что такое DTD и XMLSchma?
DTD это текствый файл. который определяет атрибуты, используемые в XML, SGML, HTML or XHTML. XMLSchma - язык описания структуры XML-документа. Спецификация XML Schema является рекомендацией W3C XML Schema была задумана для определения правил, которым должен подчиняться документ.
50
Что такое POJO объект?
Plain Old Java Object - простой Java-объект не унаследованный от какого-то специфического объекта и не реализующий никаких служебных интерфейсов сверх тех, которые нужны для бизнес-модели.
51
Что такое JSR?
Java Specification Request Это некоторое соглашение или стандарт который могут реализовывать производители. Реализация JSR, как правило, означает реализацию некого API. Документы этих стандартов разрабатывает Java Community Process в которую входят различные компании.