Exceptions, Strings, IO Flashcards

1
Q

Что означает реализация интерфейса Cloneable?

A

Это маркер-интерфейс, и он указывает, что класс который реализует этот интерфейс переопределяет метод clone()

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

Что такое клонирование объекта? Типы клонирования

A

Это создание копий объекта.
Глубокое - когда копируются все поля объекта
Неглубокое - когда копируется только сам объект, а поля ссылаются на поля объекта-оригинала.

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

Что означает реализация интерфейса AutoClosable?

A

То, что у класса есть метод void close(), и он освобождает ресурсы, которые мог захватить объект.
Только класс который реализует этот интерфейс или его наследников, может использоваться в конструкции try-with-resoures

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

Что означает реализация интерфейса Iterable?

A

Указывает на то, что экземпляр класса может использоваться в конструкции foreach

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

Что означает реализация интерфейса Comporable?

A

Означает что объекты этого класса можно отсортировать

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

Что такое классы-оболочки, зачем они используются?

A

Это объектное представление простых типов.

Используется везде где нужно использовать объект а не примитив

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

Что такое класс Object и какие методы есть в этом классе?

A
public
wait(), notify(), notifyAll()
toString()
hashcode()
getClass()
equals(Object obj)

protected%
clone()
finalize()

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

Какой класс называют immutable, а какой mutable?

A

Immutable - класс, экземпляр которого может иметь только одно внутреннее состояние, в течении жизненного цикла. При изменении такого объекта создается всегда новый объект.

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

Какие immutable классы вы знаете?

A
String
обертки примитивов
java.math.BigInteger
java.math.BigDecimal
java.io.File
java.util.Locale
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Как сделать immutable объект

A

Не делать setter методов
Все поля private final, инициализация через конструкторы
Запретить подклассам переопределять методы
Методы не должны изменять внутреннее состояние текущего объекта
При необходимости именять объект, нужно клонировать его и работать с его копией.
Сделать конструктор private и создавать экземпляры через фабричный метод

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

Какие свойства у immutable объекта?

A

Безопасность (неизменяемость)
Потокобезопасность
Производительность

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

Объясните потокобезопасность immutable объектов?

A

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

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

Объясните производительность immutable объектов?

A

Их можно кэшировать и запрещать делать одинаковые по контенту объекты
hashcode можно считать всего один раз, при создании объекта

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

Главный недостаток immutable объектов?

A

Их нельзя изменять. Если есть потребность их изменять падает очень производительность.

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

Что делает со строкой метод intern()?

A

Кладет строку в пул строк и возвращает ссылку.

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

Какой из классов String, StringBuffer,StringBuilder объявлен как final?

A

Все

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

Вам нужно создать строку, содержащую 1000000 случайных чисел, разделенных запятой. Как это сделать?

A

Использовать класс StringBuilder и метод append()
String не использовать потому что immutable
StringBuffer - не использовать потому что медленнее из-за потокобезопасности

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

Чем отличается String, StringBuffer и StringBuilder

A

String - immutable
StringBuilder StringBuffer - mutable
StringBuffer - потокобезопасный, StringBuilder - нет

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q
Сколько объектов будет создано
String s1 = new String("abc");
String s2 = "abc";
A

Два
Один строковый литерал “abc”
Второй new

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

Почему строки удобно использовать как ключи в HashMap?

A

Строки immutable

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q
String s1 =new String("abc");
String s2 =new String("abc");
System.out.println(s1==s2);
A

false

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q
String s1 = "abc";
String s2 =new String("abc");
s2.intern();
System.out.println(s1==s2);
A

false

23
Q
Сколько объектов будет создано?
String s1 =new String("Hello");
String s2 =new String("Hello");
A

Три
“Hello” строковый литерал - объект
new String() два раза это два создания объекта
У них всех разные ссылки

24
Q

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

A
Arraycopy()
currentTimeMillis()
exit(int status)
gc()
runFinalization()
25
Q

Как изменить размер массива после его создания?

A

Именять размер массива после его создания нельзя

26
Q

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

A

java. util.Arrays.sort()

java. util.Collections.sort()

27
Q

Массивы в Java это объекты или примитивы?

A

Это объекты хранятся в heap

28
Q

Какое отличие между классами File и RandomAccessFile?

A

File знает про файлы и директории в локальной файловой системе
RandomAccessFile работает с данными внутри одного файла

29
Q

Что такое поток данных (stream)?

A

Это последовательность байтов для ввода или вывода

30
Q

Какое отличие между иерархиями классов Reader/Writer и InputStream/OutputStream?

A

Reaader/Writer - ориентированные на текстовые символы

InputStream/OutputStream ориентированны на байты

31
Q

Какие Reader/Writer есть в JDK?

A
BufferReader
CharArrayReader
FilterReader
InputStreamReader
PipedReader
StringReader
32
Q

Какие стримы вы знаете в JDK?

A
Byte Streams
Character Streams
Buffered Streams
Scanning and Formatting
I/O from Command Line
Data Streams
Object
33
Q

Какой класс позволяет читать объекты на прямую с потока?

A

ObjectInputStream

34
Q

Что такое сериализация и десериализация?

A

Сериализация - процесс сохранения состояния объекта в байтовый поток.
Десериализация - процесс востановление объекта из байтового потока

35
Q

На что указывается ключевое слово transient?

A

Используется для переменных и такие переменные не будут сериализоваться.

36
Q

Как сделать класс сериализуемым

A

Пометить его маркер-интерфейсом java.io.Serializable
Все поля должны быть serializable, или быть помечены как transient
должен присутствовать serialVersionUID

37
Q

Можно ли управлять процессом сериализации объекта?

A

Да, можно для этого нужно реализовать интерфейс Externalizable, в котором есть два метода: readExternal(ObjectInput in)
writeExternal(ObjectOutput out)

38
Q

Что такое piped streams?

A
Это streams объединяющий несколько потоков вместе
PipedInputStream
PiperOutputStream
PipedReader
PipedWriter
39
Q

Что такое serialVersionUID и для чего он используется?

A

Это hashcode для сериализуемого объекта. Он содержит информацию об имени класса, полей, типа полей, реализованных интерфейсах и супер классов

40
Q

Что такое Socket?

A

Это один конец двухстороннего соединения программ, которое работает через сеть.

41
Q

Что нужно что бы создать TCP Socket?

A

локальный и удаленые IP адреса и номер порта

42
Q

Какие есть два типа Exceptions в Java?

A

Checked exceptions

Unchecked Exceptions

43
Q

Чем отличается Exceptions от Error?

A

Exception и Error наследуются от Throwable
Error - ситуации которые программа не может ожидать и не может обработать
Exception - ситуации которые программа может ожидать и обработать

44
Q

Чем отличается throw от throws?

A

throw бросает exception

throws описывает что метод может бросать exceptions

45
Q

Может ли конструктор бросать исключения?

A

Да

46
Q

Предназначение finally блока?

A

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

47
Q

Что происходит с объектом Exception после обработки исключительной ситуации?

A

Уничтожается сборщиком мусора при следующей сборке

48
Q

Какие методы определены в классе Exception?

A

Класс Exception не определяет никаких методов, все наследуются от Throwable
getMessage()
getCause()
printStackTrace()

49
Q

Что такое try-with-resources и какое условие его использования?

A

Это конструктор для авто-закрытия ресурсов

Нужно чтобы ресурс реализовывал интерфейс java.lang.AutoClosable или интерфейсы которые от него наследуются

50
Q

Как создать собственное исключение?

A

Наследоваться от класса Exception или RuntimeException

51
Q

Может ли быть пустой catch block

A

Да

52
Q

Какие части могут отсутствовать в блоке try-catch-finally?

A

try должен быть всегда

С try должен быть либо catch либо finally либо и то и другое

53
Q

Может ли finnaly block не выполниться?

A

Может

54
Q

Когда finnaly блок не выполняются?

A

VM обвалится или ее вырубят во время выполнения try-catch
В потоке, когда будет выполнятся блок try-catch прервется поток либо его уничтожат
В try-catch будет вызван System.exit(0)