├── 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 --------------------------------------------------------------------------------