Exceptions, Strings, IO Flashcards Preview

Java Core > Exceptions, Strings, IO > Flashcards

Flashcards in Exceptions, Strings, IO Deck (54)
Loading flashcards...
1

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

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

2

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

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

3

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

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

4

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

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

5

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

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

6

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

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

7

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

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

protected%
clone()
finalize()

8

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

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

9

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

String
обертки примитивов
java.math.BigInteger
java.math.BigDecimal
java.io.File
java.util.Locale

10

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

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

11

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

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

12

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

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

13

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

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

14

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

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

15

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

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

16

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

Все

17

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

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

18

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

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

19

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

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

20

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

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

21

String s1 =new String("abc");
String s2 =new String("abc");
System.out.println(s1==s2);

false

22

String s1 = "abc";
String s2 =new String("abc");
s2.intern();
System.out.println(s1==s2);

false

23

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

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

24

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

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 ориентированны на байты