前言
iOS開發(fā)者都想了解最新的面試情況,去做更充足的準(zhǔn)備,下面看那些有你自己不會的東西,自己可以研究下,也可以收藏以免不時之需!
第一部分底層必問題:
- 什么情況使用weak關(guān)鍵字,相比assign有什么不同?
- 深拷貝與淺拷貝
- 簡要說一下@autoreleasePool的數(shù)據(jù)結(jié)構(gòu)?
- autoreleasePool 在何時被釋放?
- 說一下iOS內(nèi)存分區(qū)情況
- 如何解決循環(huán)引用?
- Runloop 和線程的關(guān)系?
- isa指針的理解,對象的isa指針指向哪里?
- Runtime 如何實現(xiàn) weak 屬性?
- load和initialize的區(qū)別
- ......
第二部分性能優(yōu)化架構(gòu)能力:
- 造成tableView卡頓的原因有哪些?
- 如何提升 tableview 的流暢度?
- APP啟動時間應(yīng)從哪些方面優(yōu)化?
- 如何降低APP包的大???
- 日常如何檢查內(nèi)存泄露?
- iOS有哪些常見的設(shè)計模式?
- 單例會有什么弊端?
- MVC、MVP、MVVM模式
- 編程中的六大設(shè)計原則?
- ......
第三部分多線程、網(wǎng)絡(luò)能力:
- 什么是多線程?
- 多線程的優(yōu)點和缺點?
- 多線程的 并行 和 并發(fā) 有什么區(qū)別?
- 如何保證線程安全?
- 多線程中的死鎖?
- 線程之間是如何共享資源的?
- 進程之間如何共享資源?
- GCD執(zhí)行原理?
- 網(wǎng)絡(luò)的七層協(xié)議?
- Http 和 Https 的區(qū)別?Https為什么更加安全?
- 解釋一下 三次握手 和 四次揮手?
- socket編程里面,select、poll、epoll的區(qū)別和特點?
- client和server之間TCP通信,雙方使用到的socket函數(shù)以及過程?
- TLS的加密過程?
- TLS握手時的隨機數(shù)有什么作用?
- ......
第四部分?jǐn)?shù)據(jù)結(jié)構(gòu)算法:
- 鏈表和數(shù)組的區(qū)別是什么?插入和查詢的時間復(fù)雜度分別是多少?
- 哈希表是如何實現(xiàn)的?如何解決地址沖突?
- 排序題:冒泡排序,選擇排序,插入排序,快速排序(二路,三路)能寫出哪些?
- 鏈表題:如何檢測鏈表中是否有環(huán)?如何刪除鏈表中等于某個值的所有節(jié)點?
- 數(shù)組題:如何在有序數(shù)組中找出和等于給定值的兩個元素?如何合并兩個有序的數(shù)組之后保持有序?
- 二叉樹題:如何反轉(zhuǎn)二叉樹?如何驗證兩個二叉樹是完全相等的?
- 數(shù)據(jù)結(jié)構(gòu)的存儲一般常用的有幾種?各有什么特點?
- 如何用棧實現(xiàn)隊列?說一下思路。
- ......
總結(jié)整理的“iOS面試題技術(shù)點”分類,到這里就告一段落了!
資料下載:
"iOS簡歷模板+新iOS面試題+iOS提升視頻"網(wǎng)址 :
docs.qq.com/doc/DVWlQam9Qd3B1cEF2
有什么需要討論的地方歡迎大家指教。主要記錄一下準(zhǔn)備過程,和面試的一些總結(jié),希望能幫助到正在面試或者將要面試的同學(xué)吧