AQA Flashcards
(74 cards)
Кратко суть полиморфизма?
Полиморфизм - это реализация одной и той же идеи разными способами.
Чем реализован полиморфизм в джава?
Перегрузкой, которая используется в рамках одного класса.
Переопределение, которое используется в классах наследниках.
При перегрузке частично изменяется сигнатура (void test(int i, int b)), а именно аргументы метода.
А при переопределении меняется реализация внутри метода.
Можно ли изменить при переопределении тип возвращаемого значения в методе класса наследника?
Можно, только сделать dawnCasting т.е. в низ, например: есть Number класс, выше его Object, а ниже Integer. Можно Integer.
А если касается модификаторов длоступа, то модификатор может только РАСШИРЯТСЯ, т.е. с протектеда на паблик.
Подытожим: лесенка вниз это тип возвращаемого значения, лесенка вверх это модификатор доступа.
Инкапсуляция, что это?
Она используется для сокрытия, чтобы небыло несонкционированного доступа из вне.
Чем реализованно инкапсуляция?
Она реализованна модификаторами доступа и getter, setter.
Какие знаешь модификаторы доступа от самого закрытого до самого открытого?
private - только в классе видно.
default - виден только в пакете.
protected - виден в пакете и классах наследниках
public - виден везде
Если у нас поле private final мы можем изменить его значение?
Нет, только если с помощью механизма рефлексия.
SOLID все 5 штук.
- Принцип одной ответственности
- Принцип открытости/закрытости
- Принцип подбора Лисков
- Принцип разделения интерфейсов (Не должны ничего навязывать, если ему не надо столько методов, сделай отдельно те, которые надо.)
- Принцип инверсии зависимости.
SOLID с точки зрения автоматизации
- Принцип одной ответственности(например, один класс для управления тестами, другой — для отчетности, 3-й для подлючения JDBC)
- Принцип открытости/закрытости (Про расширение того, что есть при организации каких-то сущностей во вреймворке тестовом)
- Принцип подбора Лисков (Обычное наследование, например BaseTest и от него наследуются все тестовые классы)
- Принцип разделения интерфейсов(Создавайте узкие, специализированные интерфейсы вместо одного общего.)
- Принцип инверсии зависимостей (принцип инверсии - это общий подход, по сути это WebDriver)
Какие группы патернов ты знаешь?
Параждающие, структурные, поведенческие.
В чем отличие фабричного метода от абстрактной фабрики?
Фабричный метод использует наследование и позволяет подклассам определять тип создаваемого объекта. Абстрактная фабрика управляет целыми семействами связанных объектов, не указывая их конкретные классы.
Чем можно заменить абстрактную факрику без потери ее сути работы?
Патерном Мультитон
Какие сектора ХИПА ты знаешь?
Их 3: Young Generation, Old Generation, Metaspace(хранятся статики)
Местоположение: Строки, созданные с использованием строковых литералов,
хранятся в пуле строк, который находится в области Young Generation.
Что такое StringPull, зачпем он нужен?
Это сектор памяти хипа, где хранятся обьекты созданные с помощью строковых литералов.
Возвращает уже готовую запись.
GIT FLOW на текущем проекте
- Иду к ПМ или тим лиду и беру доступа (только через SSH либо HTTP)
- git cline (подтянул)
- git config(user.name, user.email указал )
- git checkout -b “название ветки” (-b создает новую ветку)
- git commit -m (создал коммит своих изменений)
- git pull (обновляю ветку, в себе содержит git fetch, git merge сразу)
- git push(отправляю на уд. репу)
- git merget (делаю слияние)
- отправляю на ревью 2-е из команды ревью должны поставить.
Можно ли самому забрать уже существующую ссылку на тот обьект, который уже есть в СТРИНГПУЛЛ
Можно, возвращает эту ссылку на конкретный обьект метод intern()
Как подтянуть к себе нужный коммит из другой ветки?
git- cherry-pick “хэш коммита”
Команда для просмотра всех коммитов?
git log
Чем отличается rebase от merget
Merget это слияние веток, rebase перетрется история и не сможем откотиться
Чем отличается reset, revert, restore
reset - удаление коммитов локально
revert - берет последний коммит в удаленной ветке и отменяет его
git restore –source <хеш_коммита> <имя_файла> - Восстановление файла из конкретного коммита</имя_файла></хеш_коммита>
Как удалить ветку?
git branch -d <имя_ветки> - Удаление локальной ветки. (-d: Удаляет ветку, если она была слита с другой веткой)
git branch -D <имя_ветки> - тоже Удаление локальной ветки. (-D: Принудительно удаляет ветку, даже если изменения не были слиты.)
git push origin --delete <имя_ветки> - Удаление удаленной ветки</имя_ветки></имя_ветки></имя_ветки>
Что такое API?
Это интерфейс с помощью которого общается клиент и сервер
Способы взаимодействия микросервисов.
- синхронный - реализуется через интеграционную шину
- асинхронный - реализуется через брокеры сообщений
- точка точка или один к одному реализуется через прямые конфиги, прямы запросы сервиса на сервер
Отличие REST от SOAP
REST - архитектурный стиль
SOUP - ПРОТОКОЛ
REST - быстрее
SOUP - безопасен
REST - кэшируемый, SOUP НЕТ