cookie

Мы используем файлы cookie для улучшения сервиса. Нажав кнопку «Принять все», вы соглашаетесь с использованием cookies.

avatar

BZD_Java lib

Задачки по популярному языку Java, Java EE, JavaSpring. Вопросы с собеседований и вакансии. По рекламе - @cyberJohnny

Больше
Рекламные посты
189
Подписчики
Нет данных24 часа
-77 дней
-2130 дней

Загрузка данных...

Прирост подписчиков

Загрузка данных...

👨🏻‍💻 Как сделать immutable object? В Java вы можете сделать объект неизменяемым (immutable), задав его поля как final. Неизменяемый объект - это объект, который не может быть изменен после своего создания. Это обычно рекомендуется для создания объектов, которые должны оставаться постоянными во время жизни программы, такие как уникальные идентификаторы или настройки приложения. Вот пример класса Person, который является неизменяемым:
public final class Person {
    private final String name;
    private final Date birthDate;

    public Person(String name, Date birthDate) {
        this.name = name;
        this.birthDate = new Date(birthDate.getTime());
    }

    public String getName() {
        return name;
    }

    public Date getBirthDate() {
        return new Date(birthDate.getTime());
    }
}
В этом примере оба поля name и birthDate помечены как final, что делает их неизменяемыми. Конструктор класса создает новый объект Person с заданными именем и датой рождения. Обратите внимание, что для даты рождения создается новый объект Date, чтобы можно было избежать ее изменения после создания объекта Person. В целом, чтобы сделать объект неизменяемым, все его поля должны быть объявлены как final и не должны иметь сеттеры для изменения значений после создания объекта. BZD_Java lib
Показать все...
Фото недоступно
Показать все...
👨🏻‍💻 Дайте краткую характеристику immutable object. Зачем они нужны? Неизменяемые объекты (immutable objects) в Java - это объекты, которые нельзя изменить после их создания. Объекты, такие как строки (String) или числа (Integer), являются неизменяемыми. Когда вы создаете новое значение для такого объекта, на самом деле создается новый объект, и старый объект остается неизменяемым. Основное преимущество неизменяемых объектов - это их надежность и защита от изменений со стороны других частей программы. Также они обеспечивают безопасность многопоточного программирования, поскольку неизменяемые объекты могут быть разделены между несколькими потоками без риска изменений и ошибок. Также неизменяемые объекты помогают улучшить производительность программы, потому что их не нужно копировать или клонировать для сохранения неизменным. Например, вместо создания нового массива при изменении элемента в массиве, вы можете создать новый массив, который копирует все элементы и изменить нужный элемент в нем. Это будет более эффективным по времени и памяти, чем изменение изначального массива. В целом, неизменяемые объекты помогают упростить разработку и обеспечить надежность программы за счет уменьшения риска ошибок в результате непреднамеренных изменений объектов. BZD_Java lib
Показать все...
👨🏻‍💻 Объекты каких стандартных классов immutable в Java? В языке Java объекты классов String, Integer, Byte, Character, Short, Boolean, Long, Double и Float являются immutable. Это означает, что значения их полей не могут быть изменены после создания объекта. Таким образом, любые операции с ними, которые изменяют значение, на самом деле создают новый объект. Примером может быть метод substring() в классе String, который создает новый объект строки, содержащий подстроку из исходной строки. Кроме того, вы также можете создавать свои собственные immutable классы в Java, объявляя поля и устанавливая им значения только в конструкторе, а затем делая их final. Это гарантирует, что их значения не могут быть изменены после создания объекта. BZD_Java lib
Показать все...
Фото недоступно
Показать все...
👨🏻‍💻 Что такое побитовые операции? Побитовые операции в Java позволяют работать с двоичным представлением чисел на уровне отдельных битов. В Java доступны следующие побитовые операции: & (побитовое AND): возвращает 1 в каждом разряде двоичного представления, если оба операнда содержат 1, в противном случае - 0. | (побитовое OR): возвращает 1 в каждом разряде двоичного представления, если хотя бы один операнд содержит 1, в противном случае - 0. ^ (побитовое исключающее OR): возвращает 1 в каждом разряде двоичного представления, если только один из операндов содержит 1, в противном случае - 0. ~ (побитовое NOT): инвертирует каждый бит операнда. 1 становится 0 и наоборот. << (сдвиг влево): сдвигает биты левого операнда на указанное количество разрядов влево. Недостающие биты заполняются нулями. >> (сдвиг вправо): сдвигает биты левого операнда на указанное количество разрядов вправо. Недостающие биты заполняются нулями. Оставшиеся биты соответствуют знаку операнда. >>> (беззнаковый сдвиг вправо): сдвигает биты левого операнда на указанное количество разрядов вправо. Недостающие биты заполняются. BZD_Java lib
Показать все...
👨🏻‍💻 Что такое конструкторы? Какие типы знаете? Конструкторы - это методы класса в Java, которые вызываются при создании нового объекта этого класса. Их основная задача - инициализировать поля нового объекта. Существует два типа конструкторов в Java: Конструктор по умолчанию - это конструктор без параметров, который создается компилятором, если в классе не определен ни один конструктор. Он просто инициализирует все поля значениями по умолчанию. Пользовательский конструктор - это конструктор, который создается программистом и который может иметь параметры. Он может выполнять любой код и инициализировать поля объекта значениями, переданными в параметрах. Пример создания пользовательского конструктора в Java:
public class MyClass {
    int x;
    
    // Пользовательский конструктор с одним параметром
    public MyClass(int x) {
        this.x = x;
    }
}
Этот конструктор принимает один параметр x и инициализирует поле класса значением этого параметра. Ключевое слово this используется для ссылки на текущий объект класса. Вы можете создавать любое количество пользовательских конструкторов с разными параметрами. BZD_Java lib
Показать все...
Фото недоступно
Показать все...
👨🏻‍💻 В чем разница между try-with-resources и try-catch-finally при работе с ресурсами? В Java try-with-resources - это новый способ работы с ресурсами, введенный в версии JDK 7. Он автоматически закрывает используемые ресурсы после того, как выполнение блока try завершится. Таким образом, вы можете избежать вручную закрытия ресурсов в блоке finally. Пример с try-with-resources:
try (InputStream in = new FileInputStream("file.txt")) {
    // считывание данных из потока
} catch (IOException e) {
    // обработка ошибок ввода/вывода
} // здесь in будет автоматически закрыт
В то время как в блоке try-catch-finally, блок finally выполняется после того, как выполнение блока try завершилось, но перед тем, как управление передается дальше по стеку вызовов. Это означает, что блок finally может использоваться для закрытия ресурсов, открытых в блоке try. Пример с try-catch-finally:
InputStream in = null;
try {
    in = new FileInputStream("file.txt");
    // считывание данных из потока
} catch (IOException e) {
    // обработка ошибок ввода/вывода
} finally {
    if (in != null) {
        try {
            in.close();
        } catch (IOException e) {
            // обработка ошибок ввода/вывода
        }
    }
}
Таким образом, try-with-resources упрощает и уменьшает количество кода при работе с ресурсами и обеспечивает безопасное закрытие использованных ресурсов, в то время как try-catch-finally позволяет закрыть ресурсы, если они были открыты в блоке try и выполнен блок catch, и выполняется в любом случае. BZD_Java lib
Показать все...
👨🏻‍💻 Назовите все методы класса object. В Java все классы наследуются от класса Object. Некоторые методы, определенные в классе Object, включают в себя: getClass(): возвращает объект Class, который представляет класс объекта hashCode(): возвращает хэш-код объекта equals(Object obj): определяет, равен ли данный объект указанному объекту clone(): создает и возвращает копию данного объекта toString(): возвращает строковое представление объекта notify(): возобновляет выполнение потока, заблокированного на объекте notifyAll(): возобновляет выполнение всех потоков, заблокированных на данном объекте wait(): ожидает до тех пор, пока другой поток не уведомит о возможности продолжения выполнения finalize(): вызывается сборщиком мусора перед тем, как объект будет удален Важно отметить, что эти методы могут быть переопределены в производных классах, если необходимо изменить их реализацию для совместимости с конкретными требованиями приложения. BZD_Java lib
Показать все...