Изменения от Главреда ГитЖС | Changes of GitJS Glavred
This commit is contained in:
2
0000
2
0000
@@ -2,4 +2,4 @@ BO iOS
|
||||
0.1.0
|
||||
https://git.opengamestudio.org/kornerr/BOnPOCbI-OTBETbI-iOS
|
||||
|
||||
/общие.md
|
||||
/кратко.md
|
||||
200
кратко.md
Normal file
200
кратко.md
Normal 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
|
||||
* приложение в фоне без какого-либо выполнения
|
||||
|
||||
|
||||
## Зачем нужны тесты?
|
||||
|
||||
Позволяют контролировать качество разрабатываемого ПО
|
||||
и как минимум гарантировать прохождение имеющихся тестов.
|
||||
Покрывать тестами в первую очередь нужно ключевую возможность,
|
||||
предоставляемую приложением, например, заказ такси в приложении заказа такси.
|
||||
|
||||
Методологии?
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
39
общие.md
39
общие.md
@@ -1,39 +0,0 @@
|
||||
# Общие
|
||||
|
||||
|
||||
## Жизненный цикл разработки системы / System development lifecycle (SDLC)
|
||||
|
||||
Фазы:
|
||||
|
||||
* планирование системы
|
||||
* анализ системы
|
||||
* дизайн системы
|
||||
* разработка, внедрение, развёртывание
|
||||
* опытная эксплуатация и интеграция
|
||||
* поддержка системы
|
||||
|
||||
|
||||
## Методологии разработки
|
||||
|
||||
* Водопад / Waterfall
|
||||
* SCRUM
|
||||
|
||||
|
||||
## Что такое ООП и какие его основные принципы?
|
||||
|
||||
ООП - это объектно ориентированное программирование.
|
||||
Программа представлена в виде совокупности объектов,
|
||||
каждый из которых является экземпляром класса.
|
||||
|
||||
* Наследование - это возможность использовать функциональность родительского класса в дочернем
|
||||
* Инкапсуляция - это сокрытие деталей реализации
|
||||
* Полиморфизм - это способность функции работать с данными разных типов
|
||||
|
||||
|
||||
## Шаблоны проектирования
|
||||
|
||||
Шаблоны проектирования представляют собой архитектурные решения для некоторых
|
||||
часто появляющихся задач.
|
||||
Существуют основные, структурные, поведенческие и пораждающие шаблоны.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user