以下是小編收集總結的iOS技術點+面試題分類;看看你都會了嗎?
重點總結-四大分類:
- iOS底層原理
- 性能優化以及架構
- 多線程、網絡
- 資料結構算法
iOS底層原理(必問):iOS開發必備能力,也是大廠面試快速篩選人才方式之一。
- 對象底層原理
- 指針與記憶體的一些相關面試
-
弱引用Weak
-
的原理Block
-
原理AutoreleasePool
-
的原理Runloop
-
相關、消息轉發原理…Runtime
- 元件化
常問例題:
1. 什麼情況使用weak關鍵字,相比assign有什麼不同?
2. 深拷貝與淺拷貝
3. 簡要說一下@autoreleasePool的資料結構?
4. autoreleasePool 在何時被釋放?
5. 說一下iOS記憶體分區情況
6. 如何解決循環引用?
7. Runloop 和線程的關系?
8. isa指針的了解,對象的isa指針指向哪裡?
9. Runtime 如何實作 weak 屬性?
10. load和initialize的差別
11. ......
性能優化以及架構能力:目前大廠對于這一塊,非常重視;
- ①性能優化方面:
->tableView的優化
->界面卡頓原理
->app 性能分析
項目優化
- ②架構方面:設計模式、解耦手段、元件化…
常問例題:
1. 造成tableView卡頓的原因有哪些?
2. 如何提升 tableview 的流暢度?
3. APP啟動時間應從哪些方面優化?
4. 如何降低APP包的大小?
5. 日常如何檢查記憶體洩露?
6. iOS有哪些常見的設計模式?
7. 單例會有什麼弊端?
8. MVC、MVP、MVVM模式
9. 程式設計中的六大設計原則?
10. ......
多線程、網絡能力:iOS中進階開發,都應該了解,并且熟悉的知識點;
- 多線程的原理
- 線程池
- GCD
- 鎖相關原理
- 網絡設計
- 網絡架構的了解
- 開發過程中一些需求結合多線程或者網絡設計!
常問例題:
1. 程序與線程?
2. 什麼是多線程?
3. 多線程的優點和缺點?
4. 多線程的 并行 和 并發 有什麼差別?
5. 多線程中的死鎖?
6. GCD執行原理?
7. 網絡的七層協定?
8. Http 和 Https 的差別?Https為什麼更加安全?
9. 解釋一下 三次握手 和 四次揮手?
10. Cookie和Session
11. ......
資料結構算法能力占比比較大:通常一般大公司都會有一些筆試:雖然不在核心崗位對于資料結構算法要求不是非常嚴格,但是也會有一些正常的資料結構和算法的題
- 排序
- 資料結構設計
- 複雜度讨論
- 一些腦筋急轉彎的算法題
- …
常問例題:
1. 連結清單和數組的差別是什麼?插入和查詢的時間複雜度分别是多少?
2. 哈希表是如何實作的?如何解決位址沖突?
3. 排序題:冒泡排序,選擇排序,插入排序,快速排序(二路,三路)能寫出哪些?
4. 連結清單題:如何檢測連結清單中是否有環?如何删除連結清單中等于某個值的所有節點?
5. 數組題:如何在有序數組中找出和等于給定值的兩個元素?如何合并兩個有序的數組之後保持有序?
6. 二叉樹題:如何反轉二叉樹?如何驗證兩個二叉樹是完全相等的?
7. 資料結構的存儲一般常用的有幾種?各有什麼特點?
8. ......
iOS面試題答案,請看 “文末-推薦文集”
推薦閱讀:iOS熱門面試技術文集
- ① BAT等各個大廠iOS面試真題+答案大全
- ② iOS中進階開發必看的熱門書籍(經典必看)
- ③ iOS開發進階面試"履歷制作"指導