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