Skip to content

Latest commit

 

History

History
450 lines (397 loc) · 22.3 KB

_README.md

File metadata and controls

450 lines (397 loc) · 22.3 KB

iOS Developer Roadmap

Memory manadgment

  • Stack and Heap
  • Value vs Reference type
  • ARC
  • MRC
  • Retain cycles
  • Memory leaks
  • Autorelease pool
  • Shallow and deep copying
  • Weak/Strong references

Swift

  • Closures
  • Generics
  • Initializers
  • Protocols
  • Struct
  • Enums
  • Runtime
  • Method dispatch

Multithreading and concurency

  • GCD
    • Semaphors
    • DispatchGroup
    • DispatchWorkItem
    • DispatchSource
  • NSOperationQueue
  • Race condition
  • Deadlock
  • Livelock
  • Readers/writers problem
  • Green threads
  • Runloop

UIKit

  • UIApplication
  • UIApplication: States
  • UIViews
    • UITableViews
    • UICollectionViews
  • Layout
    • Frame-based
    • Autolayout
  • Navigation
  • UIViewController
  • UIViewController: Lifecycle

Networking

  • URLSession
  • Alamofire
  • Rest API
  • Difference between GET, POST, PUT, PATCH, DELETE

Foundation

  • Notifications vs Delegation vs Observing
  • Collections
  • Networking
  • Serialization
    • NSCoding
    • Codable
    • JSON
    • XML

Software Architecture

  • MVC
  • MVVM
  • MVP
  • VIPER

Design patterns (17/31)

  • Creational
    • Factory
    • Abstract Factory
    • Builder
    • Factory Method
    • Prototype
    • Object Pool
    • Singleton
  • Structural
    • Adapter
    • Bridge
    • Composite
    • Decorator
    • Facade
    • Flyweight
    • Proxy
  • Behavioural
    • Command
    • Chain of responsibility
    • Interpreter
    • Iterator
    • Mediator
    • Memento
    • Observer
    • State
    • Strategy
    • Visitor
  • Other
    • Anti-pattern
    • Class cluster
    • Chain of Responsibility
    • Receptionist
    • Template Method

Design principles

  • SOLID
    • Single responsibility principle
    • Open/closed principle
    • Liskov substitution principle
    • Interface segregation principle
    • Dependency inversion principle
  • Inversion of Control
  • Dependency Injection
  • Dry (don't repeat yourself)
  • KISS (keep it simple, stupid)

Dependency management

  • Cocoapods
  • Carthage
  • Swift Package Manager

Version Control System

  • git
  • SVN

Caching and Presistency (2/4)

  • Core Data
  • Realm
  • YAPDatabase
  • SQLite

Testing (3/5)

  • Unit Tests
  • Snapshot Tests
  • Functional test
  • TDD
  • BDD

XCode/Tools/Debbuging (7/11)

  • Workspace/cocoapods
  • Interface Builder
  • Keychain
  • Security Transforms API
  • UI Debbuging
  • Reveal for UI Debuggin
  • Instruments: Leaks
  • Instruments: Time profiler
  • Instruments: Allocations
  • Zombies
  • Activity monitor
  • etc...

Continuous Integration (0/3)

  • Fastlane
  • Jenkins
  • Xcode server

Computer Science knowledge (2/22)

  • Algorithms
    • Sorting

    • Graph Theory -> Trees

    • Strings

    • Greedy

    • Dynamic Programming

    • Bit Manipulation

    • Recursion

    • Game Theory

    • NP Complete

    • Big-O notation

  • Abstract Data Types
    • Stack
    • Array
    • List
    • Map
    • Multimap
    • Set
    • Multiset (Bag)
    • Graph -> Tree
    • Queue
    • Priority Queue
    • Double-ended priority queue
    • Double-ended queue

Programming Paradigms (3/16)

  • Protocol-Oriented
  • OOP
  • Functional
  • React Native
  • RxSwift
  • RxRealm, RxDataSources

Libs, frameworks, pods, Kit's

  • ObjectMapper (pod)
  • Charts (pod)
  • Payments and subscription
  • Moya
  • BLE (Bluetooth Low Energy)
  • AVFoundation
  • AVKit
  • ARKit
  • HomeKit
  • MedKit
  • MapKit
  • YandexMap
  • Animations
    • Core Graphics
    • Core Animation
    • Transformation
  • tvOS
    • Focus interactions
    • WatchKit
  • TDD utils
    • Specta
    • Expecta
    • OCMock

Books

  • Ray Wenderlich
    • RxSwift       ◼◼◼◽◽◽◽◽◽◽ 33%
    • Animations ◼◽◽◽◽◽◽◽◽◽ 14%
  • Jon Hoffman. Swift 4. Protocol-oriented Programming

Course and tutorials

Articles (43/127)

Appendix

  • HTTP timeouts
  • Когда удаляются autorelease объекты
  • Unsafe Swift
  • Лицензирование (Licenses)
  • SSH
  • Increase FPS
  • Decrease memory footprint
  • Protobuf
  • Work in background mode
  • Learning Path: RxSwift from Start to Finish
  • fastlane Tutorial: Getting Started
  • Fastlane
  • Objective-C Runtime Programming Guide
  • Obj-Runtime
  • How Objective-C messaging works
  • Friday Q&A 2013-02-08: Let's Build Key-Value Coding
  • Friday Q&A 2009-08-14: Practical Blocks
  • How blocks are implemented (and the consequences)
  • generate a unique ID for each URL?
  • How would you generate unique IDs at scale (thousands of URL shortening requests coming every second)?
  • How would your service handle redirects?
  • How would you support custom short URLs?
  • How to delete expired URLs etc?
  • How to track click stats?
  • How would you record stats about videos e.g the total number of views, up-votes/down-votes, etc.
  • How would a user add comments on videos (in realtime)
  • How would you design one-on-one conversations between users?
  • How would you extend your design to support group chats?
  • What to do when the user is not connected to the internet?
  • When to send push notifications?
  • Can you provide end-to-end encryption. How?
  • Records stats for each answer e.g. the total number of views, upvotes/downvotes, etc.
  • Users should be able to follow other users or topics
  • Their timeline will consist of top questions from all the users and topics they follow (similar to newsfeed generation).
  • How would users be able to upload/view/search/share files or photos?
  • How would you track persmissions for file sharing
  • How would you allow multiple users to edit the same document
  • Efficient storage and search for posts or tweets.
  • Newsfeed generation
  • Social Graph (who befriends whom or who follows whom — specially when millions of users are following a celebrity)
  • The most critical use case — when a customer requests a ride and how to efficiently match them with the nearby drivers?
  • How to store millions of geographical locations for drivers and riders who are always moving.
  • How to handle updates to driver/rider locations (millions of updates every second)?
  • How to store previous search queries?
  • How to keep the data fresh?
  • How to find the best matches to the already typed string?
  • How to handle updates and the user is typing too fast?



Skills matrix

Контакты для связи: