Skip to content

Constantine1995/RoadMap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 

Repository files navigation

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
  • [[X] 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published