? ?地處北方一隅担平,今年很多公司春招沒來現(xiàn)場示绊,所以基本都是提前批的線上面試锭部,整個(gè)三月都過的比較累,4月份的校招應(yīng)該不參加了面褐,還是當(dāng)當(dāng)咸魚了拌禾,然后去實(shí)習(xí)了。
雖然之前一直比較抗拒背書和刷題展哭,但是經(jīng)歷之后發(fā)現(xiàn)自己的基礎(chǔ)是真的差湃窍,打好基礎(chǔ)真的很有必要。
1 問到的問題總結(jié):
?不能直接po原題匪傍,但是我總結(jié)了下背后的知識點(diǎn):以下的知識點(diǎn)都最好挖的深一點(diǎn)您市,我這里只是點(diǎn)一下,但是每個(gè)點(diǎn)都可以挖很深役衡,盡量都和runtime&runloop&性能優(yōu)化穿起來說茵休,結(jié)合自己遇到的坑說下)
..異步繪制&離屏幕渲染&CPU渲染和GPU渲染(說白了就是一些性能優(yōu)化,這塊比較看功底)
..UIView 生命周期手蝎,UIViewController的生命周期
..iOS中有哪些鎖(原理+應(yīng)用+優(yōu)化)
..怎么看待審核被拒
..runloop中將一個(gè)任務(wù)放到第二次runloop中執(zhí)行:利用socket/port做一些事情(封裝一個(gè)..source)
..UIKit框架架構(gòu)圖多看看
..id和instencetype的區(qū)別
..instrument的插件的使用(盡量都用一下)
..IMP和SEL以及具體執(zhí)行的操作
..在項(xiàng)目什么時(shí)候選擇使用GCD泽篮,什么時(shí)候選擇NSOperation?(根據(jù)項(xiàng)目規(guī)模以及接口的策略決定以及線程操作復(fù)雜程度)
..發(fā)現(xiàn)程序崩在一個(gè)objc_msgSend函數(shù)里面,這時(shí)候可以看的到當(dāng)前正在調(diào)用哪個(gè)對象的哪個(gè)selector嗎柑船?(可以的帽撑,可以查到調(diào)用的堆棧信息。還可以將這個(gè)堆棧信息dump下來)
..NSString類型的property常用copy的原因
..如何把異步線程轉(zhuǎn)化成同步線程進(jìn)行單元測試
..autoreleasepool的使用場景和原理:基于runloop回答鞍时,并且提及autoreleasepage的實(shí)現(xiàn)(基于雙向鏈表))
..對于Objective-C亏拉,你認(rèn)為它最大的優(yōu)點(diǎn)和最大的不足是什么?對于不足之處逆巍,現(xiàn)在有沒有可用的方法繞過這些不足來實(shí)現(xiàn)需求及塘。
..app內(nèi)存是怎么分析的:Xcode有兩種方法(有區(qū)別:是否計(jì)入圖片緩存)
..內(nèi)存的使用和優(yōu)化的注意事項(xiàng)
..怎樣使用performSelector傳入3個(gè)以上參數(shù),其中一個(gè)為結(jié)構(gòu)體锐极。
..nsstring對象的retainCount問題:(細(xì)摳下)
..isMemberOfClass 和 isKindOfClass 聯(lián)系與區(qū)別
..實(shí)現(xiàn)準(zhǔn)確的定時(shí)器:
..NSObject實(shí)現(xiàn)了哪些協(xié)議
..消息轉(zhuǎn)發(fā)的機(jī)制(基于runtime講全點(diǎn))
..使用runtime Associate方法關(guān)聯(lián)的對象笙僚,需要在主對象dealloc的時(shí)候釋放么
..能否向編譯后得到的類中增加實(shí)例變量?能否向運(yùn)行時(shí)創(chuàng)建的類中添加實(shí)例變量
..手勢相應(yīng)和觸摸事件傳播的優(yōu)先級以及處理等
1.2 計(jì)算機(jī)基礎(chǔ)(計(jì)網(wǎng)+數(shù)據(jù)結(jié)構(gòu)+編程基礎(chǔ)+操作系統(tǒng)):
..數(shù)據(jù)庫沒咋問就不po了灵再。肋层。。翎迁。
1.2.1計(jì)算機(jī)網(wǎng)絡(luò):
..NSURLConnection 相比栋猖,NSURLsession 改進(jìn):
..AFN用什么方式實(shí)現(xiàn)多線程
..TCP是基于流式傳輸?shù)模趺丛O(shè)計(jì)協(xié)議汪榔,進(jìn)行協(xié)議的解析蒲拉?
..怎么實(shí)現(xiàn)上傳/下載任務(wù)的斷點(diǎn)續(xù)傳
..發(fā)送網(wǎng)絡(luò)請求,什么時(shí)候連IP、什么時(shí)候連域名
..socket編程有了解嗎雌团?用在項(xiàng)目的哪里燃领?
..客戶端編程的時(shí)候,客戶端send成功了锦援,服務(wù)端沒收到猛蔽,有什么可能的原因
..只用TCP,如何設(shè)計(jì)這個(gè)聊天協(xié)議雨涛?
..http和scoket通信的區(qū)別。
..CFSocket使用有哪幾個(gè)步驟懦胞。Core Foundation中提供了哪幾種操作Socket的方法替久?
..HTTPS具體過程,7次握手躏尉,以及如何防止中間人攻擊的
..常見的狀態(tài)碼(應(yīng)用層次)
..URL重定向
..TCP蚯根、UDP的特點(diǎn)以及具體應(yīng)用
..滑動(dòng)窗口的理解以及慢開始的措施
1.2.2 數(shù)據(jù)結(jié)構(gòu):
..哈希表的實(shí)現(xiàn)(摳的很細(xì)):當(dāng)拉鏈長度超過閥值時(shí),會(huì)有什么優(yōu)化(參照J(rèn)DK的處理思想)
..常見的鏈表算法(參照《劍指 offer》)
..stack&queue算法(參照《劍指 offer》)
1.2.3 編程基礎(chǔ):
..浮點(diǎn)類型為什么不能精確
..幾種容器的查詢胀糜、插入效率
..可變?nèi)萜鞯膶?shí)現(xiàn)原理
..C++如何實(shí)現(xiàn)一個(gè)不能被繼承的class
..C的編譯過程
..動(dòng)態(tài)鏈接和靜態(tài)鏈接庫的區(qū)別
..C++和OC的區(qū)別
..GC和ARC的比較(GC是runtime的)
..單例的實(shí)現(xiàn)(加鎖和性能優(yōu)化)
..內(nèi)存的五大區(qū)域
..代碼文件編譯生成過程完成的事情
1.2.4 操作系統(tǒng)
..操作系統(tǒng)里線程切換是怎么實(shí)現(xiàn)的颅拦,怎么把線程調(diào)用函數(shù)的參數(shù)拋到另一個(gè)線程
..流水線的概念
..虛擬存儲器的頁面置換算法(編程實(shí)現(xiàn))
..死鎖的4個(gè)必要條件
..進(jìn)程間通信的方式
..緩沖區(qū)概念
..死鎖的預(yù)防算法
1.3 算法基礎(chǔ)相關(guān):
1.3.1圖:注意算法的靈活運(yùn)用
..最小生成樹(prime算法、kruskal算法)
..最短路徑算法(floyd教藻、dijkstra)
..圖中是否存在環(huán)
..DFS&BFS的應(yīng)用:迷宮問題比較多
..拓?fù)渑判?/p>
1.3.2 樹:基本都是2叉樹的算法
..這塊參照《劍指 offer》+自行百度常見的二叉樹算法
1.3.3 排序算法:
..一定要深入理解三種排序的原理以及優(yōu)化方法:比如大文件排序算法的優(yōu)化距帅,可利用快排和歸并的特點(diǎn),利用兩種排序的特點(diǎn)括堤,混合使用碌秸。
..堆排序
..快排:遞歸&非遞歸
..歸并:遞歸&非遞歸
..內(nèi)排序和外排序
1.3.4 DP:問的比較多,但是種類有限
1.3.4.1 LCS類:
..字符串最長公共子序列
..最長單調(diào)遞增子序列:先sort 然后轉(zhuǎn)化為LCS問題
1.3.4.2背包問題:
..0-1背包問題:
..數(shù)組分為兩個(gè)sum和盡量相等的子數(shù)組:背包容量=sum/2悄窃,轉(zhuǎn)化為0-1背包問題
..多背包問題:n個(gè)背包讥电,求最大和
..完全背包問題:
..硬幣組合問題:
1.3.4.4所有組合數(shù)問題
..1分2分5分的硬幣三種,組合成1角轧抗,共有多少種組合恩敌?
..一個(gè)人上臺階可以一次上1個(gè),2個(gè)横媚,或者3個(gè)纠炮,問這個(gè)人上n層的臺階,總共有幾種走法
1.3.4.5最小路徑和問題:
..矩陣的最小路徑和
..三角形的最小路徑和
1.4編程思想&設(shè)計(jì)模式等:
..編程思想?yún)⒄铡秈OS編程之道》
..設(shè)計(jì)模式主要是MVC&MVVM&MVCS的理解
..組件化需要了解下
..解耦的常用方法
..設(shè)計(jì)模塊的設(shè)計(jì)思路:
1灯蝴,操作隊(duì)列如何封裝GCD抗碰,達(dá)到設(shè)置最大并發(fā)數(shù)(信號量實(shí)現(xiàn))
2,NSNumber的設(shè)計(jì)(類簇的設(shè)計(jì)思想)
3绽乔,寬窄接口的設(shè)計(jì)等
2 推薦書籍:
.劍指offer(3編弧蝇,對應(yīng)牛客網(wǎng)的上的題全部刷完);
.面試寶典(C++版)一遍
.操作系統(tǒng)大概看一遍看疗;
.數(shù)據(jù)結(jié)構(gòu)一遍沙峻,主要是hash那片,平時(shí)不太關(guān)注的到的地方两芳,懂一些原理摔寨。
.計(jì)算機(jī)網(wǎng)絡(luò)【HTTP/HTTPS、tcp怖辆、udp是复、tcp/ip協(xié)議簇】大致是這些了
數(shù)據(jù)庫:
leetcode刷題,easy全部刷完+部分中等題或者攀Γ客網(wǎng)刷題均可
以下幾本書淑廊,多看幾遍,看一遍并不能很好的理解(可能是因?yàn)槲冶容^菜):
Objective-C高級編程(多線程與內(nèi)存管理)特咆;
Effective Objective-C 2.0季惩;
iOS編程之道
精通Objective-C