- •Что такое ооп?
- •Что такое «абстракция»?
- •Расскажите про основные понятия ооп: «класс», «объект», «интерфейс».
- •Чем различаются jre, jvm и jdk?
- •Какие существуют модификаторы доступа?
- •О чем говорит ключевое слово final?
- •Что вы знаете о функции main()?
- •Какие логические операции и операторы вы знаете?
- •Что такое тернарный оператор выбора?
- •Где и для чего используется модификатор abstract?
- •Дайте определение понятию «интерфейс». Какие модификаторы по умолчанию имеют поля и методы интерфейсов?
- •Чем абстрактный класс отличается от интерфейса? в каких случаях следует использовать абстрактный класс, а в каких интерфейс?
- •Зачем нужны и какие бывают блоки инициализации?
- •Могут ли нестатические методы перегрузить статические?
- •Как получить доступ к переопределенным методам родительского класса?
- •Можно ли объявить метод абстрактным и статическим одновременно?
- •В чем разница между членом экземпляра класса и статическим членом класса?
- •Где разрешена инициализация статических/нестатических полей?
- •Какие типы классов бывают в java?
- •Расскажите про вложенные классы. В каких случаях они применяются?
- •Что такое «статический класс»?
- •Какие существуют особенности использования вложенных классов: статических и внутренних? в чем заключается разница между ними?
- •Что такое «локальный класс»? Каковы его особенности?
- •Что такое «анонимные классы»? Где они применяются?
- •Как работает сборщик мусора?
- •Что такое «пул строк»?
- •Что такое finalize()? Зачем он нужен?
- •Что произойдет со сборщиком мусора, если выполнение метода finalize() требует ощутимо много времени, или в процессе выполнения будет выброшено исключение?
- •Чем отличаются final, finally и finalize()?
- •Расскажите про приведение типов. Что такое понижение и повышение типа?
- •Почему строка является популярным ключом в HashMap в Java?
- •Можно ли использовать строки в конструкции switch?
- •Какая основная разница между String, StringBuffer, StringBuilder?
- •Что такое класс Object? Какие в нем есть методы?
- •Какими свойствами обладает порождаемое equals() отношение эквивалентности?
- •Правила переопределения метода Object.Equals().
- •Могут ли у разных объектов быть одинаковые hashCode()?
- •Опишите иерархию исключений.
- •Какие виды исключений в Java вы знаете, чем они отличаются?
- •Какой оператор позволяет принудительно выбросить исключение?
- •О чем говорит ключевое слово throws?
- •Как написать собственное («пользовательское») исключение?
- •Опишите работу блока try-catch-finally.
- •В чем разница между классами java.Util.Collection и java.Util.Collections?
- •Как поведёт себя коллекция, если вызвать iterator.Remove()?
- •Чем отличается ArrayList от LinkedList? в каких случаях лучше использовать первый, а в каких второй?
- •Как происходит удаление элементов из ArrayList? Как меняется в этом случае размер ArrayList?
- •LinkedList — это односвязный, двусвязный или четырехсвязный список?
- •Как устроен HashMap?
- •Что будет, если добавлять элементы в TreeSet по возрастанию?
- •Расскажите о модели памяти Java?
- •Что такое «потокобезопасность»?
- •Чем отличается процесс от потока?
- •Что такое «зелёные потоки» и есть ли они в Java?
- •Каким образом можно создать поток?
- •Чем различаются Thread и Runnable?
- •В чём заключается разница между методами start() и run()?
- •Как принудительно запустить поток?
- •Что такое «монитор» в Java?
- •Дайте определение понятию «синхронизация».
- •Какие существуют способы синхронизации в Java?
- •В каких состояниях может находиться поток?
- •Можно ли создавать новые экземпляры класса, пока выполняется static synchronized метод?
- •Зачем может быть нужен private мьютекс?
- •Как работают методы wait() и notify()/notifyAll()?
- •В чем разница между notify() и notifyAll()?
- •Для чего используется ключевое слово volatile, synchronized, transient, native?
- •Что значит «приоритет потока»?
- •Почему не рекомендуется использовать метод Thread.Stop()?
- •Что происходит, когда в потоке выбрасывается исключение?
- •Что такое «пул потоков»?
- •Что будет, если очередь пула потоков уже заполнена, но подаётся новая задача?
- •В чём заключается различие между методами submit() и execute() у пула потоков?
- •В чем заключаются различия между cтеком (stack) и кучей (heap) с точки зрения многопоточности?
- •Чем полезны неизменяемые объекты?
- •Даны 3 потока т1, т2 и т3? Как реализовать выполнение в последовательности т1, т2, т3?
- •Что такое «шаблон проектирования»?
- •Назовите основные характеристики шаблонов.
- •Типы шаблонов проектирования.
- •Приведите примеры основных шаблонов проектирования.
- •Приведите примеры порождающих шаблонов проектирования.
- •Приведите примеры структурных шаблонов проектирования.
- •Приведите примеры поведенческих шаблонов проектирования.
- •Что такое «антипаттерн»? Какие антипаттерны вы знаете?
Что такое ооп?
Объектно-ориентированное программирование (ООП) — методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.
объектно-ориентированное программирование использует в качестве основных логических конструктивных элементов объекты, а не алгоритмы;
каждый объект является экземпляром определенного класса;
классы образуют иерархии.
Программа считается объектно-ориентированной, только если выполнены все три указанных требования. В частности, программирование, не использующее наследование, называется не объектно-ориентированным, а программированием с помощью абстрактных типов данных.
Класс – это способ описания сущности, определяющий состояние и поведение, зависящее от этого состояния, а также правила для взаимодействия с данной сущностью (контракт). С точки зрения программирования класс можно рассматривать как набор данных (полей, атрибутов, членов класса) и функций для работы с ними (методов). То есть, другими словами, класс является некоторым шаблоном для создания объектов. Допустим, у нас есть класс Dog, в нём определены поля возраста, породы и цвета. И по сути, возраст, порода и цвет собаки может быть различен. То есть, мы можем создать объект Шарик типа Dog, который будет содержать конкретные значения возраст, породу и цвет. И таких объектов может быть до бесконечности.
Объект (экземпляр) – это отдельный представитель класса, имеющий конкретное состояние и поведение, полностью определяемое классом. Каждый объект имеет конкретные значения атрибутов и методы, работающие с этими значениями на основе правил, заданных в классе. Например, у нас у всех есть некоторое представление о человеке - наличие двух рук, двух ног, головы, туловища и т.д. Есть некоторый шаблон - этот шаблон можно назвать классом. Реально же существующий человек является объектом этого класса.
Назовите основные принципы ООП.
Инкапсуляция - сокрытие реализации.
Наследование - создание новой сущности на базе уже существующей.
Полиморфизм - возможность иметь разные формы для одной и той же сущности.
Абстракция - набор общих характеристик.
Что такое «инкапсуляция»?
Инкапсуляция – это свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе и скрыть детали реализации от пользователя, открыв только то, что необходимо при последующем использовании. Пример - торговый автомат. Мы покупаем в нём различные товары, не зная того, как он устроен и как он работает.
Что такое «наследование»?
Наследование – это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью.
Что такое «полиморфизм»?
Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта. Преимуществом полиморфизма является то, что он помогает снижать сложность программ, разрешая использование одного и того же интерфейса для задания единого набора действий. Пример - смартфон. С его помощью мы можем общаться, а как - это уже решать нам: смс, мессенджеры, звонки, почта и т.д. Всё это - разное, но у этого всего одна общая цель - общение.