Какие подклассы класса Reader вы знаете, для чего они предназначены?
• Reader — абстрактный класс, описывающий символьный ввод;
• BufferedReader — буферизованный входной символьный поток;
• CharArrayReader — входной поток, который читает из символьного массива;
• FileReader — входной поток, читающий файл;
• FilterReader — абстрактный класс, предоставляющий интерфейс для классов-надстроек;
• InputStreamReader — входной поток, транслирующий байты в символы;
• LineNumberReader — входной поток, подсчитывающий строки;
• PipedReader — входной канал;
• PushbackReader — входной поток, позволяющий возвращать символы обратно в поток;
• StringReader — входной поток, читающий из строки.
• Reader — абстрактный класс, описывающий символьный ввод;
• BufferedReader — буферизованный входной символьный поток;
• CharArrayReader — входной поток, который читает из символьного массива;
• FileReader — входной поток, читающий файл;
• FilterReader — абстрактный класс, предоставляющий интерфейс для классов-надстроек;
• InputStreamReader — входной поток, транслирующий байты в символы;
• LineNumberReader — входной поток, подсчитывающий строки;
• PipedReader — входной канал;
• PushbackReader — входной поток, позволяющий возвращать символы обратно в поток;
• StringReader — входной поток, читающий из строки.
Опишите иерархию исключений.
Исключения делятся на несколько классов, но все они имеют общего предка — класс Throwable, потомками которого являются классы Exception и Error.
Ошибки (Errors) представляют собой более серьёзные проблемы, которые, согласно спецификации Java, не следует обрабатывать в собственной программе, поскольку они связаны с проблемами уровня JVM. Например, исключения такого рода возникают, если закончилась память, доступная виртуальной машине.
Исключения (Exceptions) являются результатом проблем в программе, которые в принципе решаемы, предсказуемы и последствия которых возможно устранить внутри программы. Например, произошло деление целого числа на ноль.
Исключения делятся на несколько классов, но все они имеют общего предка — класс Throwable, потомками которого являются классы Exception и Error.
Ошибки (Errors) представляют собой более серьёзные проблемы, которые, согласно спецификации Java, не следует обрабатывать в собственной программе, поскольку они связаны с проблемами уровня JVM. Например, исключения такого рода возникают, если закончилась память, доступная виртуальной машине.
Исключения (Exceptions) являются результатом проблем в программе, которые в принципе решаемы, предсказуемы и последствия которых возможно устранить внутри программы. Например, произошло деление целого числа на ноль.
Чем отличается переопределение от перегрузки?
Перегрузка происходит в пределах одного класса, переопределение — в рамках иерархии классов.
Перегруженные методы должны отличаться сигнатурой, переопределенные — иметь одинаковую.
Перегрузка не нарушает инкапсуляцию, при переопределении может нарушаться.
Перегруженные методы не связаны с полиморфизмом, переопределенные позволяют реализовать полиморфное поведение.
В целом, перегрузка связана с компиляцией, а переопределение — с выполнением кода.
#вопросы_с_собеседований
Перегрузка происходит в пределах одного класса, переопределение — в рамках иерархии классов.
Перегруженные методы должны отличаться сигнатурой, переопределенные — иметь одинаковую.
Перегрузка не нарушает инкапсуляцию, при переопределении может нарушаться.
Перегруженные методы не связаны с полиморфизмом, переопределенные позволяют реализовать полиморфное поведение.
В целом, перегрузка связана с компиляцией, а переопределение — с выполнением кода.
#вопросы_с_собеседований
Когда стоит изменять значение поля serialVersionUID?
serialVersionUID нужно изменять при внесении в класс несовместимых изменений, например при удалении какого-либо его атрибута.
serialVersionUID нужно изменять при внесении в класс несовместимых изменений, например при удалении какого-либо его атрибута.
Что такое «ссылка на метод»?
Если существующий в классе метод уже делает всё, что необходимо, то можно воспользоваться механизмом method reference (ссылка на метод) для непосредственной передачи этого метода. Такая ссылка передается в виде:
• имя_класса::имя_статического_метода для статического метода;
• объект_класса::имя_метода для метода экземпляра;
• название_класса::new для конструктора.
Результат будет в точности таким же, как в случае определения лямбда-выражения, которое вызывает этот метод.
Ссылки на методы потенциально более эффективны, чем использование лямбда-выражений. Кроме того, они предоставляют компилятору более качественную информацию о типе и при возможности выбора между использованием ссылки на существующий метод и использованием лямбда-выражения, следует всегда предпочитать использование ссылки на метод.
Если существующий в классе метод уже делает всё, что необходимо, то можно воспользоваться механизмом method reference (ссылка на метод) для непосредственной передачи этого метода. Такая ссылка передается в виде:
• имя_класса::имя_статического_метода для статического метода;
• объект_класса::имя_метода для метода экземпляра;
• название_класса::new для конструктора.
Результат будет в точности таким же, как в случае определения лямбда-выражения, которое вызывает этот метод.
Ссылки на методы потенциально более эффективны, чем использование лямбда-выражений. Кроме того, они предоставляют компилятору более качественную информацию о типе и при возможности выбора между использованием ссылки на существующий метод и использованием лямбда-выражения, следует всегда предпочитать использование ссылки на метод.
Из за чего может возникать NoClassDefFoundError, NoSuchMethodError?
🔸 NoClassDefFoundError может возникнуть, если нужной библиотеки с этим классом нет в classpath
🔸 NoSuchMethodError может возникнуть из-за несовместимости ваших библиотек, если зависимая библиотека A вызывает метод из старой версии библиотеки B, но в classpath есть более новая версия библиотеки B, c другой сигнатурой этого метода
🔸 NoClassDefFoundError может возникнуть, если нужной библиотеки с этим классом нет в classpath
🔸 NoSuchMethodError может возникнуть из-за несовместимости ваших библиотек, если зависимая библиотека A вызывает метод из старой версии библиотеки B, но в classpath есть более новая версия библиотеки B, c другой сигнатурой этого метода
Какие классы позволяют ускорить чтение/запись за счет использования буфера?
• BufferedInputStream(InputStream in)/BufferedInputStream(InputStream in, int size),
• BufferedOutputStream(OutputStream out)/BufferedOutputStream(OutputStream out, int size),
• BufferedReader(Reader r)/BufferedReader(Reader in, int sz),
• BufferedWriter(Writer out)/BufferedWriter(Writer out, int sz)
• BufferedInputStream(InputStream in)/BufferedInputStream(InputStream in, int size),
• BufferedOutputStream(OutputStream out)/BufferedOutputStream(OutputStream out, int size),
• BufferedReader(Reader r)/BufferedReader(Reader in, int sz),
• BufferedWriter(Writer out)/BufferedWriter(Writer out, int sz)
Прямой эфир «Технический этап собеседования: разбор задач и ошибок»
🕐 Когда?
29 августа в 19:00 мск
🗣️ Кто спикер?
Алексей Бочкарев | Engineering Manager at FAANG
🦥 Где регистрироваться?
Здесь – https://proglib.io/w/e67c7b97
🌝 О чем поговорим?
– Комбинаторика и комбинаторные числа: определение и практические примеры
– Основные идеи динамического программирования
– Идеи рекурсии и примеры, включая inorder обход двоичного дерева
– Графы и способы их представления
– Примеры различных типов асимптотической сложности
– Распространенные ошибки в коде, как избегать обращения за границы массива, разыменования нулевого указателя, некорректная логика
☄️ Регистрируйтесь, будет интересно – https://proglib.io/w/e67c7b97
🕐 Когда?
29 августа в 19:00 мск
🗣️ Кто спикер?
Алексей Бочкарев | Engineering Manager at FAANG
🦥 Где регистрироваться?
Здесь – https://proglib.io/w/e67c7b97
🌝 О чем поговорим?
– Комбинаторика и комбинаторные числа: определение и практические примеры
– Основные идеи динамического программирования
– Идеи рекурсии и примеры, включая inorder обход двоичного дерева
– Графы и способы их представления
– Примеры различных типов асимптотической сложности
– Распространенные ошибки в коде, как избегать обращения за границы массива, разыменования нулевого указателя, некорректная логика
☄️ Регистрируйтесь, будет интересно – https://proglib.io/w/e67c7b97
Какими свойствами обладает порождаемое equals() отношение эквивалентности?
☕️ Рефлексивность: для любой ссылки на значение x, x.equals(x) вернет true;
☕️ Симметричность: для любых ссылок на значения x и y, x.equals(y) должно вернуть true, тогда и только тогда, когда y.equals(x) возвращает true.
☕️ Транзитивность: для любых ссылок на значения x, y и z, если x.equals(y) и y.equals(z) возвращают true, тогда и x.equals(z) вернёт true;
☕️ Непротиворечивость: для любых ссылок на значения х и у, если несколько раз вызвать х.equals(y), постоянно будет возвращаться значение true либо постоянно будет возвращаться значение false при условии, что никакая информация, используемая при сравнении объектов, не поменялась.
Для любой ненулевой ссылки на значение х выражение х.equals(null) должно возвращать false.
☕️ Рефлексивность: для любой ссылки на значение x, x.equals(x) вернет true;
☕️ Симметричность: для любых ссылок на значения x и y, x.equals(y) должно вернуть true, тогда и только тогда, когда y.equals(x) возвращает true.
☕️ Транзитивность: для любых ссылок на значения x, y и z, если x.equals(y) и y.equals(z) возвращают true, тогда и x.equals(z) вернёт true;
☕️ Непротиворечивость: для любых ссылок на значения х и у, если несколько раз вызвать х.equals(y), постоянно будет возвращаться значение true либо постоянно будет возвращаться значение false при условии, что никакая информация, используемая при сравнении объектов, не поменялась.
Для любой ненулевой ссылки на значение х выражение х.equals(null) должно возвращать false.
Будет ли работать HashMap, если все добавляемые ключи будут иметь одинаковый hashCode()?
Ответ:
Да, будет, но в этом случае HashMap вырождается в связный список и теряет свои преимущества.
Ответ:
Каким образом реализованы методы hashCode() и equals() в классе Object?
Реализация метода Object.equals() сводится к проверке на равенство двух ссылок:
public boolean equals(Object obj) {
return (this == obj);
}
Реализация метода Object.hashCode() описана как native, т.е. определенной не с помощью Java кода и обычно возвращает адрес объекта в памяти:
public native int hashCode();
Реализация метода Object.equals() сводится к проверке на равенство двух ссылок:
public boolean equals(Object obj) {
return (this == obj);
}
Реализация метода Object.hashCode() описана как native, т.е. определенной не с помощью Java кода и обычно возвращает адрес объекта в памяти:
public native int hashCode();
Можно ли перегружать метод main() в Java?
Да, метод main() может быть перегружен, но JVM или виртуальная машина Java вызывает только исходный метод main().
Да, метод main() может быть перегружен, но JVM или виртуальная машина Java вызывает только исходный метод main().
Что такое исключение? Какой пакет содержит все определения классов исключений в Java?
Исключения (Exceptions) — это нештатные ситуации, возникающие во время выполнения программы. Они могут произойти в результате неправильного ввода пользователем или неправильной логики кодера. Пакет java.lang.Exception содержит все определения классов исключений в Java.
Исключения (Exceptions) — это нештатные ситуации, возникающие во время выполнения программы. Они могут произойти в результате неправильного ввода пользователем или неправильной логики кодера. Пакет java.lang.Exception содержит все определения классов исключений в Java.
Почему в некоторых интерфейсах вообще не определяют методов?
Это так называемые маркерные интерфейсы. Они просто указывают, что класс относится к определенному типу.
Примером может послужить интерфейс Clonable, который указывает на то, что класс поддерживает механизм клонирования.
Это так называемые маркерные интерфейсы. Они просто указывают, что класс относится к определенному типу.
Примером может послужить интерфейс Clonable, который указывает на то, что класс поддерживает механизм клонирования.
Что такое стек-трейс?
Стек-трейс (stack trace) представляет собой список вызовов методов в обратном хронологическом порядке, начиная с метода, в котором произошло исключение. Стек-трейс позволяет отследить, какие методы были вызваны перед возникновением исключения, и предоставляет информацию о местоположении, где произошло исключение.
Стек-трейс (stack trace) представляет собой список вызовов методов в обратном хронологическом порядке, начиная с метода, в котором произошло исключение. Стек-трейс позволяет отследить, какие методы были вызваны перед возникновением исключения, и предоставляет информацию о местоположении, где произошло исключение.
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
☕Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие профильные каналы
Библиотека фронтендера
Библиотека шарписта
Библиотека мобильного разработчика
Библиотека хакера
Библиотека питониста
Библиотека devops’a
Библиотека тестировщика
Библиотека пхпшника
💼Каналы с вакансиями
Вакансии по питону, Django, Flask
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии по C#, .NET, Unity
Вакансии по PHP, Symfony, Laravel
Вакансии по DevOps & SRE
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
☕Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие профильные каналы
Библиотека фронтендера
Библиотека шарписта
Библиотека мобильного разработчика
Библиотека хакера
Библиотека питониста
Библиотека devops’a
Библиотека тестировщика
Библиотека пхпшника
💼Каналы с вакансиями
Вакансии по питону, Django, Flask
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии по C#, .NET, Unity
Вакансии по PHP, Symfony, Laravel
Вакансии по DevOps & SRE
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Почему хранить пароль предпочтительнее в char[]/byte[], а не в String?
☕ Строка в виде литерала сразу раскрывает пароль, плюс она всегда хранится в string-пуле.
☕ byte[]/char[] возможно сбросить после использования, и удалить все ссылки на него.
☕ Строка в виде литерала сразу раскрывает пароль, плюс она всегда хранится в string-пуле.
☕ byte[]/char[] возможно сбросить после использования, и удалить все ссылки на него.
Сколько различных типов конструкторов существует в Java?
В Java есть 2 типа конструкторов:
1) Конструктор по умолчанию — не принимает никаких параметров.
2) Параметризованный конструктор — принимает как минимум один параметр.
В Java есть 2 типа конструкторов:
1) Конструктор по умолчанию — не принимает никаких параметров.
2) Параметризованный конструктор — принимает как минимум один параметр.