Skip to content

SPBSTU-Mobile-development-courses/ios

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Домашнее задание

Общее

Все материалы лекций лежат в 2020-spring/lectures

Раздел cделать нужно сдавать через pull request в этот репозиторий. Делаешь fork, в папке 2020-spring создаешь папку со своим именем. В нее кладешь папку, названную номером домашнего задания. Коммитишь, пушишь, создаешь pr. Я буду оставлять комментарии (ласковее чем Мартынов) и мерджить, если все ок.

Раздел почитать сдается через устные ответы на лекциях. Каждое занятие я буду случайно спрашивать вопросы с прошлого раза. Особо принуждать к ответу не стану, но героя-одиночки, который будет отдуваться за всех, тоже не будет.

В папке Questions можно отыскать вопросы с реальных собесов джунов и пару тестовых (для собственного развития). Чувствуй себя свободно добавлять туда свои вопросы/ответы через pr. Любая активность помимо домашек приветствуется, я готов помогать, советовать, ревьювить твои тестовые в компании.

По любым вопросам обращайся в личку в телеграмм @M0rtyMerr

29 февраля, ДЗ №1

Сделать:

Реализовать структуру данных Бинарное дерево. Что должно уметь:

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

Прочитать:

  • Protocol Oriented Programming
  • Closures
  • Automatic Reference Counting (ARC)
  • Copy-on-write

Материалы

  • Swift.org/swiftbook.ru - документация по Swift с подробными примерами
  • iOS-Developer-Roadmap - что должен знать junior/middle/senior ios разработчик. Вопросы и ссылки на статьи

3 Марта, ДЗ №2

Запись лекции

Проверка домашки Делаем приложение

Сделать:

Создать приложение, выводящее таблицу сущностей, полученных из сети. Это уже реализовано на лекции, не стесняйтесь сверяться с проектом RickAndMorty. Главное, проделайте все сами, а не просто копируйте.
Можно использовать любое апи отсюда: https://github.com/public-apis/public-apis Я, например, взял это - https://rickandmortyapi.com/. можете использовать его же.

Проверьте, что в API:

  • есть пагинация (вам возвращают ссылку на следующую страницу сущностей или номер следующей страницы)
  • есть картинки (сущность содержит ссылку на картинку/аватар сущности)

Приложение должно:

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

Прочитать

  • Что такое SOLID?
  • Зачем нужны strong, weak, unowned ссылки?
  • Чем асинхронность отличается от многопоточности?
  • Что такое GCD? Расскажите про виды очередей?

Материалы

12 марта, ДЗ №3

Запись лекции

Верстка, Линтер

Сделать

  • Добавить зависимость через CocoaPods. Как минимум линтер, но можешь использовать что-то интереснее.
  • Добавить линтер. Я сделал для тебя конфиг файл с нужными правилами. Его нужно положить в корень своего проекта. Можно спросить, зачем то или иное правило нужно
  • Добавить констрейнты (autolayout), приложение должно нормально выглядеть на всех айфонах

Прочитать

  • Что такое deadlock/livelock? Приведи пример, как добиться в iOS
  • Что такое KISS и DRY?
  • Перечислите все способы работы с optional в Swift?
  • В чем разница Dependency Injection и Dependency Inversion? Пример?
  • Что такое method dispatch? Какиой бывают в свифте?

Материалы

29 марта, ДЗ №4

Запись лекции

Realm, кэш Устройство на работу

Сделать

  • Добавить поддержку оффлайн режима в приложение. Сохранить в базу загружаемые с API сущности и показывать их, если нет подключения. Можно использовать Realm/CoreData/SQLite
  • Добавить в приложение pull-to-refresh
  • (опционально) добавить в приложение индикатор загрузки следующей страницы данных с API. Долистали до низу таблицы -> показали индикатор активности -> отправили запрос -> дождались ответа -> спрятали индикатор активности
  • (опционально) подписаться на мой подкаст

Прочитать

  • (не успели в прошлый раз) В чем разница Dependency Injection и Dependency Inversion? Пример?
  • (не успели в прошлый раз) Что такое method dispatch? Какиой бывают в свифте?
  • Расшифровать и объяснить аббревиатуры CRUD и ACID
  • Функции высшего порядка: что это, зачем нужно, приведи пример в Swift
  • Что такое view.frame и view.bounds? Чем отличаются?

Материалы

4 апреля, ДЗ №5 (на две недели)

Запись лекции

CALayer, анимации

Сделать

  • Придумать и реализовать анимацию. Если идей нет, то сделай квадрат с тенью, бесконечно двигающийся по треугольной траектории
  • Реализовать поиск по таблице сущностей (по имени/тэгам). Обновление таблицы должно быть анимировано. Нужно считать поисковый запрос, получить отфильтрованный массив сущностей и найти его diff с изначальным. Затем к diff применить анимацию insert/delete/reload. Для поиска diff лучше использовать фреймворк

Прочитать

  • (неправильно в прошлый раз) Что такое method dispatch? Какие виды есть в Swift? Назвать отличия
  • (неправильно в прошлый раз) Frame vs bounds? Когда bounds.origin не (0,0)?
  • Что такое CALayer? Зачем нужен? Отличие от UIView?
  • Что такое Explicit/implicit анимация?
  • Что такое layer model/presentation? В каких ситуациях у layer model/presentation разные значения?
  • Кто получает событие первым UIView или GestureRecognizer на нем?
  • Как рисовать на CPU, а как на GPU?

Материалы

18 апреля, ДЗ №6

Запись лекции

Архитектура и юнит тесты

Сделать

  • Написать тесты на приложение. Минимальный набор: протестировать методы loadMore и getData по аналогии с лекционным проектом
  • (Опционально) Внедрить в приложение любую понравившуюся архитектуру

Материалы

Прочитать

  • Что такое layer model/presentation? В каких ситуациях у layer model/presentation разные значения?
  • Mock vs stub vs spy?
  • MVC, MVVM, VIPER - расшифруй, че-нибудь расскажи

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published