19
Как пройти собеседование и получить первую работу как trainee-to-junior developer И что для этого нужно знать:

Как пройти собеседование и получить первую работу на Swift

Embed Size (px)

Citation preview

Page 1: Как пройти собеседование и получить первую работу на Swift

Как пройти собеседование и получить первую работу как trainee-to-junior developer

И что для этого нужно знать:

Page 2: Как пройти собеседование и получить первую работу на Swift

Что нужно знать?• UIKit

• App life-cycle• ViewController life-

cycle

• GCD

• Patterns• OOP • Architecture• MVC

• RESTfull API

• Delegate• Protocols

• ARC

Page 3: Как пройти собеседование и получить первую работу на Swift

UIKitUIKit - это библиотека, обеспечивающая ключевую инфрастуктуру, необходимую для построения iOS-приложений. UIKit содержит огромное количество классов, позволяющих строить визуальные элементы, анимировать их, обрабатывать физические законы, управлять механизмами печать, обработки текста и многое другое. Это важнейшая и совершенно незаменимая библиотека методов, которую вы будете использовать при разработке каждого приложения

Page 4: Как пройти собеседование и получить первую работу на Swift

App life-cicle• didFinishLaunchingWithOptio

ns (1)• applicationWillResignActive

(3)

• ApplicationDidBecomeActive (2)

• applicationWillEnterForeground (4)

• applicationWillTerminate

(Приложение успешно запустилось)

(Переключение на другое приложение или нажатие кнопки Home)Обычно на этом этапе приостанавливаются какие-то задачи или ставится на паузу игра. В этом месте мы ставим «на паузу» пользовательский интерфейс.

(Приложение перешло в состояние Active)Следует перезапустить все задачи, которые были поставлены на паузу в предыдущем состоянии, или которые были не запущены вовсе. Если приложение пришло из Background опционально обновить интерфейс.

Page 5: Как пройти собеседование и получить первую работу на Swift

App life-cycle

• applicationWillEnterForeground (4)

• applicationWillTerminate

• applicationDidEnterBackground (3)(Переход в состояние Background)

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

(Переход из Background в состояние Foreground)В этом состоянии можно сменить все изменения, сделанные в состоянии Background.

(Пользователь закрывает приложение)

Page 6: Как пройти собеседование и получить первую работу на Swift

View Controller life-cycle

Page 7: Как пройти собеседование и получить первую работу на Swift

OOP• Абстракция данных

• Инкапсуляция

• Полиморфизм подтипов

Абстрагирование означает выделение значимой информации и исключение из рассмотрения незначимой. В ООП рассматривают лишь абстракцию данных (нередко называя ее просто «абстракцией»), подразумевая набор значимых характеристик объекта, доступный остальной программе.

Свойство системы, позволяющие объединить данные и методы, работающие с ними, в классе. Одни языки (C++, Java, Ruby) отождествляют инкапсуляцию с сокрытием, другие различают эти понятия.

Свойство системы, позволяющие использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

Page 8: Как пройти собеседование и получить первую работу на Swift

OOP• Класс

• Объект

Универсальный, комплексный тип данных, состоящий из тематически единого набора «полей» (переменных более элементарных типов) и «методов» (функций для работы с этими полями), то есть он является моделью информационной сущности с внутренним и внешним интерфейсами для оперирования своим содержимым. В частности, в классах широко используются специальные блоки из одного или чаще двух спаренных методов, отвечающих за элементарные операции с определенным полем (интерфейс присваивания и считывания значения). При копировании соответствующей переменной через присваивание, копируется только интерфейс, но не сами данные, то есть класс - ссылочный тип данных. Переменная-объект, относящаяся к заданному классом типу называется экземпляром класса. Обычно классы разрабатывают таким образом, чтобы обеспечить отвечающие природе объекта и решаемой задаче целостность данных объекта, а также удобный и простой интерфейс. В свою очередь, целостность предметной области объектов, а также удобный и простой интерфейс. В свою очередь, целостность предметной области объектов и их интерфейсов, а также удобство их проектирования, обеспечивается наследованием.

Сущность в адресном пространстве вычислительной системы, появляющаяся при создании экземпляра класса (например, после запуска результатов компиляции и связывания исходного кода на выполнение)

Page 9: Как пройти собеседование и получить первую работу на Swift

MVC

Model-View-Controller (MVC, «Модель-Представление-Контроллер», «Модель-Вид-Контроллер») — схема разделения данных приложения, пользовательского интерфейса и управляющей логики на три отдельных компонента: модель, представление и контроллер — таким образом, что модификация каждого компонента может осуществляться независимо

Page 10: Как пройти собеседование и получить первую работу на Swift

RESTful APIREST (RESTful) - это общие принципы организации взаимодействия

приложения/сайта с сервером посредством протокола HTTP. Особенность REST в том, что сервер не запоминает состояние пользователя между запросами - в каждом запросе передаётся информация, идентифицирующая пользователя (например, token, полученный через OAuth-авторизацию) и все параметры,

необходимые для выполнения операции.

Всё взаимодействие с сервером сводится к 4 операциям (4 - это необходимый и достаточный минимум, в конкретной реализации типов операций может

быть больше):1. получение данных с сервера (обычно в формате JSON, или XML)

2. добавление новых данных на сервер3. модификация существующих данных на сервере

4. удаление данных на сервере

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

Для каждого типа операции используется свой метод HTTP-запроса:1. получение - GET

2. добавление - POST3. модификация - PUT4. удаление - DELETE

Page 11: Как пройти собеседование и получить первую работу на Swift

Delegate

Делегирование - это шаблон, который позволяет классу или структуре передавать (или делегировать) некоторую

ответственность экземпляру другого типа. Этот шаблон реализуется определением протокола, который

инкапсулирует делегируемые полномочия, таким образом, что соответствующий протоколу тип (делегат)

гарантировано получит функциональность, которая была ему делегирована. Делегирование может быть

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

необходимости знания типа источника.

Page 12: Как пройти собеседование и получить первую работу на Swift

Protocols

Протокол определяет образец методов, свойств или другие требования, которые соответствуют определенному конкретному заданию или какой-то функциональности. Протокол фактически не предоставляет реализацию для любого из этих требований, он только описывает как реализация должна выглядеть. Протокол может быть принят классом, структурой или перечислением для обеспечения фактической реализации этих требований. Любой тип, который удовлетворяет требованиям протокола, имеет указание соответствовать этому протоколу.В дополнение к определенным требованиям, которые должны быть реализованы подписанными под протокол типами, вы можете расширить протокол, чтобы реализовать некоторые из этих требований или для того, чтобы реализовать дополнительную функциональность, которую смогут использовать подписанные под протокол типы.

Page 13: Как пройти собеседование и получить первую работу на Swift

Patterns

Шаблон проектирования или паттерн (англ. design pattern) в разработке программного обеспечения — повторимая архитектурная конструкция, представляющая собой

решение проблемы проектирования в рамках некоторого часто возникающего контекста.

Singleton

Page 14: Как пройти собеседование и получить первую работу на Swift

Architecture

Разве это не похоже на «яблочный» MVC? На самом деле — очень, а имя ему — MVP (вариант с пассивной View). Но

означает ли это, что MVC от Apple на самом деле является MVP? Нет, не является, потому что, как вы помните, там View и Controller тесно связаны, в то время как посредник в MVP —

Presenter — не имеет отношения к жизненному циклу View Controller. View может быть легко заменена Mock-объектами,

поэтому в Presenter нет layout-кода, но он отвечает за обновление View в соответствии с новыми данными и

состоянием.

MVP

Page 15: Как пройти собеседование и получить первую работу на Swift

Architecture

Он очень похож на MVP:• MVVM рассматривает View Controller как View;• в нем нет тесной связи между View и Model.

Кроме того, он делает биндинг как надзирающая версия MVP, но не между View и Model, а между View и View Model.

Так что такое View Model в среде iOS? Єто независимое от UIKit представление View и ее состояния. View Model вызывает изменения в Model и самостоятельно обновляется с уже обновленной Model. И так как биндинг происходит между View и View Model, то первая, соответственно, тоже обновляется.

MVVM

Page 16: Как пройти собеседование и получить первую работу на Swift

Architecture

К настоящему моменту вы уже должны согласиться с тем, что разделение обязанностей — это очень хорошо. VIPER делает еще один шаг в сторону разделения обязанностей и вместо привычных трех слоев предлагает пять.

• Interactor содержит бизнес-логику, связанную с данными (Entities): например, создание новых экземпляров сущностей или получение их с сервера. Для этих целей вы будете использовать некоторые Сервисы и Менеджеры, которые рассматриваются скорее как внешние зависимости, а не как часть модуля VIPER.

• Presenter содержит бизнес-логику, связанную c UI (но UIKit-независимую), вызывает методы в Interactor.

• Entities — простые объекты данных, не являются слоем доступа к данным, потому что это ответственность слоя Interactor.

• Router несет ответственность за переходы между VIPER-модулями.

VIPER

Page 17: Как пройти собеседование и получить первую работу на Swift

GCDGrand Central Dispatch (GCD) - технология Apple, предназначенная для создания приложений, использующих преимущества многоядерных процессоров и других SMP-систем. Эта технология является реализацией параллелизма задач и основана на шаблоне проектирования «Пул потоков». GCD впервые была представлена в Mac OS X 10.6. Исходные коды библиотеки libdispatch, реализующей сервисы GCD, были выпущены под лицензией Apache 10 сентября 2009 г. Впоследствии библиотека была портирована на другую операционную систему FreeBSD.GCD позволяет определять задачи в приложении, которые могут параллельно выполняться, и запускает их при наличии свободных вычислительных ресурсов (процессорных ядер).Задача может быть определена как функция либо как «блок». Блок — это нестандартное расширение синтаксиса языков программирования C/C++/Objective-C, позволяющее инкапсулировать код и данные в один объект, аналог замыкания.Grand Central Dispatch использует потоки на низком уровне, но скрывает детали реализации от программиста. Задачи GCD легковесны, недороги в создании и переключении; Apple утверждает, что добавление задачи в очередь требует лишь 15 процессорных инструкций, в то время как создание традиционного потока обходится в несколько сотен инструкций.Задача GCD может быть использована для создания рабочего элемента, который помещается в очередь задач либо может быть привязана к источнику события. Во втором случае при срабатывании события задача добавляется в соответствующую очередь. Apple утверждает, что этот вариант более эффективен, нежели создавать отдельный поток, ожидающий срабатывания события.

Page 18: Как пройти собеседование и получить первую работу на Swift

ARCКаждый раз, когда вы создаете экземпляр класса, ARC выделяет фрагмент памяти для хранения информации этого экземпляра. Этот фрагмент памяти содержит информацию о типе экземпляра, о его значении и любых свойствах хранения, связанных с ним.Дополнительно, когда экземпляр больше не нужен, ARC освобождает память, использованную под этот экземпляр, и направляет эту память туда, где она нужна. Это своего рода гарантия того, что ненужные экземпляры не будут занимать память.Однако, если ARC освободит память используемого экземпляра, то доступ к свойствам или методам этого экземпляра будет невозможен. Если вы попробуете получить доступ к этому экземпляру, то ваше приложение скорее всего выдаст ошибку и будет остановлено.Для того, чтобы нужный экземпляр не пропал, ARC ведет учет количества свойств, констант, переменных, которые ссылаются на каждый экземпляр класса. ARC не освободит экземпляр, если есть хотя бы одна активная ссылка.Для того чтобы это было возможно, каждый раз как вы присваиваете экземпляр свойству, константе или переменной создается strong reference (сильная связь) с этим экземпляром. Такая связь называется “сильной”, так как она крепко держится за этот экземпляр и не позволяет ему освободится до тех пор, пока остаются сильные связи.

Page 19: Как пройти собеседование и получить первую работу на Swift

Контакты:• E-mail: [email protected]• vk: https://vk.com/id85801198