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
Q

Как вызвать параллельный стрим?

A

values.parallelStream()

26
Q

Какие новые методы добавлены к интерфейсу Map в java 8?

A
getOrDefault()
forEach()
replaceAll()
putIfAbsent()
remove(Object key, Object value)
computeIfAbsent()
computeIfPresent()
merge()
27
Q

Что представляет собой класс Clock

A

Содержит в себе текущее время и дату в зависимости от локали. Можно получить вреся в миллисекундах, а также инстан даты.

28
Q

Как в java 8 представлены часовые пояса

A

ZoneID

29
Q

Чем отличается LocalDate от LocalTime?

A

LocalDate представляет конкретную дату
Localtime время с учетом часового пояса
Оба immutable

30
Q

Какое средство форматирования даты и времени?

A

DateTimeFormatter

31
Q

Что позволяет аннотация Repeatable и как обходились без нее?

A

Аннотация Reapeatable позволяет использовать множество аннотаций одного типа

32
Q

Что такое default method

A

Это метод который можно объявить в интерфейсе

33
Q

В чем отличие между абстрактным методом и default методом в интерфейсе?

A

Абстрактные класс содержащие abstract методы могут хранить состояние, а точнее переменные, в с вою очередь интерфейсам это не под силу максимум что могут интерфейсы это хранить константы.

34
Q

Можно ли переопределить default метод?

A

Да

35
Q

Для чего предназначен класс StringJoiner?

A

Соединение коллекции строк

36
Q

Что такое ClassLoader

A

Это средство, которое загружает исполняемый код в JVM

37
Q

Какие типы ClassLoader-ов есть?

A

Bootstrap ClassLoader - он загружает внутренние классы JDK и пакеты java.*
Extension Classloader - загружает различные пакеты расширений
System Classloader - загружает классы, пути к котором указаны в переменной окружения CLASSPATH или пути, которые указаны в командной строке после ключей -classpath или -cp

38
Q

Как работает ClassLoader?

A

Системный загрузчик проверит, не загружался ли данный класс ранее, если да, то возвращает данный класс из кэша. Если нет, делегирует поиск класса родительскому классу-загрузчику.
Загрузчик расширений выполняет такую же процедуру
Базовый загрузчик загружает класс самостоятельно

39
Q

Как создать свой Classloader?

A

унаследоваться от java.lang.ClassLoader

40
Q

Опишите процесс загрузки класса

A
  1. Loading - происходит поиск и физическая загрузка файла класса в определенном источнике
  2. Linking - проверки байт кода, подготовка структуры данных
  3. Initialization - происходит выполнение статических инициализаторов определенных в классе
41
Q

Что такое strong referebce?

A

это обычная ссылка в Java

42
Q

Что такое Weak reference?

A

Это такая ссылка, которая не достаточно ссыльная что бы заставить достижимый объект оставаться в памяти

43
Q

Что такое Soft reference?

A

Это как weak reference но они “менее охотно” избавляются от объекта

44
Q

Что такое Phantom Reference?

A

Хватка такого объекта настолько незначительна, что метод get всегда возвращает null
Единственное применение для такой ссылки это отслеживание когда она попадет в очередь ReferenceQueue
Помещение PhantomReference объекта в ReferenceQueue свидетельствует о том что данный объект не используется и “сборщик мусора” готов его убрать из памяти

45
Q

Какой подход к парсингу документа в SAX парсерах?

A

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

46
Q

Какой подход к парсингу документа в DOM парсерах?

A

DOM парсер сначала загружает весть исходный документ в java объект, с которым затем начинает работать

47
Q

Какие преимущества и недостатки SAX и DOM парсеров?

A

DOM высокая скорость работы и очень большие затраты памяти
SAX не требует больших затрат памяти, относительно быстрый, но для сложный для реализации и для изменения процесса загрузки.

48
Q

Что такое XPath?

A

XPath - это язык запросов к элемента xml xhtml документа
Что бы получить интересующие данные, необходимо всего ли создать запрос, описывающий эти данные.
Всю черную работу выполнит интерпритатор языка XPath

49
Q

Что такое DTD и XMLSchma?

A

DTD это текствый файл. который определяет атрибуты, используемые в XML, SGML, HTML or XHTML.
XMLSchma - язык описания структуры XML-документа. Спецификация XML Schema является рекомендацией W3C
XML Schema была задумана для определения правил, которым должен подчиняться документ.

50
Q

Что такое POJO объект?

A

Plain Old Java Object - простой Java-объект не унаследованный от какого-то специфического объекта и не реализующий никаких служебных интерфейсов сверх тех, которые нужны для бизнес-модели.

51
Q

Что такое JSR?

A

Java Specification Request Это некоторое соглашение или стандарт который могут реализовывать производители.
Реализация JSR, как правило, означает реализацию некого API. Документы этих стандартов разрабатывает Java Community Process в которую входят различные компании.