Skip to content

Instantly share code, notes, and snippets.

@niten2
Last active February 24, 2018 12:11
Show Gist options
  • Save niten2/14aea74976bbf83878e4a45db3b932d2 to your computer and use it in GitHub Desktop.
Save niten2/14aea74976bbf83878e4a45db3b932d2 to your computer and use it in GitHub Desktop.
theory
Кортеж (tuple)— упорядоченный набор фиксированной длины.
Список аргументов функции или список инициализации массива является неявным кортежем
const tuple = (...args) => Object.freeze(args);
const tup = tuple ( 1, 2, 3, 4 );

Form Object Value Object/Data Transfer Object (DTO) Query Object/Query Builder Presenter Decorator Service Strategy Policy Middleware Publish Subscribe Observer Factory Factory Method Delegate Proxy Adapter Entity Repository Serializer

Персистентные структуры данных (англ. persistent data structure) — это структуры данных, которые при внесении в них каких-то изменений сохраняют все свои предыдущие состояния и доступ к этим состояниям.

Порождающие


Abstract Factory

Factory

Builder

Prototype

Singleton

что самый простой способ создать Singleton объект в JS — это создать глобальную переменную с присвоением объекта,

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

class Singleton {
    protected static instance = new Singleton;
    public foo: number = 123;
    private constructor() {}

    public static getInstance() :Singleton {
       return Singleton.instance;
    }
}

Структурные


Adapter

преобразует интерфейс одного класса в другой от ожидания клиента

Bridge

отделить абстракцию и реализаю что бы можно было менять независимо

Composite

Decorator

динамическое добавление новых обязанностей

Facade

структурирует обьекты

Flyweight

Proxy

суггорат другого обьекта контролирует доступ к нему


Поведения


Chaining

цепочка обязанностей

Command

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

Interpreter

Iterator

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

Mediator

независимо взаимодействует с множеством обьектов

Memento

выносит внутреенне состояние обьекта, что бы можно было его восстановить

Observer

от изменения состояния одного обьекта все зависящие от него оповещаются и автоматически обновляются

State

варьирует свое поведение в зависимости от состояния

Strategy

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

Visitor

для определения новой операции не изменяя классы обьектов

Template

определяет алгоритм и позволяет подклассам переопределить шаги алгоритма


Other

CompositeIterator

Compound

Lazy

Module Revealed

Module

Multi-Inheritance-ES6

MVC

Namespace

Nullify

Try-Finally

Отличие реактивного программирования

К примеру, в императивном программировании присваивание a = b + c будет означать, что переменной a будет присвоен результат выполнения операции b + c, используя текущие (на момент вычисления) значения переменных. Позже значения переменных b и c могут быть изменены без какого-либо влияния на значение переменной a.

В реактивном же программировании значение a будет автоматически пересчитано, основываясь на новых значениях. В процедурном этого не происходит.

Почему билд js собирается в один файл, если выгоднее загружать в несколько потоков?

потому что получать файлы можно максиум 5 штук с одного домена

Что можно сделать если промис периодически зависает и не выбрасывает исключение

  const fetch = () => {
    return new Promise((fulfield, reject) => {
      setTimeout(()=> {
        return reject(trow new Error("error"))
      }, 2000)

      query.then((res) => {
        setTimeout.clear()
        fulfield(res)
      })
    })
  }

Рассчитать сложность любого алгоритма в О-нотации и в совершенстве владеете балансировкой деревьев?

???

<<<<<<< HEAD:main.md

const fetch = () => { return new Promise((fulfiels, reject) => { setTimeout(()=> { return reject(trow new Error("eror")) }, 2000)

query.then((res) => {
  setTimeout.clear()

  fulfield(res)
})

}) }

Способ реализации метода, принимающего блок в качестве аргумента (* блок опционально, ** более одного блока)

Сложность связанных списков, массивов

Как устроены треды в ruby

Как запускается проект rails

Что такое rack

Основные методы Enumerable, реализация которых в классе достаточна для удовлетворения интерфейсу коллекции (map, reduce, sort, ...)\

Как устроены proc, lamda, block в ruby

go конкурентность и параллельность, как устроено

7cf1eba2eaea8cfb8a806c51468954728c9de15d:theory.md

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment