AQA Flashcards

1
Q

Кратко суть полиморфизма?

A

Полиморфизм - это реализация одной и той же идеи разными способами.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Чем реализован полиморфизм в джава?

A

Перегрузкой, которая используется в рамках одного класса.
Переопределение, которое используется в классах наследниках.

При перегрузке частично изменяется сигнатура (void test(int i, int b)), а именно аргументы метода.
А при переопределении меняется реализация внутри метода.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Можно ли изменить при переопределении тип возвращаемого значения в методе класса наследника?

A

Можно, только сделать dawnCasting т.е. в низ, например: есть Number класс, выше его Object, а ниже Integer. Можно Integer.
А если касается модификаторов длоступа, то модификатор может только РАСШИРЯТСЯ, т.е. с протектеда на паблик.
Подытожим: лесенка вниз это тип возвращаемого значения, лесенка вверх это модификатор доступа.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Инкапсуляция, что это?

A

Она используется для сокрытия, чтобы небыло несонкционированного доступа из вне.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Чем реализованно инкапсуляция?

A

Она реализованна модификаторами доступа и getter, setter.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Какие знаешь модификаторы доступа от самого закрытого до самого открытого?

A

private - только в классе видно.
default - виден только в пакете.
protected - виден в пакете и классах наследниках
public - виден везде

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Если у нас поле private final мы можем изменить его значение?

A

Нет, только если с помощью механизма рефлексия.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

SOLID все 5 штук.

A
  • Принцип одной ответственности
  • Принцип открытости/закрытости
  • Принцип подбора Лисков
  • Принцип разделения интерфейсов (Не должны ничего навязывать, если ему не надо столько методов, сделай отдельно те, которые надо.)
  • Принцип инверсии зависимости.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

SOLID с точки зрения автоматизации

A
  • Принцип одной ответственности(например, один класс для управления тестами, другой — для отчетности, 3-й для подлючения JDBC)
  • Принцип открытости/закрытости (Про расширение того, что есть при организации каких-то сущностей во вреймворке тестовом)
  • Принцип подбора Лисков (Обычное наследование, например BaseTest и от него наследуются все тестовые классы)
  • Принцип разделения интерфейсов(Создавайте узкие, специализированные интерфейсы вместо одного общего.)
  • Принцип инверсии зависимостей (принцип инверсии - это общий подход, по сути это WebDriver)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Какие группы патернов ты знаешь?

A

Параждающие, структурные, поведенческие.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

В чем отличие фабричного метода от абстрактной фабрики?

A

Фабричный метод использует наследование и позволяет подклассам определять тип создаваемого объекта. Абстрактная фабрика управляет целыми семействами связанных объектов, не указывая их конкретные классы.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Чем можно заменить абстрактную факрику без потери ее сути работы?

A

Патерном Мультитон

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Какие сектора ХИПА ты знаешь?

A

Их 3: Young Generation, Old Generation, Metaspace(хранятся статики)
Местоположение: Строки, созданные с использованием строковых литералов,
хранятся в пуле строк, который находится в области Young Generation.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Что такое StringPull, зачпем он нужен?

A

Это сектор памяти хипа, где хранятся обьекты созданные с помощью строковых литералов.
Возвращает уже готовую запись.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

GIT FLOW на текущем проекте

A
  • Иду к ПМ или тим лиду и беру доступа (только через 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-е из команды ревью должны поставить.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Можно ли самому забрать уже существующую ссылку на тот обьект, который уже есть в СТРИНГПУЛЛ

A

Можно, возвращает эту ссылку на конкретный обьект метод intern()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Как подтянуть к себе нужный коммит из другой ветки?

A

git- cherry-pick “хэш коммита”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Команда для просмотра всех коммитов?

A

git log

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Чем отличается rebase от merget

A

Merget это слияние веток, rebase перетрется история и не сможем откотиться

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Чем отличается reset, revert, restore

A

reset - удаление коммитов локально
revert - берет последний коммит в удаленной ветке и отменяет его
git restore –source <хеш_коммита> <имя_файла> - Восстановление файла из конкретного коммита</имя_файла></хеш_коммита>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Как удалить ветку?

A

git branch -d <имя_ветки> - Удаление локальной ветки. (-d: Удаляет ветку, если она была слита с другой веткой)
git branch -D <имя_ветки> - тоже Удаление локальной ветки. (-D: Принудительно удаляет ветку, даже если изменения не были слиты.)
git push origin --delete <имя_ветки> - Удаление удаленной ветки</имя_ветки></имя_ветки></имя_ветки>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Что такое API?

A

Это интерфейс с помощью которого общается клиент и сервер

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Способы взаимодействия микросервисов.

A
  • синхронный - реализуется через интеграционную шину
  • асинхронный - реализуется через брокеры сообщений
  • точка точка или один к одному реализуется через прямые конфиги, прямы запросы сервиса на сервер
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Отличие REST от SOAP

A

REST - архитектурный стиль
SOUP - ПРОТОКОЛ
REST - быстрее
SOUP - безопасен
REST - кэшируемый, SOUP НЕТ

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

По каким протаколам общается REST и SOUP?

A

REST http и https, SOUP любыми протоколами приклодного уровня

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Какие сертификаты безопасности у РЕСТА и СОАП?

A

У РЕСТА - TLS, (старый SSL)
У соапа - такой-же TLS и WS SECURITY из-за которого он безопаснее

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

С какими форматами данных работает рест и соап?

A

РЕСТ работает с различными, HTML, XML, JSON.
СОАП работает только с XML

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Структура HTTP запроса?

A
  • старт лайн
  • хеддеры
  • емпти лайн
  • боди
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

Из чего состоит стартЛайн?

A
  • метода
  • урла
  • версия протокола и сам протокол (пример http 1.1)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

Какие знаешь хеддеры?

A
  • Content-type (передача и получение формата)
  • User-agent (передает инфу об источние от которого был запрос)
  • Accept (Он позволяет клиенту (например, веб-браузеру) сообщить серверу, какой формат ответа он предпочитает.)
  • content-lenth (показывает длинну строк)
  • Autorization
  • cookie
  • Location (если редирект проихзошел в респонсе. Этот заголовок указывает на URL, на который клиент должен перейти.)
31
Q

Дайте определение понятия «автоматизированное тестирование»?

A

Автоматизированное тестирование это проверка программного обеспечения, посредством специализированных инструментов, которая включает проведение таких основных функций и шагов теста: запуск, инициализация, выполнение, анализ и выдача результата.

32
Q

Системы контроля версий (Git)

A

система контроля версий. Они нам позволяют хранить всю историю изменений, которые мы когда-либо вносили в проект, это удобно, потому что мы можем откатиться на предыдущие версии проекта.

33
Q

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

A
  • Обеспечение максимального покрытия тестами при регрессионном тестировании
  • Быстрое выполнение
  • Повторяемость тест кейсов
  • Сокращение затрат на техническое обслуживание программного обеспечения
  • Экономия времени тестировщиков
  • Возможность исполнения в нерабочее время
  • Исключение «человеческого» фактора
  • Автоматически рассылаемые и сохраняемые отчеты о результатах тестирования
34
Q

Какие тесты автоматизировать, какие нет?

A

Берем и автоматизируем те тесты, которые мы регулярно проходим – это smoke и регрессию. Важный функционал, чтобы предотвратить человеческий фактор.
Большие тест-кейсы.
Не стоит автоматизировать те, которые быстро сделает мануал, будет тестироваться один раз, проще пройти руками(быстрые), те которые не возможно полностью автоматизировать.

35
Q

git stash

A

git stash - сохраняем состояние
git stash list - просмотр списка существующих сохраненных состояний
git stash apply - восстановить последний stash
git stash pop - восст. последний и удалить
git stash drop stash@{2} - удаление нужного по индексу

36
Q

git revert/git resert

A

Команда git revert – безопасный способ отменить операцию без потери истории коммитов. Команда отменяет действия прошлых коммитов, создавая новый, содержащий все отменённые изменения.
Откатиться с помощью commit-хэшей:
git revert [SHA]
Можно и с помощью диапазонов:
git revert HEAD~[num-of-commits-back]
Команда git reset перемещает и указатель HEAD, и указатель ветки на заданный коммит.

37
Q

TestNg, Junit Настройка теста

A
  • TestNG также предлагает аннотации @BeforeSuite, @AfterSuite, @BeforeGroup и @AfterGroup для конфигураций на уровне набора (suite) и группы
  • @BeforeTest и @AfterTest, если нам нужна какая-либо конфигурация до или после тест-кейсов, включенных в тег в XML-файле конфигурации TestNG

JUnit послужил вдохновением для TestNG,
2. Настройка теста
JUnit предлагает инициализацию и очистку на двух уровнях, до и после каждого метода и класса. У нас есть аннотации @BeforeEach, @AfterEach на уровне метода и @BeforeAll и @AfterAll на уровне класса
Объявление методов @BeforeClass и @AfterClass в JUnit должно быть статическим.
Для сравнения, объявление этих методов в TestNG не имеет таких ограничений.

38
Q

CI, CD

A

Что такое CI/CD? Непрерывная интеграция (CI, англ. Continuous Integration) - инструмент непрерывной интеграции. CD – непрерывная доставка.
CI – непосредственно концентрируется на этапах сборке и проведении тестов
- написание кода, сборка и ручное тестирование

39
Q

В чем разница между Continuous Delivery и Continuous Deployment.

A

CD – это процесс автоматического выпуска приложения в продакшен
- проходит все этапы тестирования, и мы можем быть уверены, что наше приложение высокого качества и готово к релизу
Continuous Deployment – это автоматический процесс развертывания, одобренного кода в производственную среду.

40
Q

Docker (базовые знания)

A

Doker состоит из докер файлов, которые содержат в себе образы т.е. имаджи, которые непосредственно собирают контейнеры – это как раз образы наших приложений.
По сути Докер это такое удобное приложение, которое помогает уменьшить количество выполняемой работы девопсам по настройке каждой виртуальной машины, какого то комплекса конфигураций, программ, операционных систем.
Он позволяет упаковывать приложения со всеми зависимостями, его окружениями в единый контейнер.

41
Q

В чем отличие виртуализации и контейнеризации?

A

Контейнеризация — это технология изоляции приложений и их зависимостей путем упаковки в единое исполняемое окружение – контейнер
В контейниризации – процессор, память, файловая система
- легковесные
- «Нативная» производительность
- контейнер использует «нативную» ОС
- ОС виртуализация
- Запуск за секунды
- Изоляция уровня процесса менее безопасна
Виртуализация – это технология с помощью которого можно создавать виртуальные среды физических ресурсов
В Виртуализации – сервер, сети, хранилища и даже операционная система.
- Тяжеловесные
- Ограниченная производительность
- Каждая ВМ запускает собственную ОС
- Hardware-level виртуализация
- запуск за минуты
- полностью изолирована, более безопасна
Плюсы / минусы
В контейнеризации – в каждом контейнере у нас изолированы части приложения
В Виртуализации, тоже идет изоляция в качестве установки более сложное развертывание происходит. В виртуальной машине нужно вручную запускать приложение, это более трудоемкий процесс.

42
Q

Инструменты для управления проектом (package manager)

A

Maven, Gradle

43
Q

Maven (циклы: clean, build, site)

A

clean: очистить от сгенерированных артефактов
build:
1 validate проверяет корректность метаинформации о проекте
2 compile компилирует исходники
3 test прогоняет тесты классов из предыдущего шага
4 package упаковывает скомпилированные классы в новый артефакт: jar, war, zip, …
5 verify проверяет корректность артефакта и удовлетворение требованиям качества
6 install кладет артефакт в локальный репозиторий
7 deploy заливает артефакт на production-сервер или удаленный репозиторий

site: генерация документации

44
Q

Что такое локатор и для чего нужен?

A

С помощью локатора на странице можно найти элементы.

45
Q

Абсолютный и относительный путь

A

Абсолютный путь (с помощью двойного / /) — это когда для того, чтобы дойти до какого-то нужного нам элемента мы должны пошагово пройтись в глубь по каждому элементу, этажу по нашему дереву.
Относительный путь (с помощью одинарного /) — это путь, когда мы можем перескакивать какие-либо ветки дерева и сразу попадать в глубину к другому узлу данного дерева.

46
Q

Оси Xpath

A

позволяют нам добраться до любых элементов на любых уровнях.
ancestor:: – возвращает нам всех предков, некоторого узла
ancestor-or-self:: - данная конструкция позволяет вернуть не только предков, но и сам элемент
following-sibling:: - Позволяет вернуть соседей, которые находятся ниже нашего элемента, который мы нашли
preceding-sibling:: - Если мы хотим найти элемент выше нашего элемента
parent:: - Возвращает непосредственного родственника – родителя

47
Q

Функции xPath

A

Указываем с круглыми скобками
last – позволяет вернуть последний элемент
text – можем искать элемент по тексту
contains – функция позволяет проверить содержание в любом месте текста
starts-with значение должно начинаться с того, что мы укажем

48
Q

Selenium API

A

Selenium – набор инструментов для автоматизированного тестирования. Он состоит из таких компонетов:

  • Selenium IDE (Integrated Development Environment) – специальный плагин Firefox для записи, сохранения и воспроизведения сценариев тестирования веб-страниц.
  • WebDriver - инструмент для автоматизации реального браузера, посредством вызова команды браузера, используя при этом родной API для каждого конкретного браузера. Поддерживает различные языки программирования - Java, .NET, PHP и т.п.
  • Grid позволяет производить синхронный и контролируемый запуск тестов на разных платформах и девайсах. Также является эффективным инструментом для масштабирования тестов.
49
Q

Selenium WebDriver

A

это драйвер браузера, который позволяет взаимодействовать с браузером, управлять его поведением, получать от браузера данные.

50
Q

Что такое browser capabilities?

A

Для запуска тестов в одном браузере требуется использовать capabilities опцию конфигурации.

51
Q

By - класс

A

содержащий статические методы для идентификации элементов: id, name, className, tagName, linkText, partialLinkText, cssSelector, xpath.

52
Q

Что такое JSON Wire Protocol?

A

Апи по средством которого общается клиент(код) и сервер (браузер)

53
Q

Actions

A

Selenium WebDriver позволяет имитировать действия пользователя, начиная от простых движений мыши до сложных, перетягивание объекта. Все это позволяет реализовать класс Actions.
Клик левой кнопкой мыши:
builder.click(element);
Двойной щелчок на элементе:
builder.doubleClick(element).build().perform();
drag and drop
moveToElement
Отпускание клавиши мыши:
builder.release()

54
Q

Alert

A

Selenium Driver располагает встроенными средствами для работы с диалоговыми окнами. Получить доступ к появившемуся диалоговому окну можно следующим образом.
Этот код вернет объект, соответствующий модальному диалогу, открытому на экране в данный момент:
Alert alert = driver.switchTo().alert();
void accept() — соответствует нажатию кнопки OK.
* void dismiss() — соответствует нажатию кнопки Cancel или клавиши Esc.
* java.lang.String getText() — возвращает текст диалогового окна. Интересно, что текст возвращается даже для уже закрытого диалога.
* void sendKeys(java.lang.String keysToSend) — позволяет передать текст в поле ввода диалога.

55
Q

Iframe

A

Фрейм представляет собой отдельный законченный HTML-документ, содержащий свою собственную модель страницы (DOM).
Плавающий фрейм (iframe, inline frame), или еще его называют встроенный фрейм, может встраиваться в любое место HTML-страницы.
В качестве параметров он принимает индекс, имя или сам iframe элемент:
driver.switchTo().frame(0);
driver.switchTo().frame(“frameName”)
driver.switchTo().frame(webElement);

56
Q

JSExecutor

A

JavascriptExecutor - это интерфейс Selenium, который реализуется всеми следующими классами:
FirefoxDriver, ChromeDriver, InternetExplorerDriver, EdgeDriver, OperaDriver, SafariDriver, RemoteWebDriver, EventFiringWebDriver
Интерфейс JavascriptExecutor предоставляет два метода:
executeScript()
executeAsyncScript()

57
Q

Исключения в Selenium

A

ElementNotVisibleException - Возникает, когда By не может обработать переданные ему аргументы.
StaleElementReferenceException - Возникает, когда ссылка на элемент, к которому идет обращение, больше не действительна.
TimeoutException - Вызывается, когда команда не завершается в достаточный промежуток времени.
Исключения группы «Not Found»
NoSuchElementException - Вызывается методом findElement(By by), если элемент с заданным селектором не найден на странице.
InvalidSelectorException - Исключение генерируется методом findElement(By by)когда заданный селектор поиска не возвращает WebElement. Сейчас это исключение возникает только при использовании xpath — когда в xpath выражении есть синтаксические ошибки или выражение не указывает на WebElement (например, «count(.//span)»).
NoSuchFrameException - Возникает во время работы методов WebDriver.switchTo().frame(int frameIndex) и WebDriver.switchTo().frame(String frameName), если фрейм с заданным параметром не найден.
NoSuchWindowException - Возникает при отсутствии окна с заданным именем (WebDriver.switchTo().window(String windowName)).

58
Q

Что такое сериализация/десериализация?

A

Сериализация в общем виде — это процесс сохранения объекта в виде последовательности байт, чтобы в будущем по этой последовательности можно было бы восстановить исходный объект.
Десериализация — это процесс восстановления объекта из байт.

59
Q

jackson, gson

A

JSON (англ. JavaScript Object Notation) — текстовый формат обмена данными, основанный на JavaScript. Как и многие другие текстовые форматы, JSON легко читается людьми.
1. Набор пар ключ: значение.
2. Упорядоченный набор значений.
В качестве значений в JSON могут быть использованы: Запись, Массив, Число, Литералы true, false и null, Строка
Jackson – это мощная библиотека, которая может быть использована для преобразования Java-объектов в JSON и обратно. Она предлагает широкий спектр возможностей, включая поддержку различных типов данных, настраиваемые аннотации и возможность использовать кастомные сериализаторы и десериализаторы.

60
Q

RestAssured и Retrofit.

A

Retrofit – это библиотека, которая очень часто используется в андроид разработки для того, чтобы отправлять API запросы на сервер, получать ответы и тд.
Суть ретрофита в том, что нужно придерживаться определенного паттерна, создавать интерфейсы, которые описывают какие-то сервисы и в интерфейсе нужно указывать метод обращения http запроса.
Ресташуред не привязан к строгости получения ответа, там можно на ходу делать проверки.
В ретрофит в сравнении с ресташуредом здесь есть значительное различие:
- в ресташуруде удобно, что не надо создавать ни какие интерфейсы, не надо создавать сервисные классы, реализовывать их, добавлять какой-то конвертер.
Над ресташурдем можно сделать такую же обертку, чтобы разделять сервисные классы, навешивать уровни абстракции.
- Отличия, что в ретрофит более строгая реализация, нет такой простой возможности, как в ресташуреде, например обращаться к ответу сервера.

61
Q

Что такое ожидание в Selenium?

A

Ожидания - непременный атрибут любых UI тестов для динамических приложений. Нужны они для синхронизации работы приложения и тестового скрипта. Скрипт выполняется намного быстрее реакции приложения на команды, поэтому часто в скриптах необходимо дожидаться определенного состояния приложения для дальнейшего с ним взаимодействия.
Ожидания бывают:
Неявные ожидания (Implicit Waits) - конфигурируют экземпляр WebDriver делать многократные попытки найти элемент (элементы) на странице в течении заданного периода времени, если элемент не найден сразу. Tолько по истечении этого времени WebDriver бросит ElementNotFoundException.
WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get(“http://some_url”);
WebElement dynamicElement = driver.findElement(By.id(“dynamicElement_id”));
Явные ожидания (Explicit Waits) — это код, который ждет наступления какого-то события, прежде чем продолжит выполнение команд скрипта. Такое ожидание срабатывает один раз в указанном месте.
WebDriver driver = new FirefoxDriver();
driver.get(“http://some_url”);
WebElement dynamicElement = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(By.id(“dynamicElement_id”)));
https://selenium2.ru/docs/webdriver-advanced-
Fluent wait
Fluent Wait - Свободное ожидание используется, чтобы указать веб-драйверу ждать условие, а также частоту, с которой мы хотим проверить условие, прежде чем вызвать исключение «ElementNotVisibleException».
Частота: настройка повторяющегося цикла с временными рамками для проверки / проверки состояния через регулярные промежутки времени.
Давайте рассмотрим сценарий, в котором элемент загружается через разные промежутки времени. Элемент может загружаться в течение 10 секунд, 20 секунд или даже больше, чем если бы мы объявили явное ожидание в 20 секунд. Он будет ждать до указанного времени, прежде чем выдать исключение. В таких сценариях fluent ожидание является идеальным ожиданием для использования, поскольку оно будет пытаться найти элемент с различной частотой, пока не найдёт его или не истечёт окончательный таймер.

62
Q

Репортинг

A
  • Количестве запущенных тестов
  • По каждому тесту:
    o его название
    o название сьюта
    o результат
    o время выполнения
    o сообщение об ошибке, если тест упал
  • Количество успешно выполненных тестов
  • Количество упавших тестов
  • Время выполнения всех тестов
  • Дата и время запуска
63
Q

Что такое логеры, зачем использовать

A

Лог – это список произошедших событий, своеобразный дневник.
Ну а, соответственно, логгер — это объект, с помощью которого можно вести логирование.
Чаще всего в лог пишется информация о параметрах метода, с которыми он был вызван, все перехваченные ошибки, и еще много промежуточной информации.
Все записи в лог еще во время их создания делятся на категории.
Debug – Подробные сообщения, используемые во время отладки приложения
Info – Информационные сообщения о том, что происходит в приложении
Warn – Предупреждения о возникновении нежелательной ситуации
Error – Ошибки при которых приложение способно продолжить работать
Fatal – Фатальные ошибки, обычно приводящие к завершению работы приложения

64
Q

Понимание 3-уровневой архитектуры.

A

Ядро (Core Layer) - отвечает за всё, что связано с тестами, и не имеет ничего, что связано с бизнес-логикой. На этом уровне находятся: модули отчетности, методы инициализации веб драйвера, расширения для веб браузера, базовые классы для работы с элементами страниц, глобальные конфигурации.
Бизнес-уровень (Business Layer) - через этот уровень данных производятся операции с приложением. Это сборка, где создается абстракции для работы с проектом: в ней хранятся классы с данными, классы Page Object, бизнес шаги (например: создание юзера, заполнение формы данными).
Тестовый уровень (Test Layer) - этот уровень обычно содержит сами тестовые сценарии, написанные на языке программирования

65
Q

Понимание 4-х и 5-тиуровневой архитектуры

A

Большинство многоуровневых архитектур состоят из четырех стандартных слоев: представление, бизнес, сохранение и база данных.
MVC - это шаблон программирования, который позволяет разделить логику приложения на три части:
Вид – это интерфейс
Контроллер - обработчик событий, инициируемых пользователем (нажатии на кнопку перехода по ссылке, отправка формы)
Модель – это метод, который запускается обработчиком и выполняет все основные операции (получение записей из базы данных и проведение вычислений)

66
Q

JDBC

A

это библиотека, которая позволяет нам из кодов JAVA общаться с базой данных.

67
Q

Методы класса Object

A

clone() – создает новый объект, не отличающийся от клонируемого.
equals(Object obj) – определяет, равен ли один объект другому.
finalize() – вызывается перед удалением неиспользуемого объекта.
getClass() – получает класс объекта во время выполнения.
hachCode() – возвращает хэш-код, связанный с вызывающим объектом.
notify() – возобновляет исполнение потока, ожидающего вызывающего объекта.
notifyAll() – возобновляет исполнение всех потомков, ожидающих вызывающего объекта.
toString() – возвращает символьную строку, описывающую объект.
wait() – ожидает другого потока исполнения.

68
Q

Стринг билдер, стринг баффер

A

Стринг баффер - операции с ним потокобезопасны и синхронизированны, соответственно более медленный, а стринг билдер, не синхронизирован и более быстрый
Они являются изменяемыми классами

69
Q

Методы StringBuilder

A

append(String str)
Добавляет строку str в конец текущего содержимого.
insert(int offset, String str)
Вставляет строку str в указанную позицию offset.
delete(int start, int end)
Удаляет часть строки от start до end.
deleteCharAt(int index)
Удаляет символ по указанному индексу index.
replace(int start, int end, String str)
Заменяет часть строки от start до end строкой str.
reverse()
Переворачивает содержимое StringBuilder в обратном порядке.
toString()
Преобразует содержимое StringBuilder в объект String.
capacity()
Возвращает емкость текущего StringBuilder.
length()
Возвращает количество символов в текущем StringBuilder.

70
Q

instance method references

A

то есть передачи ссылки на метод println() статического поля out класса system

71
Q

Какова роль equal и hashcode в HashMap

A

хашкод позволяет определить bucket, для поиска элемента.
equal используется для сравнения ключей элементов в списке корзины и искомого ключа.

72
Q

Параллельная редукция

A

Это процесс сокращения элементов коллекции с использованием параллельных вычислений.
В Java параллельная редукция реализуется через Stream API

73
Q

Почему String очень папулярен для ключей в HashMap?

A

Поскольку строка неизменная, её hashcode кэшируется
в момент создания и нет необходимости рассчитывать его снова.

74
Q

Иерархия исключений

A

Базовым классом для всех исключений является класс Throwable. От него уже наследуются два класса: Error и Exception.
Класс Error описывает внутренние ошибки в исполняющей среде Java: как OutOfMemoryError, StackOverFlow.

От класса Exception, называются проверяемыми исключениями (checked exceptions).
(ClassNotFoundException, CloneNotSupportedException, IOException, FileNotFoundException)

От Exception наследуется класс RuntimeException.

RuntimeException является базовым классом для так называемой группы непроверяемых исключений (unchecked exceptions) - компилятор не проверяет факт обработки таких исключений и их можно не указывать вместе с оператором throws в объявлении метода. (ArithmeticException, IndexOutOfBoundException, IllegalArgumentException, NumberFormatException, NullPointerException)

Поскольку все классы исключений наследуются от класса Exception, то все они наследуют ряд его методов, которые позволяют получить информацию о характере исключения.

Метод getMessage() возвращает сообщение об исключении

Метод getStackTrace() возвращает массив, содержащий трассировку стека исключения

Метод printStackTrace() отображает трассировку стека