Giter VIP home page Giter VIP logo

ios's Introduction

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

Общее

Все материалы лекций лежат в 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 - расшифруй, че-нибудь расскажи

ios's People

Contributors

m0rtymerr avatar panandafog avatar alexanderkraynov avatar loupehope avatar coldlot avatar mordvintseva avatar kirkungurov avatar egromax avatar npinaev avatar gladunvladimir avatar dimka9910 avatar vortexastra avatar ch1skey avatar lindedaniil avatar mishka-technic avatar ivan2201 avatar daniilkornilov avatar rodchenkov-sn avatar 1kvin avatar adraspereza avatar boltunovaa avatar imlnn avatar kwsilence avatar bolart161 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.