From d677ace797b49f0185b2f39902e63f951f8b1629 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D0=BB=D0=B0=D0=B2=D1=80=D0=B5=D0=B4=20=7C=20Glavred?= Date: Sun, 28 Feb 2021 14:11:05 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BE=D1=82=20=D0=93=D0=BB=D0=B0=D0=B2=D1=80?= =?UTF-8?q?=D0=B5=D0=B4=D0=B0=20=D0=93=D0=B8=D1=82=D0=96=D0=A1=20|=20Chang?= =?UTF-8?q?es=20of=20GitJS=20Glavred?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 0000 | 2 +- кратко.md | 200 ++++++++++++++++++++++++++++++++++++++++++++++++ общие.md | 39 ---------- 3 files changed, 201 insertions(+), 40 deletions(-) create mode 100644 кратко.md delete mode 100644 общие.md diff --git a/0000 b/0000 index c5f401c..ce1b972 100644 --- a/0000 +++ b/0000 @@ -2,4 +2,4 @@ BO iOS 0.1.0 https://git.opengamestudio.org/kornerr/BOnPOCbI-OTBETbI-iOS -/общие.md \ No newline at end of file +/кратко.md \ No newline at end of file diff --git a/кратко.md b/кратко.md new file mode 100644 index 0000000..097b2b6 --- /dev/null +++ b/кратко.md @@ -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 + * приложение в фоне без какого-либо выполнения + + +## Зачем нужны тесты? + +Позволяют контролировать качество разрабатываемого ПО +и как минимум гарантировать прохождение имеющихся тестов. +Покрывать тестами в первую очередь нужно ключевую возможность, +предоставляемую приложением, например, заказ такси в приложении заказа такси. + +Методологии? + + + + + + + + + + + + + + + + + + + + + + diff --git a/общие.md b/общие.md deleted file mode 100644 index 0b0b271..0000000 --- a/общие.md +++ /dev/null @@ -1,39 +0,0 @@ -# Общие - - -## Жизненный цикл разработки системы / System development lifecycle (SDLC) - -Фазы: - -* планирование системы -* анализ системы -* дизайн системы -* разработка, внедрение, развёртывание -* опытная эксплуатация и интеграция -* поддержка системы - - -## Методологии разработки - -* Водопад / Waterfall -* SCRUM - - -## Что такое ООП и какие его основные принципы? - -ООП - это объектно ориентированное программирование. -Программа представлена в виде совокупности объектов, -каждый из которых является экземпляром класса. - -* Наследование - это возможность использовать функциональность родительского класса в дочернем -* Инкапсуляция - это сокрытие деталей реализации -* Полиморфизм - это способность функции работать с данными разных типов - - -## Шаблоны проектирования - -Шаблоны проектирования представляют собой архитектурные решения для некоторых -часто появляющихся задач. -Существуют основные, структурные, поведенческие и пораждающие шаблоны. - -