Словарь программиста для собеседования
Те слова, которые часто спрашивают на собеседованиях..
Так то ими ты можешь пользоваться, просто не знать, как это называется..
Замыкание - когда в функции используем переменную, которая обьявленна снаружи этой функции
Функция высшего порядка — в программировании функция, принимающая в качестве аргументов другие функции или возвращающая другую функцию в качестве результата.
Domain Driven Design (DDD) подход к разработке приложений, основанный на выделении доменов (domain). набор принципов и схем, направленных на создание оптимальных систем объектов. Сводится к созданию программных абстракций, которые называются моделями предметных областей. В эти модели входит бизнес-логика, устанавливающая связь между реальными условиями области применения продукта и кодом.
SOLID
Single responsibility — принцип единственной ответственности
Open-closed — принцип открытости / закрытости
Liskov substitution — принцип подстановки Барбары Лисков
Interface segregation — принцип разделения интерфейса
Dependency inversion — принцип инверсии зависимостей
Принцип единственной обязанности / ответственности (single responsibility principle / SRP) обозначает, что каждый объект должен иметь одну обязанность и эта обязанность должна быть полностью инкапсулирована в класс. Все его сервисы должны быть направлены исключительно на обеспечение этой обязанности.
Принцип открытости / закрытости (open-closed principle / OCP) декларирует, что программные сущности (классы, модули, функции и т. п.) должны быть открыты для расширения, но закрыты для изменения. Это означает, что эти сущности могут менять свое поведение без изменения их исходного кода.
Принцип подстановки Барбары Лисков (Liskov substitution principle / LSP) в формулировке Роберта Мартина: «функции, которые используют базовый тип, должны иметь возможность использовать подтипы базового типа не зная об этом».
Принцип разделения интерфейса (interface segregation principle / ISP) в формулировке Роберта Мартина: «клиенты не должны зависеть от методов, которые они не используют». Принцип разделения интерфейсов говорит о том, что слишком «толстые» интерфейсы необходимо разделять на более маленькие и специфические, чтобы клиенты маленьких интерфейсов знали только о методах, которые необходимы им в работе. В итоге, при изменении метода интерфейса не должны меняться клиенты, которые этот метод не используют.
Принцип инверсии зависимостей (dependency inversion principle / DIP) — модули верхних уровней не должны зависеть от модулей нижних уровней, а оба типа модулей должны зависеть от абстракций; сами абстракции не должны зависеть от деталей, а вот детали должны зависеть от абстракций.
MVC
Модель — этот компонент отвечает за данные, а также определяет структуру приложения. Например, если вы создаете To-Do приложение, код компонента model будет определять список задач и отдельные задачи.
Представление — этот компонент отвечает за взаимодействие с пользователем. То есть код компонента view определяет внешний вид приложения и способы его использования.
Контроллер — этот компонент отвечает за связь между model и view. Код компонента controller определяет, как сайт реагирует на действия пользователя. По сути, это мозг MVC-приложения.
Функция - Фрагмент программного кода (подпрограмма), к которому можно обратиться из другого места программы. Функция может принимать параметры и должна возвращать некоторое значение, возможно void.
Метод - Это функция или процедура, принадлежащая какому-то классу или объекту.
Процедуры - Те же функции, которые ничего не возвращают (void).
Полиморфизм - Способность функции обрабатывать данные разных типов.
Пример: можешь передать функции как число, как строку, так массив и она всё это нормально обработает..
Инкапсуляция (в js замыкания) - Размещение в одном компоненте данных и методов, которые с ними работают.
Для других компонентов ограничение доступа к ненужным функциям/методам/переменным.
Типы языков программирования: Императивные Декларативные Смешанные.
Императивные (C, C++, Java)
Это описание того, как ты делаешь что-то.
Пример: Официант, возьми в руку листок и ручку, запиши на листке ручкой слово "бургер", повернись к кухне, иди до кухни, пока не будешь на расстоянии от неё на вытянутую руку, возьми там бургер, развернись в мою сторону, иди вперёд пока не будешь на расстоянии вытянутой руки от меня, отдай мне бургер..
Декларативные (SQL, HTML)
Описание того, что ты делаешь.
Пример: Официант, принеси мне бургер.
Смешанные (могут быть таковыми) JavaScript, C#, Python.
Динамическое программирование
способ решения сложных задач путём разбиения их на более простые подзадачи.
Часто многие из этих подзадач одинаковы. Подход динамического программирования состоит в том, чтобы решить каждую подзадачу только один раз, сократив тем самым количество вычислений. Это особенно полезно в случаях, когда число повторяющихся подзадач экспоненциально велико.