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);
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
Как изменить размер массива после его создания?
Именять размер массива после его создания нельзя
26
Какие инструменты в JDK есть для сортировки?
java. util.Arrays.sort() | java. util.Collections.sort()
27
Массивы в Java это объекты или примитивы?
Это объекты хранятся в heap
28
Какое отличие между классами File и RandomAccessFile?
File знает про файлы и директории в локальной файловой системе RandomAccessFile работает с данными внутри одного файла
29
Что такое поток данных (stream)?
Это последовательность байтов для ввода или вывода
30
Какое отличие между иерархиями классов Reader/Writer и InputStream/OutputStream?
Reaader/Writer - ориентированные на текстовые символы | InputStream/OutputStream ориентированны на байты
31
Какие Reader/Writer есть в JDK?
``` BufferReader CharArrayReader FilterReader InputStreamReader PipedReader StringReader ```
32
Какие стримы вы знаете в JDK?
``` Byte Streams Character Streams Buffered Streams Scanning and Formatting I/O from Command Line Data Streams Object ```
33
Какой класс позволяет читать объекты на прямую с потока?
ObjectInputStream
34
Что такое сериализация и десериализация?
Сериализация - процесс сохранения состояния объекта в байтовый поток. Десериализация - процесс востановление объекта из байтового потока
35
На что указывается ключевое слово transient?
Используется для переменных и такие переменные не будут сериализоваться.
36
Как сделать класс сериализуемым
Пометить его маркер-интерфейсом java.io.Serializable Все поля должны быть serializable, или быть помечены как transient должен присутствовать serialVersionUID
37
Можно ли управлять процессом сериализации объекта?
Да, можно для этого нужно реализовать интерфейс Externalizable, в котором есть два метода: readExternal(ObjectInput in) writeExternal(ObjectOutput out)
38
Что такое piped streams?
``` Это streams объединяющий несколько потоков вместе PipedInputStream PiperOutputStream PipedReader PipedWriter ```
39
Что такое serialVersionUID и для чего он используется?
Это hashcode для сериализуемого объекта. Он содержит информацию об имени класса, полей, типа полей, реализованных интерфейсах и супер классов
40
Что такое Socket?
Это один конец двухстороннего соединения программ, которое работает через сеть.
41
Что нужно что бы создать TCP Socket?
локальный и удаленые IP адреса и номер порта
42
Какие есть два типа Exceptions в Java?
Checked exceptions | Unchecked Exceptions
43
Чем отличается Exceptions от Error?
Exception и Error наследуются от Throwable Error - ситуации которые программа не может ожидать и не может обработать Exception - ситуации которые программа может ожидать и обработать
44
Чем отличается throw от throws?
throw бросает exception | throws описывает что метод может бросать exceptions
45
Может ли конструктор бросать исключения?
Да
46
Предназначение finally блока?
Освобождать ресурсы, которые использовались в коде, где могла произойти или произошла исключительная ситуация.
47
Что происходит с объектом Exception после обработки исключительной ситуации?
Уничтожается сборщиком мусора при следующей сборке
48
Какие методы определены в классе Exception?
Класс Exception не определяет никаких методов, все наследуются от Throwable getMessage() getCause() printStackTrace()
49
Что такое try-with-resources и какое условие его использования?
Это конструктор для авто-закрытия ресурсов | Нужно чтобы ресурс реализовывал интерфейс java.lang.AutoClosable или интерфейсы которые от него наследуются
50
Как создать собственное исключение?
Наследоваться от класса Exception или RuntimeException
51
Может ли быть пустой catch block
Да
52
Какие части могут отсутствовать в блоке try-catch-finally?
try должен быть всегда | С try должен быть либо catch либо finally либо и то и другое
53
Может ли finnaly block не выполниться?
Может
54
Когда finnaly блок не выполняются?
VM обвалится или ее вырубят во время выполнения  try-catch В потоке, когда будет выполнятся блок try-catch прервется поток либо его уничтожат В try-catch будет вызван System.exit(0)