110 вопросов
Практика
Какие основные проблемы связаны с Object-Relational Impedance Mismatch, и как различия между объектно-ориентированными моделями и моделями реляционных баз данных приводят к этим проблемам?
Что такое Object-Relational Impedance Mismatch и почему он возникает между объектно-ориентированными моделями и реляционными базами данных?
Можешь объяснить принципы SOLID и почему они так важны в объектно-ориентированном программировании?
Можешь объяснить принцип Open/Closed в софтваре, включая его историю, основные идеи и как его применяют в паттернах вроде State и Strategy?
Как ты можешь получить доступ к приватным методам класса извне, и какой процесс для этого нужно использовать в Java с помощью рефлексии?
Какие основные применения Reflection в Java, и как это способствует гибкости и динамическому поведению Java-программ?
Что такое рефлексия в Java и как она позволяет тебе динамически инспектировать и манипулировать классами, методами и атрибутами во время выполнения программы?
Чем отличается поверхностное копирование от глубокого копирования в Java и как они влияют на ссылки объектов и их содержимое?
Какой еще термин используют, чтобы описать shallow copy в Java?
Какие шаги нужно предпринять, чтобы сделать объект неизменяемым в Java?
Ты можешь переопределить метод, который был перегружен в Java?
В чём разница между ключевыми словами `super` и `this` в Java?
Почему в Java есть конструктор по умолчанию, и для чего он нужен, когда в классе не определён явный конструктор?
Что такое информационное скрытие в Java и как оно достигается с помощью принципов объектно-ориентированного программирования?
Зачем в Java организовывать классы и интерфейсы в пакеты?
Что такое upcasting и downcasting в Java, и в каких ситуациях их используют?
Можно ли объявить метод абстрактным, если класс при этом не объявлен абстрактным?
Может ли абстрактный класс наследоваться от другого абстрактного класса?
Чем класс отличается от объекта в Java и как они связаны друг с другом в объектно-ориентированном программировании?
Какие ключевые различия между перегрузкой и переопределением методов в Java, и какие правила управляют каждым из них?
Что такое runtime polymorphism в Java и как это работает во время выполнения программы?
Почему в Java нет перегрузки операторов, хотя перегрузка методов там есть?
Объясни, почему этот класс нельзя создать и опиши, какая проблема возникает, когда ты пытаешься его создать: public class A { A a = new A(); }
Что такое абстрактный класс в Java и чем он отличается от обычного класса по поводу реализации методов и создания объектов?
В чем разница между абстракцией и инкапсуляцией в объектно-ориентированном программировании?
Что такое абстракция в объектно-ориентированном программировании и чем она отличается от абстрактного класса в Java?
В чём разница между передачей по значению и передачей по ссылке?
В Java два равных объекта могут иметь разные hash codes?
Какие факторы надо учитывать, когда решаешь, использовать ли статический или нестатический inner class в Java?
Какая разница между выражениями `x == y` и `x.equals(y)` в Java?
Что такое constructor chaining в Java и как это работает, когда у класса несколько перегруженных конструкторов?
Когда проектируешь абстрактный класс, имеет смысл вызывать абстрактные методы в его конструкторе?
Какой класс определяет метод clone() — класс Object или интерфейс Cloneable?
Можешь объяснить, как создать неизменяемый объект в Java, который содержит изменяемый объект, и описать лучшие практики, чтобы гарантировать неизменяемость всего объекта?
Как правильно получить доступ к нестатической переменной из статического контекста в Java?
Как Java обрабатывает множественное наследование и чем это отличается от других объектно-ориентированных языков программирования вроде C++ или Scala?
Можно ли переопределять приватные и статические методы в Java, и что происходит, когда ты создаёшь похожие методы в дочернем классе?
Можно ли обратиться к статическому методу интерфейса через ссылку на интерфейс?
Если метод определён в классе, в его родительском классе и в интерфейсе, который реализует этот класс, какая версия метода будет вызвана, когда ты обращаешься к нему через ссылку на интерфейс и объект класса?
Если класс наследует базовый класс и реализует интерфейс, а в обоих базовом классе и интерфейсе есть default метод с одинаковым именем и параметрами, какой метод приоритизирует JVM?
Ты можешь объяснить главные отличия между статическим и динамическим связыванием с точки зрения того, когда происходит разрешение методов, и дать примеры того, как каждый тип связывания работает на практике?
Какие ключевые принципы и best practices нужно соблюдать при проектировании и реализации immutable objects в Java?
Какой контрактный договор между методами hashCode() и equals() в Java?
Зачем нужно переопределять метод equals(), и в каких ситуациях ты это обычно делаешь?
Объясни, как работает метод hashCode() в Java, включая его связь с классом Object и как он генерирует значение хеша?
Зачем тебе может понадобиться переопределять метод equals() в Java классе, и в каких ситуациях это особенно важно?
Какая цель метода toString() в Java и как его обычно используют?
Какие шаги нужно предпринять, чтобы создать immutable класс в Java?
Зачем в Java использовать статический вложенный интерфейс и чем его управление доступом отличается от других типов интерфейсов?
Нужно ли явно объявлять вложенный интерфейс как public и static?
Может ли класс содержать интерфейс? Если да, то как его использовать?
Как локальному внутреннему классу в Java получить доступ к нелокальной переменной из метода, в котором он определён?
Можешь объяснить, что такое наследование в объектно-ориентированном программировании и какие у него основные плюсы?
Что такое nested interface и чем она отличается от обычного интерфейса верхнего уровня?
Чем отличается вложенный класс от внутреннего класса в Java?
Какие плюсы от использования вложенных классов в объектно-ориентированном программировании?
Какие типы вложенных классов есть в Java?
Что такое вложенный класс в Java и как его определить внутри другого класса?
Какой подход используется для динамического создания объекта во время выполнения программы в Java, и какие методы можно использовать для этого?
Можно ли использовать ключевое слово transient для методов в Java?
Какой самый важный класс в Java и почему?
Можно ли объявить основной метод как final?
Как можно инициализировать пустую final переменную в Java классе?
Что такое blank final variable в Java и чем она отличается от обычной final переменной?
Почему Integer class в Java помечен как final?
Как ты можешь запретить наследование класса в Java?
Как ты определяешь final метод в Java и в чём его смысл?
В Java, что это значит, когда класс объявляют с модификатором final, и какие тут получаются последствия от такого объявления?
Можно ли изменить значение финальной переменной в Java, и если нет, то почему?
Как можно привести ссылку на объект к ссылке на интерфейс?
Можно ли в Java интерфейсах объявлять переменные с модификаторами доступа private или protected?
Какие ключевые различия между абстрактным классом и интерфейсом в Java?
Какую альтернативу можно использовать вместо маркерного интерфейса?
Что такое marker interface и можешь ли ты привести пример?
Почему в Java интерфейс нельзя отметить как final?
Что такое интерфейс в Java и для чего он нужен?
Можно ли в Java создать экземпляр абстрактного класса?
Может ли метод в Java быть объявлен одновременно abstract и final? Почему да или почему нет?
Можно ли достичь runtime polymorphism через data members в Java?
Что такое полиморфизм времени выполнения и чем он отличается от решений на этапе компиляции при вызове методов?
Что такое ковариантный тип возврата в Java и чем он отличается от переопределения методов до Java 5?
В Java методы экземпляра по умолчанию виртуальные, да? А в каких случаях они не виртуальные?
Какие основные различия между перегрузкой методов и переопределением методов в Java, и чем они отличаются с точки зрения полиморфизма, отношений между классами, требований к параметрам и когда они разрешаются — во время компиляции или во время выполнения?
Можно ли переопределить метод, который был перегружен?
Почему в Java нельзя переопределять статические методы?
Можно ли переопределить статический метод в Java в подклассе?
Как в Java достигается переопределение методов, и какие ключевые характеристики отличают переопределённый метод в подклассе от исходного метода в родительском классе?
Почему в Java невозможно перегрузить метод, просто изменив только тип возвращаемого значения?
Какие ключевые отличия позволяют перегружать методы в языке программирования?
Как ты можешь реализовать перегрузку методов в Java и какие основные критерии отличают перегруженные методы?
Как ещё называют перегрузку методов?
Какая разница между статическим методом и методом экземпляра в Java, и чем они отличаются по использованию, доступности и взаимодействию с переменными класса и экземпляра?
Можешь объяснить, что такое статические методы в Java, как они работают на уровне класса и в чём их практические плюсы?
Почему обычно не считается хорошей практикой использовать static переменные в Java?
В Java, зачем нужны статические переменные?
Что такое клонирование объектов в Java и как метод `clone()` это облегчает?
Конструктор в Java может использовать и this(), и super() одновременно?
Какую роль играет ключевое слово 'super' в Java и в каких ситуациях его обычно используют?
В чем разница между агрегацией и композицией в объектно-ориентированном программировании?
Можешь объяснить, что такое composition в объектно-ориентированном программировании и как оно создаёт отношение "has-a" между классами?
Почему в Java нет поддержки множественного наследования, и как это влияет на иерархию классов и разрешение методов?
Какой Java класс служит суперклассом для всех остальных классов?
Для чего нужно ключевое слово 'this' в Java и как его использовать?
Почему в Java конструкторы не могут быть объявлены как final, static или abstract?
Можно ли наследовать конструктор в Java?
Какая цель конструктора в Java и что он возвращает?
Зачем в Java нужен конструктор по умолчанию и в каких случаях Java его сама создаёт?
Какая цель конструктора в Java и как он помогает при создании и инициализации объектов?
В чём главное отличие между языками Object-Oriented Programming (OOP) и Object-Based Programming?
Можешь объяснить основные принципы объектно-ориентированного программирования и дать краткое описание каждого?