Browse Source

Изменения от Главреда ГитЖС | Changes of GitJS Glavred

master
Главред | Glavred 3 years ago
parent
commit
d677ace797
3 changed files with 201 additions and 40 deletions
  1. +1
    -1
      0000
  2. +200
    -0
      кратко.md
  3. +0
    -39
      общие.md

+ 1
- 1
0000 View File

@@ -2,4 +2,4 @@ BO iOS
0.1.0
https://git.opengamestudio.org/kornerr/BOnPOCbI-OTBETbI-iOS

бщие.md
/кратко.md

+ 200
- 0
кратко.md View File

@@ -0,0 +1,200 @@
# Общие


## Жизненный цикл разработки системы / System development lifecycle (SDLC)

Фазы:

* планирование системы
* анализ системы
* дизайн системы
* разработка, внедрение, развёртывание
* опытная эксплуатация и интеграция
* поддержка системы


## Методологии разработки

* Водопад / Waterfall
* SCRUM


## Что такое ООП и какие его основные принципы?

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

* Наследование - это возможность использовать функциональность родительского класса в дочернем
* Инкапсуляция - это сокрытие деталей реализации
* Полиморфизм - это способность функции работать с данными разных типов


## Шаблоны проектирования

Шаблоны проектирования представляют собой архитектурные решения для некоторых
часто появляющихся задач.
Существуют основные, структурные, поведенческие и пораждающие шаблоны.


## Шаблон одиночки (Singleton)

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


## Что такое SOLID?

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

* Single responsibility
* каждый модуль/класс/функция должны нести ответственность лишь за одну часть функциональности ПО
* иначе: у класса должна быть лишь одна причина для изменений
* Open-closed
* открыто для расширений, закрыто для модификаций
* т.е. модули/классы/функции разрешают расширить своё поведение без изменения исходного класса
* Liskov substitution
* возможность использовать объекты производных классов вместо родительских без нарушения работоспособности
* Interface segration
* клиент не должен завивесть от неиспользуемых им методов
* такие интерфейсы ещё называют ролевыми
* Dependency inversion
* высоуровневые модули не должны зависеть от низкоуровневых: и те, и другие должны зависить от абстракций
* абстракции не должны зависить от деталей (реализации), детали (реализация) должна зависить от абстракций


## В чём разница между strong и weak?

* Strong - это сильная ссылка, weak - слабая.
* Сильная ссылка увеличивает счётчик на 1, что не даёт ARC'у очистить используемую память.
* Когда ссылка удаляется (вместе с родительским объектом), счётчик уменьшается на 1.
* Если счётчик 0, то объект удаляется ARC'ом.
* Слабая ссылка никак не влияет на счётчик, поэтому она никак не "удерживает" объект от удаления, на который ссылается.
* Чаще всего используется для делегатов.
* Ссылки на optional всегда слабые.


## Что такое ARC?

* Automatic reference counting, автоматический подсчёт ссылок.
* Расставляет в коде увеличение/уменьшение счётчика для переменных за программиста.
* Не является Garbage Collector.


## Что такое optional?

* Optional представляет собой две возможности: либо значение есть (его можно "раскрыть"), либо значения нет (nil).
* Реализован как enum с наличием значения и его отсутствием, можно написать самостоятельно при желании


## Что такое retain cycle?

* Это ситуация, когда два (или более) объекта ссылаются друг на друга сильными ссылками.
* Из-за этого ни один из объектов не будет освобождён первым, поэтому получаем циклическую зависимость.


## Чем различаются struct и class?

* struct - value type, при передаче происходит копия всей структуры
* class - reference type, при передаче копия лишь указателя


## Array и Dictionary value type или reference type?

Они copy on write, т.е. формально value type, но до изменения они ведут себя как reference type.


## Функция ref type или val type?

Ref type, capture variables


## Многопотоность

Многопоточность - это выполнение нескольких задач одновременно.

Существуют следующие механизмы организации многопоточности:

* GCD
* распределяет нагрузку на уровне системы
* Thread
* позволяет руками создать отдельный поток
* OperationQueue
* позволяет поставить одни операции в зависимость от других
* чтобы выполнить одни после завершения других
* чуть тяжелее GCD


## Какие существуют способы хранить данные локально на устройстве и чем они различаются?

* Core Data
* является полноценной базой данных
* где можно задавать различные связи между объектами и выполнять сложные выборки
* User Defaults
* хранит все данные в виде ключа-значения, чаще всего используется для хранения настроек приложения
* Keychain
* предоставляет безопасное шифрованное хранилище для чувствительной информации
* Файлы


## Каков жизненный цикл UIViewController?

* loadView задаёт self.view при создании контролера руками
* loadViewIfNeeded задаёт self.view, если к этому моменту self.view ещё отсутствует
* viewDidLoad выполняется после задания self.view, границы self.view ещё неизвестны
* viewWillAppear выполняется перед показом self.view и добавлением в иерархию отображения, границы заданы, ориентация не задана
* viewWillLayoutSubviews выполняется перед раскладкой детей, выполняется при каждом изменении рамки и, например, при загрузке новых ячеек в таблицу
* viewDidLayoutSubviews выполняется после раскладки детей, выполняется при каждом изменении рамки и, например, при загрузке новых ячеек в таблицу
* viewDidAppear выполняется после отображения self.view и добавления её в иерархию отображения
* viewWillDisappear выполняется перед скрытием контролера другим контролером
* viewDidDisappear выполняется после скрытия контролера другим контролером
* viewWillTransition выполняется при смене ориентации для изменения размера self.view корневого контролера активного окна
* этот контролер в свою очередь вызывает этот же метод у дочерних контролеров


## Каков жизненный цикл приложения iOS?

* not running
* приложение не запущено
* inactive
* приложение выполняется на переднем плане, но не принимает ввод от пользователя
* active
* приложение выполняется на переднем плане и принимает ввод от пользователя
* background
* приложение выполнется в фоне
* suspended
* приложение в фоне без какого-либо выполнения


## Зачем нужны тесты?

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

Методологии?























+ 0
- 39
общие.md View File

@@ -1,39 +0,0 @@
# Общие


## Жизненный цикл разработки системы / System development lifecycle (SDLC)

Фазы:

* планирование системы
* анализ системы
* дизайн системы
* разработка, внедрение, развёртывание
* опытная эксплуатация и интеграция
* поддержка системы


## Методологии разработки

* Водопад / Waterfall
* SCRUM


## Что такое ООП и какие его основные принципы?

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

* Наследование - это возможность использовать функциональность родительского класса в дочернем
* Инкапсуляция - это сокрытие деталей реализации
* Полиморфизм - это способность функции работать с данными разных типов


## Шаблоны проектирования

Шаблоны проектирования представляют собой архитектурные решения для некоторых
часто появляющихся задач.
Существуют основные, структурные, поведенческие и пораждающие шаблоны.



Loading…
Cancel
Save