MindMap Gallery Preparation work after the interview
This mind map clearly delineates the key areas of post-interview preparation work, including main parts such as test theory, automated detection, and software learning, each further divided into sub-parts like Java databases. This visual tool, radiating from the central idea and consisting of themes, branches, and keywords, simulates the neural network of the human brain, facilitating memory, information organization, and creativity generation.
Edited at 2023-06-11 08:06:48Подготовка к собеседованию
1. Теория тестирования
Основы тестирования
Методы проектирования тестов
Методы черного ящика
Методы белого ящика
Методы, основанные на опыте
Стратегии тестирования
Пирамида - устаревшая концепция Фаулера
Трофей тестирования
Концепция основанная на бережливом тестировании основные тесты в которых, это интеграционные тесты
Стратегия тестирования микросервисов (есть у спотифай)
интегрированный
интеграция
детали реализации
Subtopic
Управление тестированием
2. Автоматизация тестирования
Стратегии тестирования
Пирамида - концепция Фаулера из нулевых, которой до сих пор пользуются
Трофей тестирования
Концепция основанная на бережливом тестировании основные тесты в которых, это интеграционные тесты
Стратегия тестирования микросервисов (есть у спотифай)
интегрированный
интеграция
детали реализации
Subtopic
3. Теория программирования
ООП
Основные понятия
Способ описания сущности, определяющий состояние и поведение, зависящее от этого состояния а так же правила для взаимодействия с сущностью это Класс
С точки зрения программирования класс можно рассматривать как набор данных (полей, атрибутов, членов класса) и функций для работы с ними (методов).
С точки зрения структуры программы, класс является сложным типом данных.
Отдельный представитель класса, имеющий конкретное состояние и поведение, полностью определяемое классом называют объектом или экземпляром класса.
Каждый объект имеет конкретные значения атрибутов и методы, работающие с этими значениями на основе правил, заданных в классе.
Интерфейс – это набор методов класса, доступных для использования.
Интерфейсом класса будет являться набор всех его публичных методов в совокупности с набором публичных атрибутов.
Интерфейс специфицирует класс, чётко определяя все возможные действия над ним.
Базовые принципы
Абстракция
Способ выделить набор общих характеристик объекта, исключая из рассмотрения частные и незначимые, называют Асбтрагированием
Набор таких характеристик, является абстрекцией
Объектно-ориентированные языки, такие как Java, выводят разработку на более высокий уровень абстракции. Объекты в ООП это модели понятий окружающего мира - например Работник, Сервер, Запись в дневнике. Они выделяют только те свойства этого понятия, которые необходимы в конкретном случае для решения конкретной проблемы.
Наследование
Свойство позволяющее описать новый класс, на основе уже существующего, с частичной или полностью заимствованной функциональностью
Класс, от которого производится наследование, называется предком, базовым или родительским
Новый класс - потомком, наследником или производным классом
Инкапсуляция
Это свойство, позволяющее обьединить данные и методы работающие с ними в классе, Скрыв реализацию от пользтвателя и оставлив доступным только необходимое для работы с классом
Цель инкапсуляции — уйти от зависимости внешнего интерфейса класса (то, что могут использовать другие классы) от реализации. Чтобы малейшее изменение в классе не влекло за собой изменение внешнего поведения класса.
Полиморфизм подтипов
Возможность использовать обьекты с одинаковым интерфейсом, без информации о типе и внутренней структуре объекта.
Полиморфизм позволяет снизить сложность ПО, разрешая использовать единый интерфейс для единого набора действий
Ключевая особенность - использование объекта производного класса, вместо объекта базового.
Большинство паттернов проектирования это подходы к реализации применения полиморфизма
https://training.epam.ua/News/Items/275?lang=ru
процессы и принципы
YAGNI
DRY
KISS
Big Design Up Front
Основная идея BDUF заключается в том, что детальное планирование и проектирование должны быть завершены до того, как команда приступит к фазе разработки. Это включает в себя разработку подробных спецификаций, диаграмм классов и последовательности, архитектурных решений и других документов, которые полностью описывают систему.
SOLID
S) Single-responsibility principle /Принцип единственной ответственности
O) Open–closed principle / Принцип открытости-закрытости
L) Liskov substitution principle / Принцип подстановки Лисков
Принцип для супер узких кейсов неправильно понятый Робертом Фаулером
I) Interface segregation principle / Принцип разделения интерфейсов
D) Dependency inversion principle / Принцип инверсии зависимостей
Avoid Premature Optimization
Идея заключается в том, что вместо траты времени на оптимизацию кода, который может быть несущественным для производительности, лучше сосредоточиться на разработке чистого, понятного и поддерживаемого кода.
Бритва Оккама
Обмен сообщениями
Объекты взаимодействуют, получая и отправляя сообщения.
Запрос на выполнения действия, при необходимости дополненный набором аргументов называют сообщением
Единственный путь передать управление обьекту в ООП, это посылка сообщения. Если объект должен отвечать на это сообщение, у него имеется метод для обработки данного сообщения.
Обмен сообщениями реализуется с помощью динамических вызовов, что приводит к чрезвычайно позднему связыванию (extreme late binding).
Паттерны проектирования
Основные
Делегирование (Delegation pattern) - Сущность внешне выражает некоторое поведение, но в реальности передаёт ответственность за выполнение этого поведения связанному объекту.
Функциональный дизайн (Functional design) - Гарантирует, что каждая сущность имеет только одну обязанность и исполняет её с минимумом побочных эффектов на другие.
Интерфейс (Interface) - Общий метод структурирования сущностей, облегчающий их понимание.
Интерфейс-маркер (Marker interface) - В качестве атрибута (как пометки объектной сущности) применяется наличие или отсутствие реализации интерфейса-маркера. В современных языках программирования вместо этого применяются атрибуты или аннотации.
Контейнер свойств (Property container) - Позволяет добавлять дополнительные свойства сущности в контейнер внутри себя, вместо расширения новыми свойствами.
Канал событий (Event channel) - Создаёт централизованный канал для событий. Использует сущность-представитель для подписки и сущность-представитель для публикации события в канале. Представитель существует отдельно от реального издателя или подписчика. Подписчик может получать опубликованные события от более чем одной сущности, даже если он зарегистрирован только на одном канале.
Порождающие
Абстрактная фабрика (Abstract factory) - Класс, который представляет собой интерфейс для создания других классов.
Строитель (Builder) - Класс, который представляет собой интерфейс для создания сложного объекта.
4. Java
Модификаторы доступа
public - полный доступ к полю или методу класса, из любого пакета
protected - доступ к сущности только для классов пакета и наследников класса
неявный модификатор - доступ к сущности только для классов своего пакета
private – доступ только внутри класса, в котором объявлена сущность.
5. Архитектура
Монолит
Микросервисы
6. SQL
7. GIT
8. Bash