以下是小編收集總結的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熱門面試技術文集