Что такое Dead lock?
Случай когда у нас выполняются два потока(A, B) и наш первый поток(А) заблокировал метод a() и второй поток(В) заблокировал метод b() и в то же время поток А пытается получить доступ к методу b(), а поток B пытается получить доступ к методу а() называют dead lock.
Случай когда у нас выполняются два потока(A, B) и наш первый поток(А) заблокировал метод a() и второй поток(В) заблокировал метод b() и в то же время поток А пытается получить доступ к методу b(), а поток B пытается получить доступ к методу а() называют dead lock.
👍34💯2
👍29🥴10🌚3
Зачем используют потоки-демоны в Java?
Потоки-демоны это "служебные" потоки, которые работают в фоновом процессе. Они служат для "обеспечения всем необходимым" основные потоки выполнения. В случае завершения всех основных потоков потоки-демоны завершатся автоматически, не дожидаясь окончания их выполнения.
Потоки-демоны это "служебные" потоки, которые работают в фоновом процессе. Они служат для "обеспечения всем необходимым" основные потоки выполнения. В случае завершения всех основных потоков потоки-демоны завершатся автоматически, не дожидаясь окончания их выполнения.
👍32
Какой результат выведет следующая программа?
Anonymous Quiz
38%
Hello
2%
null
8%
Ошибку при выполнении
52%
Ошибку компиляции
👍22🌚4
Что такое Future в Java?
Future - это интерфейс Java который находится в пакете java.util.concurrent. Future представляет методы для определения того была ли задача выполнена, ожидание выполнения для получения результата, получение результата уже выполненной задачи. В глобальном плане Future можно описать следующим образом - мы определяем задачу для Future, Future выполняет эту задачу независимо от нас, мы получаем результат.
Future - это интерфейс Java который находится в пакете java.util.concurrent. Future представляет методы для определения того была ли задача выполнена, ожидание выполнения для получения результата, получение результата уже выполненной задачи. В глобальном плане Future можно описать следующим образом - мы определяем задачу для Future, Future выполняет эту задачу независимо от нас, мы получаем результат.
👍30
Какой результат выведет следующая программа?
Anonymous Quiz
26%
0
51%
100
5%
200
18%
Ошибку компиляции
👍27🤔11👏5🤯3
Дайте определение абстракции
Абстракция - процесс выделения общих значений и характеристик объекта, исключая незначительные, которые будут определены в конкретных наследниках.
Абстракция - процесс выделения общих значений и характеристик объекта, исключая незначительные, которые будут определены в конкретных наследниках.
👍35🤨2
Предскажите результат.
Anonymous Quiz
58%
Main.main(String[] arr) is called
5%
Main.main() is called
6%
Ошибка при выполнении
31%
Ошибка компиляции
👍28👏3
В чем преимущество ООП?
Главный плюс ООП подхода в том что мы характеризуем и описываем реальные объекты из мира - счет в банке, товар в магазине, машина и прочее. Так же ряд преимуществ нам дает наследование, полиморфизм, инкапсуляция и абстракция. Так наследование позволяет нам уйти от повторного написания одного и того же кода, абстракция позволяют нам выделить общие характеристики, а полиморфизм дает возможность использовать эти общие характеристики для разных реализаций.
Главный плюс ООП подхода в том что мы характеризуем и описываем реальные объекты из мира - счет в банке, товар в магазине, машина и прочее. Так же ряд преимуществ нам дает наследование, полиморфизм, инкапсуляция и абстракция. Так наследование позволяет нам уйти от повторного написания одного и того же кода, абстракция позволяют нам выделить общие характеристики, а полиморфизм дает возможность использовать эти общие характеристики для разных реализаций.
👍48
Какой результат выведет следующая программа?
Anonymous Quiz
21%
A.print() is called
62%
B.print() is called
3%
Ошибку при выполнении
14%
Ошибку компиляции
👍22🎉3
В чем разница между композицией и агрегацией?
Агрегация - процесс при котором мы не строго связываем объекты, то есть наш корневой объект может существовать и правильно функционировать и без инициализации объектов-полей.
Композиция - процесс при котором мы связываем объекты строго, что значит что объект не только является частью другого объекта, но и не может быть частью других объектов.
Для полного понимания следует обратиться к примерам: наш корневой объект - машина(Car). У машины есть двигатель(Engine) и пассажиры(Passenger[]). Мы можем высадить всех пассажиров(стереть массив Passenger, либо самому массиву, либо каждому месту передать значение null) и машина будет функционировать и без них - это называют агрегацией. В то же время машина не может функционировать без двигателя и данный конкретный двигатель не может "обслуживать" другую машину - если наша CarНonda Сivic, то у нее двигатель может быть только 2л и на Honda Accord мы его уже не поставим - это называется композиция.
Агрегация - процесс при котором мы не строго связываем объекты, то есть наш корневой объект может существовать и правильно функционировать и без инициализации объектов-полей.
Композиция - процесс при котором мы связываем объекты строго, что значит что объект не только является частью другого объекта, но и не может быть частью других объектов.
Для полного понимания следует обратиться к примерам: наш корневой объект - машина(Car). У машины есть двигатель(Engine) и пассажиры(Passenger[]). Мы можем высадить всех пассажиров(стереть массив Passenger, либо самому массиву, либо каждому месту передать значение null) и машина будет функционировать и без них - это называют агрегацией. В то же время машина не может функционировать без двигателя и данный конкретный двигатель не может "обслуживать" другую машину - если наша CarНonda Сivic, то у нее двигатель может быть только 2л и на Honda Accord мы его уже не поставим - это называется композиция.
👍34😢1👌1
Что такое динамическое связывание?
Что бы ответить на этот вопрос, необходимо понимать что такое само по себе связывание. И так, связывание - это наличие связи между ссылкой и кодом. Пример: ссылка на которую Вы ссылаетесь привязана к коду в котором она определена. Так же и метод привязан к месту в коде в котором он определен.
Что же такое динамическое связывание? Динамическое связывание означает что метод привязывается к конкретному коду в момент вызова, на этапе выполнения программы, на этапе создания объектов, а не при компиляции программы в байт-код.
Что бы ответить на этот вопрос, необходимо понимать что такое само по себе связывание. И так, связывание - это наличие связи между ссылкой и кодом. Пример: ссылка на которую Вы ссылаетесь привязана к коду в котором она определена. Так же и метод привязан к месту в коде в котором он определен.
Что же такое динамическое связывание? Динамическое связывание означает что метод привязывается к конкретному коду в момент вызова, на этапе выполнения программы, на этапе создания объектов, а не при компиляции программы в байт-код.
👍22🔥1😢1
Какой результат выведет следующая программа?
Anonymous Quiz
39%
foo1() foo1()foo2() foo2()foo1() foo2()
29%
foo1()foo2() foo1()foo2() foo2()foo1() foo2()foo1()
11%
foo1() foo1() foo2() foo2()
21%
Ошибку компиляции
👍18
Перечислите SOLID принципы
SOLID - это аббревиатура. Расшифровывается так:
S - Single Responsibility - означает что класс должен отвечать только за операции одного типа.
O - Open-Closed - описываемый класс должен быть открыт для расширения, но закрыт для изменений.
L - Liskov Substitution - если наш класс А является наследником класса В, то любой объект класса В может быть заменен объектом класса А без негативных последствий и нарушения функционала.
I - Interface Segregation - класс должен выполнять только те функции и задачи которые на него возложены, в ином случае это производит к потере ресурсов и появлению багов.
D - Dependency Inversion - зависимости самого низкого уровня не должны зависеть от зависимостей высшего уровня и наоборот - зависимости высшего уровня НЕ могут существовать без зависимостей низшего уровня.
SOLID - это аббревиатура. Расшифровывается так:
S - Single Responsibility - означает что класс должен отвечать только за операции одного типа.
O - Open-Closed - описываемый класс должен быть открыт для расширения, но закрыт для изменений.
L - Liskov Substitution - если наш класс А является наследником класса В, то любой объект класса В может быть заменен объектом класса А без негативных последствий и нарушения функционала.
I - Interface Segregation - класс должен выполнять только те функции и задачи которые на него возложены, в ином случае это производит к потере ресурсов и появлению багов.
D - Dependency Inversion - зависимости самого низкого уровня не должны зависеть от зависимостей высшего уровня и наоборот - зависимости высшего уровня НЕ могут существовать без зависимостей низшего уровня.
👍46