# iOS 面試題 # Justin 的問題們: ## App Life Cycle + ViewController Life Cycle App 整個重build時會經歷下面選項的那些步驟、順序是如何? App 縮下時會經歷下面選項的那些步驟、順序是如何? App 在背景打開時會經歷下面選項的那些步驟、順序是如何? 1. didFinishLaunchingWithOptions 2. viewDidLoad 3. viewWillAppear 4. applicationWillTerminate 5. viewWillDisappear 6. applicationDidEnterBackground 7. applicationWillResignActive 8. applicationDidBecomeActive 9. viewDidDisappear 10. applicationWillEnterForeground 11. viewDidAppear ## Memory leak 下面二個function會memory leak嗎? 如果會的話要如何改進? ``` func testLeakOne() { let anim = UIViewPropertyAnimator(duration: 2.0, curve: .linear) { self.view.backgroundColor = .red } anim.addCompletion { _ in self.view.backgroundColor = .white } self.closureStorage = anim } func testLeakTwo() { let view = self.view let anim = UIViewPropertyAnimator(duration: 2.0, curve: .linear) { view?.backgroundColor = .red } anim.addCompletion { _ in view?.backgroundColor = .white } self.closureStorage = anim } ``` # Cindy 的問題們: ## 自我介紹類 1. 為什麼會想離開前公司? 2. 希望待在什麼樣子的團隊? 3. 覺得自己是什麼類型的工程師? 4. 有跟哪類型的人無法合作嗎? ## 履歷 1. improve getting preview photo speed 2. Receive VoIP notiKcation and make phone ringing by CallKit when triggered doorbell, once answeredthe call the other devices will hangup ringing 3. CoreData, RealmSwift 4. Resolve Memory Leak, Data Race issue 5. some design patterns such as Singleton,Factory, Observer. ## 程式類 1. 用過 Combine 跟 SwiftUI 嗎? 2. API 要接連著打的時候,會怎麼處理? PromiseKit, DispatchWorkItem, NSOperation 4. 谈谈你对多线程开发的理解?ios中有几种实现多线程的方法? 5. Callback 會怎麼決定要用 closure or delegate? 6. 有用過什麼 Xcode Analyze 工具? (Zombie,...etc) 7. 有應用過什麼 Design Pattern? 8. 什么是 MVVM?主要目的是什么?优点有哪些? 9. 平常用什麼架構? 10. 會寫 UnitTest or UITest? 11. 如何 Debug? ## 團隊合作 1. 怎麼估自己的工作進度?(有跑過scrum嗎?) 2. Code review 如何進行? 3. 與同事意見不合的時候怎麼處理? 4. 有帶過團隊嗎? ## 自我進修 1. 有參加什麼社群?或寫自己的 Blog? 2. 下班後還會學習程式相關的知識嗎? 3. 有閱讀什麼技術 blog 嗎? # Alice 的問題們: ### 技術類 * OC 跟 Swift 有什麼差別嗎 * class 跟 struct 有什麼差別? * 如果要做離線功能,你會如何設計 * ARC 什麼時候會用 weak 跟 Unown * 有用過GCD嗎?跟我們分享你的使用情境 * mutating 跟 lazy 的使用時機? * 如果你發現 tableview 卡卡的你會怎麼檢查如何改善 ### 個人問題 * 跟同事產生衝突時是怎麼解決的? * 都用什麼方式與資源學習新知? * 為什麼會想來面試我們公司 * 有用過我們的 App 嗎?你覺得我們 App 有什麼需要改善的地方? * 過去有在公司導入過什麼技術或活動影響產品的方向嗎? * 你認為一個好的工程師需要有什麼特質