собеседование

Как происходит наследование если оба реализуемых интерфейса объявляют один и тот же метод?

В том случае, когда объявления полностью идентичны, в класс, реализующий эти интерфейсы определяет требуемый метод. В том случае, если методы возвращают разные типы, тот все зависит от самих типов. Как известно, начиная с 5 версии Java переопределение ковариантно по отношению…

Читать полностьюКак происходит наследование если оба реализуемых интерфейса объявляют один и тот же метод?

Как поменять значение приватного finall поля на другое

В первую очередь нужно знать, что такое действие слишком плохая практика, противоречащая принципу сокрытия информации. Для того чтобы это сделать нужно обратиться к Reflection API. Для этого нужно: ·        чтобы получить дескриптор нужного поля, вызываем метод getDeclaredField()…

Читать полностьюКак поменять значение приватного finall поля на другое

Что такое Reflection?

Reflection – это инструмент метапрограммирования, который даёт средства, с помощью которых можно манипулировать данными, зная структуру конкретного класса, к которым эта информация относятся. Class<T> является входом в рефлексию. В экземплярах данного класса содержится информация о требуемом классе. Имеющиеся способы получить…

Читать полностьюЧто такое Reflection?

В каком случае результатом выполнения Class.getClassLoader будет null?

Чтобы ответить на этот вопрос нужно разобраться в двух темах. Во-первых, экземпляры, относящиеся к Class<T>, являются описанием типов, где считается что перечисления – это классы, а аннотации идентичны интерфейсам. Экземпляры, принадлежащие Class<T> хранят, в основном, ту же информацию, что и…

Читать полностьюВ каком случае результатом выполнения Class.getClassLoader будет null?

Как создаётся экземпляр класса?

На первом этапе загружается сам класс, вместе со своими предками. Класс загружается всего раз, во время 1-го упоминания данного класса. Когда загрузка закончится, начинается процесс выделения памяти под имеющиеся в нём static поля и начинают выполняться команды, прописанные в static…

Читать полностьюКак создаётся экземпляр класса?

Зачем нужен тип enum?

Enum является классом со всеми свойствами финального, у которого имеются поля, объявленные по умолчанию как final и экземпляры, также финальные. Им нельзя расширять классы, но с его помощью можно реализовывать интерфейсы. Перечисление Enum является сравнимым (Comparable) и сериализируемым (Serializable). В…

Читать полностьюЗачем нужен тип enum?

Какие модификаторы доступа есть в языке Java?

В Java их четыре: public – отсутствуют ограничения на доступ; protected – предоставляет доступ из классов, входящих в пакет и из всех наследников; private – доступ возможен только из исходного класса и внутренний или вложенных в него классов; pakage-private –…

Читать полностьюКакие модификаторы доступа есть в языке Java?

Для чего используется модификатор static?

С помощью данного ключевого слова можно объявить static методы, импорты, поля, инициализационные статические блоки, а также вложенные классы. К static полям и методам класса есть обращаются используя имя класса, потому что, поля и методы являются членами класса, в котором прописаны,…

Читать полностьюДля чего используется модификатор static?

Что делают загрузчики классов?

В языке Java применяется динамический тип загрузки используемых классов, которую выполняют лоадеры (они же загрузчики). Они происходят от класса ClassLoader, который является абстрактным. Также они отвечают за загрузку прочих файлов, в которых содержаться ресурсы. Загрузка элементов ссылочного типа, в том…

Читать полностьюЧто делают загрузчики классов?

Какие примитивные типы предусмотрены в языке Java?

Всего в Java предусмотрено 8 примитивных типов данных, это: byte – целое лежащее в диапазоне от 2^7 до 2^7-1; short – целое лежащее в диапазоне от 2^15 до 2^15-1; с– целое лежащее в диапазоне от 2^31 до 2^31-1; long– целое…

Читать полностьюКакие примитивные типы предусмотрены в языке Java?

Атрибут weight и его влияние на производительность

При использовании обычного LinearLayout каждый из on… методов View вызывается его дочерних View только по одному разу, что делает его довольно быстрым. Если же использовать атрибут weight, то метод onMeasure() будет вызван по 2 раза на каждом View. Это делает…

Читать полностьюАтрибут weight и его влияние на производительность

Для чего нужен атрибут weight в LinearLayout?

Это атрибут, который указывает то, какую часть экрана займет View по сравнению с другими View, у которых тоже указан данный атрибут. При этом в зависимости от атрибута orientation, данный атрибут будет влиять на разные параметры View. Если у LinearLayout стоит…

Читать полностьюДля чего нужен атрибут weight в LinearLayout?

Назовите отличия CoordinatorLayout от FrameLayout

CoordinatorLayout можно представить как FrameLayout на максималках. Это улучшенная версия FrameLayout. CoordinatorLayout рассчитан на использование в двух основных случаях В качестве top-level декора приложения или же chrome layout Когда необходимо настроить взаимодействие между layout и его дочерними view либо между…

Читать полностьюНазовите отличия CoordinatorLayout от FrameLayout

Какие вы знаете layout в Android?

Из основных лэйаутов (прямых наследников ViewGroup) можно выделить следующие FrameLayout. Отрисовывает элементы друг поверх друга. LinearLayout Отрисовывает элементы друг за другом. У данного layout есть атрибут orientation, который задает направление, в котором будут отрисовываться дочерние View. Если данный атрибут имеет…

Читать полностьюКакие вы знаете layout в Android?

Расскажите про ViewGroup и View и в чем их различие?

ViewGroup – это класс, который наследуется от View. Он расширяет View и позволяет хранить в себе другие View, по сути это как контейнер. Все layout’ы являются ViewGroup. Так же этот класс будет базовым и для layout parameters. ViewGroup предоставляет невидимый…

Читать полностьюРасскажите про ViewGroup и View и в чем их различие?

Расскажите про Database View в Room

Начиная с версии 2.1.0 Room поддерживает SQLite database views. Database Views позволяют инкапсулировать запрос в БД внутри класса. Такие классы представляют из себя простенькие объекты с данными. Чтобы создать такой класс необходимо добавить аннотацию @DatabaseView к классу, а в качестве…

Читать полностьюРасскажите про Database View в Room

Можно ли ViewModel заменить onSaveInstanceState()?

Не совсем. Вернее не всегда вьюмоделью можно заменить onSaveInstanceState(). Рассмотри такой случай, когда в нашей активити есть ViewModel, которая сохраняет наши данные. Так же эти же данные сохраняются в onSaveInstanceState(). Всего есть три варианта как будет создаваться активити: Активити запускается…

Читать полностьюМожно ли ViewModel заменить onSaveInstanceState()?

Объединение нескольких LiveData в Android

Для того, чтобы объединить несколько LiveData необходимо использовать класс MediatorLiveData. Данный класс умеет подписываться на обновления других LiveData. Для этого необходимо вызвать метод MediatorLiveData.addSource(). Он принимает в себя два аргумента: 1) Сама LiveData, на которую нужно подписаться 2) Observer, который…

Читать полностьюОбъединение нескольких LiveData в Android

Особенности при подписке на LiveData во Fragment

Метод observe() класса LiveData принимает в качестве аргумента объект класса LifecycleOwner. Данный объект будет указывать, кто является владельцем данного Lifecycle, это необходимо чтобы колбек LifeData.observe() не триггерился когда LifecycleOwner еще не в активном состоянии (либо уже был вызван onDestory(), либо…

Читать полностьюОсобенности при подписке на LiveData во Fragment

Паттерн MVVM

MVVM, — шаблон проектирования архитектуры приложений. Он упрощает разделение разработки графического интерфейса (view) от разработки бизнесс-логики (model). ViewModel в данном шаблоне проектирования является промежуточным звеном, которое помогает преобразовывать данные таким образом, чтобы их было легко представлять и ими было легко…

Читать полностьюПаттерн MVVM