Exceptions, Strings, IO Flashcards
Что означает реализация интерфейса Cloneable?
Это маркер-интерфейс, и он указывает, что класс который реализует этот интерфейс переопределяет метод clone()
Что такое клонирование объекта? Типы клонирования
Это создание копий объекта.
Глубокое - когда копируются все поля объекта
Неглубокое - когда копируется только сам объект, а поля ссылаются на поля объекта-оригинала.
Что означает реализация интерфейса AutoClosable?
То, что у класса есть метод void close(), и он освобождает ресурсы, которые мог захватить объект.
Только класс который реализует этот интерфейс или его наследников, может использоваться в конструкции try-with-resoures
Что означает реализация интерфейса Iterable?
Указывает на то, что экземпляр класса может использоваться в конструкции foreach
Что означает реализация интерфейса Comporable?
Означает что объекты этого класса можно отсортировать
Что такое классы-оболочки, зачем они используются?
Это объектное представление простых типов.
Используется везде где нужно использовать объект а не примитив
Что такое класс Object и какие методы есть в этом классе?
public wait(), notify(), notifyAll() toString() hashcode() getClass() equals(Object obj)
protected%
clone()
finalize()
Какой класс называют immutable, а какой mutable?
Immutable - класс, экземпляр которого может иметь только одно внутреннее состояние, в течении жизненного цикла. При изменении такого объекта создается всегда новый объект.
Какие immutable классы вы знаете?
String обертки примитивов java.math.BigInteger java.math.BigDecimal java.io.File java.util.Locale
Как сделать immutable объект
Не делать setter методов
Все поля private final, инициализация через конструкторы
Запретить подклассам переопределять методы
Методы не должны изменять внутреннее состояние текущего объекта
При необходимости именять объект, нужно клонировать его и работать с его копией.
Сделать конструктор private и создавать экземпляры через фабричный метод
Какие свойства у immutable объекта?
Безопасность (неизменяемость)
Потокобезопасность
Производительность
Объясните потокобезопасность immutable объектов?
Поскольку их нельзя изменить, потоки могут спокойно читать значения и для всех оно будет всегда одинаковым
Объясните производительность immutable объектов?
Их можно кэшировать и запрещать делать одинаковые по контенту объекты
hashcode можно считать всего один раз, при создании объекта
Главный недостаток immutable объектов?
Их нельзя изменять. Если есть потребность их изменять падает очень производительность.
Что делает со строкой метод intern()?
Кладет строку в пул строк и возвращает ссылку.
Какой из классов String, StringBuffer,StringBuilder объявлен как final?
Все
Вам нужно создать строку, содержащую 1000000 случайных чисел, разделенных запятой. Как это сделать?
Использовать класс StringBuilder и метод append()
String не использовать потому что immutable
StringBuffer - не использовать потому что медленнее из-за потокобезопасности
Чем отличается String, StringBuffer и StringBuilder
String - immutable
StringBuilder StringBuffer - mutable
StringBuffer - потокобезопасный, StringBuilder - нет
Сколько объектов будет создано String s1 = new String("abc"); String s2 = "abc";
Два
Один строковый литерал “abc”
Второй new
Почему строки удобно использовать как ключи в HashMap?
Строки immutable
hashcode вычисляется во время создания строки один раз, и не нужно его пересчитывать много раз
String s1 =new String("abc"); String s2 =new String("abc"); System.out.println(s1==s2);
false
String s1 = "abc"; String s2 =new String("abc"); s2.intern(); System.out.println(s1==s2);
false
Сколько объектов будет создано? String s1 =new String("Hello"); String s2 =new String("Hello");
Три
“Hello” строковый литерал - объект
new String() два раза это два создания объекта
У них всех разные ссылки
Какие методы класса System вы знаете?
Arraycopy() currentTimeMillis() exit(int status) gc() runFinalization()
Как изменить размер массива после его создания?
Именять размер массива после его создания нельзя
Какие инструменты в JDK есть для сортировки?
java. util.Arrays.sort()
java. util.Collections.sort()
Массивы в Java это объекты или примитивы?
Это объекты хранятся в heap
Какое отличие между классами File и RandomAccessFile?
File знает про файлы и директории в локальной файловой системе
RandomAccessFile работает с данными внутри одного файла
Что такое поток данных (stream)?
Это последовательность байтов для ввода или вывода
Какое отличие между иерархиями классов Reader/Writer и InputStream/OutputStream?
Reaader/Writer - ориентированные на текстовые символы
InputStream/OutputStream ориентированны на байты
Какие Reader/Writer есть в JDK?
BufferReader CharArrayReader FilterReader InputStreamReader PipedReader StringReader
Какие стримы вы знаете в JDK?
Byte Streams Character Streams Buffered Streams Scanning and Formatting I/O from Command Line Data Streams Object
Какой класс позволяет читать объекты на прямую с потока?
ObjectInputStream
Что такое сериализация и десериализация?
Сериализация - процесс сохранения состояния объекта в байтовый поток.
Десериализация - процесс востановление объекта из байтового потока
На что указывается ключевое слово transient?
Используется для переменных и такие переменные не будут сериализоваться.
Как сделать класс сериализуемым
Пометить его маркер-интерфейсом java.io.Serializable
Все поля должны быть serializable, или быть помечены как transient
должен присутствовать serialVersionUID
Можно ли управлять процессом сериализации объекта?
Да, можно для этого нужно реализовать интерфейс Externalizable, в котором есть два метода: readExternal(ObjectInput in)
writeExternal(ObjectOutput out)
Что такое piped streams?
Это streams объединяющий несколько потоков вместе PipedInputStream PiperOutputStream PipedReader PipedWriter
Что такое serialVersionUID и для чего он используется?
Это hashcode для сериализуемого объекта. Он содержит информацию об имени класса, полей, типа полей, реализованных интерфейсах и супер классов
Что такое Socket?
Это один конец двухстороннего соединения программ, которое работает через сеть.
Что нужно что бы создать TCP Socket?
локальный и удаленые IP адреса и номер порта
Какие есть два типа Exceptions в Java?
Checked exceptions
Unchecked Exceptions
Чем отличается Exceptions от Error?
Exception и Error наследуются от Throwable
Error - ситуации которые программа не может ожидать и не может обработать
Exception - ситуации которые программа может ожидать и обработать
Чем отличается throw от throws?
throw бросает exception
throws описывает что метод может бросать exceptions
Может ли конструктор бросать исключения?
Да
Предназначение finally блока?
Освобождать ресурсы, которые использовались в коде, где могла произойти или произошла исключительная ситуация.
Что происходит с объектом Exception после обработки исключительной ситуации?
Уничтожается сборщиком мусора при следующей сборке
Какие методы определены в классе Exception?
Класс Exception не определяет никаких методов, все наследуются от Throwable
getMessage()
getCause()
printStackTrace()
Что такое try-with-resources и какое условие его использования?
Это конструктор для авто-закрытия ресурсов
Нужно чтобы ресурс реализовывал интерфейс java.lang.AutoClosable или интерфейсы которые от него наследуются
Как создать собственное исключение?
Наследоваться от класса Exception или RuntimeException
Может ли быть пустой catch block
Да
Какие части могут отсутствовать в блоке try-catch-finally?
try должен быть всегда
С try должен быть либо catch либо finally либо и то и другое
Может ли finnaly block не выполниться?
Может
Когда finnaly блок не выполняются?
VM обвалится или ее вырубят во время выполнения try-catch
В потоке, когда будет выполнятся блок try-catch прервется поток либо его уничтожат
В try-catch будет вызван System.exit(0)