├── README.md
└── ios_interview_prep_icon.png
/README.md:
--------------------------------------------------------------------------------
1 |
2 |

3 |
iOS developer interview prep
4 |
5 | Curated list of topics for iOS development with links to resources. This place would help beginners and experienced developers prepare for the interview.
6 |
7 | [Complete version of the list in the form of a course](http://iosinterview.dev)
8 | Contact me via [Telegram](http://t.me/ya_miras)
9 |
10 | ## Algorithms
11 | - [ ] [Solutions to LeetCode in Swift](https://github.com/soapyigu/LeetCode-Swift)
12 | - [ ] [Data structures & algorithms](https://github.com/raywenderlich/swift-algorithm-club)
13 |
14 | ## Language
15 | #### Swift
16 | - [ ] [Value vs Reference, Stack vs Heap](https://abhimuralidharan.medium.com/difference-between-value-type-and-a-reference-type-in-ios-swift-18cb5145ad7a)
17 | - [ ] [COW](https://medium.com/@marthin.pasaribu_72336/copy-on-write-cow-with-swift-ce6c6583de38)
18 | - [ ] [Closures](https://abhimuralidharan.medium.com/functional-swift-all-about-closures-310bc8af31dd)
19 | - [ ] [Method dispatch](https://maxim-kryloff.medium.com/swift-method-dispatch-4ac7efab0388)
20 | - [ ] [Generics](https://www.kodeco.com/3535703-swift-generics-tutorial-getting-started)
21 |
22 | ## Memory management
23 | - [ ] [ARC, memory, strong weak unowned, management issues](https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html)
24 | - [ ] [Stack VS Heap, Stack Promotion, Boxing of Swift Value Types](https://www.vadimbulavin.com/value-types-and-reference-types-in-swift/)
25 | - [ ] [Memory layout in Swift](https://www.youtube.com/watch?v=ERYNyrfXjlg&t=11s) (Highly recommend)
26 | - [ ] [Advanced iOS memory management](https://www.vadimbulavin.com/swift-memory-management-arc-strong-weak-and-unowned/)
27 | - [ ] [Capture list](https://www.hackingwithswift.com/articles/179/capture-lists-in-swift-whats-the-difference-between-weak-strong-and-unowned-references)
28 | - [ ] [Autorelease](https://betterprogramming.pub/what-is-autorelease-pool-in-swift-c652784f329e)
29 | - [ ] [unsafe_unretained](https://stackoverflow.com/questions/15968198/what-is-the-use-of-unsafe-unretained-attribute)
30 | - [ ] [Memory leaks](https://medium.com/flawless-app-stories/all-about-memory-leaks-in-ios-cdd450d0cc34)
31 | - [ ] [Manual memory management](https://www.tomdalling.com/blog/cocoa/an-in-depth-look-at-manual-memory-management-in-objective-c/)
32 |
33 | ## Concurrency
34 | - [ ] [NSOperation](https://nshipster.com/nsoperation/)
35 | - [ ] [GCD with examples](https://dev-wd.github.io/swift/gcd/)
36 | - [ ] [Concurrency Programming Guide](https://developer.apple.com/library/archive/documentation/General/Conceptual/ConcurrencyProgrammingGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008091-CH1-SW1)
37 | - [ ] [Parallel programming with swift](https://medium.com/swift-india/parallel-programming-with-swift-part-2-4-46a3c6262359)
38 | - [ ] [Threading Programming Guide](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/Multithreading/Introduction/Introduction.html)
39 | - [ ] [Concurrency pitfalls](https://medium.com/flawless-app-stories/concurrency-visualized-part-3-pitfalls-and-conclusion-2b893e04b97d)
40 | - [ ] [Avoiding race conditions](https://medium.com/swiftcairo/avoiding-race-conditions-in-swift-9ccef0ec0b26)
41 | - [ ] [Thread safety in iOS to avoid race conditions/deadlock](https://varun04tomar.medium.com/thread-safety-in-ios-to-avoid-race-conditions-read-and-write-problem-deadlock-swift-4a583e1b8a95)
42 |
43 | #### Other
44 | - [ ] [Swift Concurrency Documentation](https://docs.swift.org/swift-book/LanguageGuide/Concurrency.html)
45 | - [ ] [?Async/Await](https://developer.apple.com/news/?id=2o3euotz)
46 | - [ ] [?Actors and Async/Await](https://www.hackingwithswift.com/quick-start/concurrency)
47 |
48 | ## UIKit
49 | #### App
50 | - [ ] [Managing Your App's Life Cycle](https://docs.swift.org/swift-book/documentation/the-swift-programming-language/concurrency/)
51 | - [ ] [Application life cycle in iOS](https://manasaprema04.medium.com/application-life-cycle-in-ios-f7365d8c1636)
52 | - [ ] [Relationship between UIApplication, UIApplicationDelegate, UISceneDelegate](https://manasaprema04.medium.com/scene-delegate-vs-appdelegate-86e22dc17fcb)
53 |
54 | #### View controller
55 | - [ ] [UIViewController lifecycle](https://developer.apple.com/documentation/uikit/uiviewcontroller)
56 |
57 | #### View
58 | - [ ] [UIView and UIWindow programming guide](https://developer.apple.com/library/archive/documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/Introduction/Introduction.html#//apple_ref/doc/uid/TP40009503-CH1-SW2)
59 | - [ ] [UIView vs CALayer](https://stackoverflow.com/questions/7826306/what-are-the-differences-between-a-uiview-and-a-calayer)
60 | - [ ] [Layout cycle](https://tech.gc.com/demystifying-ios-layout/)
61 |
62 | #### Layout
63 | - [ ] [Compression resistance and hugging priority](https://abhimuralidharan.medium.com/ios-content-hugging-and-content-compression-resistance-priorities-476fb5828ef)
64 | - [ ] [Frame vs Bound](https://programmingwithswift.com/difference-between-frame-and-bounds-in-swift/)
65 |
66 | #### Other
67 | - [ ] [Using Responders and the Responder Chain to Handle Events](https://developer.apple.com/documentation/uikit/touches_presses_and_gestures/using_responders_and_the_responder_chain_to_handle_events)
68 | - [ ] [Hit testing](http://smnh.me/hit-testing-in-ios/)
69 |
70 | ## Architecture
71 | - [ ] [MVC](https://medium.com/flawless-app-stories/the-only-viable-ios-architecture-c42f7b4c845d)
72 | - [ ] [Service-Oriented Architecture](https://livefront.com/writing/creating-a-service-layer-in-swift/)
73 | - [ ] [Modular architecture](https://medium.com/flawless-app-stories/a-modular-architecture-in-swift-aafd9026aa99)
74 | - [ ] [?VIPER](https://www.objc.io/issues/13-architecture/viper/)
75 | - [ ] [?Implementing VIPER architecture](https://medium.com/flawless-app-stories/implementing-viper-archticture-pattern-for-ios-d24a6def8ba2)
76 | - [ ] [?MVVM](https://medium.com/flawless-app-stories/advanced-ios-tutorial-use-mvvm-to-tackle-complicated-tableview-a2386ee817a9)
77 |
78 | #### Other
79 | - [ ] [Composable Architecture](https://www.pointfree.co/collections/composable-architecture)
80 |
81 | #### Fundamental knowledge
82 | - [ ] [OOP](https://www.coursera.org/learn/object-oriented-design)
83 | - [ ] [Design Patterns](https://www.coursera.org/learn/design-patterns)
84 | - [ ] Cocoa Design Patterns
85 | - [ ] [old version](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaDesignPatterns/CocoaDesignPatterns.html)
86 | - [ ] [new version](https://developer.apple.com/documentation/swift/cocoa_design_patterns)
87 | - [ ] [KVC](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/KeyValueCoding/index.html#//apple_ref/doc/uid/10000107-SW1)
88 | - [ ] [KVO](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html#//apple_ref/doc/uid/10000177i)
89 | - [ ] [POP](https://www.youtube.com/watch?v=p3zo4ptMBiQ&pp=ygUjcHJvdG9jb2wgb3JpZW50ZWQgcHJvZ3JhbW1pbmcgc3dpZnQ%3D)
90 | - [ ] [Protocol and Value oriented programming in UIKit Apps](https://www.youtube.com/watch?v=SCW0lb7qClw)
91 | - [ ] [Github repo](https://github.com/ochococo/OOD-Principles-In-Swift) showing SOLID principles
92 | - [ ] [SOLID in Swift](https://codeburst.io/solid-design-principle-using-swift-fa67443672b8)
93 | - [ ] [DI](https://medium.com/makingtuenti/dependency-injection-in-swift-part-1-236fddad144a)
94 |
95 | #### Other
96 | - [ ] [Declarative vs Imperative programming](https://medium.com/flawless-app-stories/declarative-and-imperative-programming-using-swiftui-and-uikit-c91f1f104252)
97 |
98 | ## Testing
99 | You need to be able to write a small test (possibly refactor the code prior to implementing the test).
100 | - [ ] [XCTest](https://www.kodeco.com/21020457-ios-unit-testing-and-ui-testing-tutorial)
101 |
102 | ---
103 | Further material is not asked in the interview, but nice to know
104 |
105 | ## Library
106 | - [ ] [What is a library](https://theswiftdev.com/building-static-and-dynamic-swift-libraries-using-the-swift-compiler/)
107 | - [ ] [Static and dynamic frameworks](https://www.vadimbulavin.com/static-dynamic-frameworks-and-libraries/)
108 | - [ ] [CocoaPods Under The Hood](https://www.objc.io/issues/6-build-tools/cocoapods-under-the-hood/)
109 | - [ ] [Carthage or cocoapods](https://medium.com/xcblog/carthage-or-cocoapods-that-is-the-question-1074edaafbcb)
110 | - [ ] [SPM](https://developer.apple.com/documentation/swift_packages/adding_package_dependencies_to_your_app)
111 | - [ ] [Binary Frameworks in Swift](https://asciiwwdc.com/2019/sessions/416)
112 |
113 | ## Xcode
114 | - [ ] [Xcode build system](https://www.vadimbulavin.com/xcode-build-system/)
115 | - [ ] [A dive into Xcode projects and workspaces](https://mokacoding.com/blog/xcode-projects-and-workspaces/)
116 | - [ ] [Xcode concepts](https://developer.apple.com/library/archive/featuredarticles/XcodeConcepts/Concept-Schemes.html)
117 | - [ ] [Managing different Environments using XCode Build Schemes and Configurations](https://medium.com/flawless-app-stories/managing-different-environments-using-xcode-build-schemes-and-configurations-af7c43f5be19)
118 | - [ ] [Distribution](https://help.apple.com/xcode/mac/current/#/dev8b4250b57)
119 |
120 | ---
121 | ## Community
122 | - Hopefully, you found the following material useful. It will always be open to improvement. If you find a great material that you think is frequently asked on the interviews, do not hesitate to submit a PR.
123 | - You find a broken link, please, contact me on one of socials below or drop an issue on the repo!
124 |
125 |
126 |
Mock Interview
127 |
128 | I also conduct mock interviews. You can schedule one by contacting me on one of these socials.
129 |
130 | 📩 - mirasaujan@gmail.com
131 |
132 | ✈️ - http://t.me/ya_miras
133 |
--------------------------------------------------------------------------------
/ios_interview_prep_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mirasaujan/iOS-interview-prep/c3cb8bedc449829500c315977963cddd96105515/ios_interview_prep_icon.png
--------------------------------------------------------------------------------