ios的風(fēng)已吹過(guò),繼續(xù)ios還是走c/c++后臺(tái)開(kāi)發(fā)?
或者風(fēng)停了豬都摔下來(lái)了,需要更專業(yè)的人士?
你為什么拿高薪?別人為什么招聘你?
為了節(jié)省時(shí)間,需要更高效的方法,更高效的分工,花一些代價(jià)取得更大的成果是非常劃算的
準(zhǔn)備
2 weeks
效
深入了解并精通iOS編程
設(shè)計(jì)思想及解決問(wèn)題的思路
博客
期刊
開(kāi)源庫(kù)研究透徹
AFNetWorking
SDWebImage
FMDB
Mantle 數(shù)據(jù)到模型
JSONModel
Masonry 布局
AsyncDisplayKit
框架
weex
reactive native
ReactiveCocoa
語(yǔ)言
Object-C
Swift
C/C++
擅長(zhǎng)點(diǎn)
架構(gòu) - 設(shè)計(jì)
網(wǎng)絡(luò)
做過(guò)什么
偶撲
多米
系統(tǒng)全面了解
iOS 系統(tǒng)知識(shí)都了解并精通
iOS最新知識(shí)都有所想法
其他
語(yǔ)言表達(dá)能力要增強(qiáng)
多張口閱讀文集
注意
需要更多的項(xiàng)目經(jīng)驗(yàn)
偶撲+多米 APP項(xiàng)目經(jīng)驗(yàn)
偶撲整個(gè)APP、蜜語(yǔ)部分
蜜語(yǔ)用到的技術(shù):
主要問(wèn)題:
內(nèi)存管理
runloop 、runtime
多線程
UI效果優(yōu)化,離屏渲染
性能優(yōu)化
崩潰處理
架構(gòu)設(shè)計(jì)
Pods的原理
網(wǎng)絡(luò)通信
今日頭條
c++虛函數(shù)幾內(nèi)存布局
i?o?s基更深入一些
如何知道一個(gè)類對(duì)象釋放了,打印日志
UIController是否有UIResponder,有,能響應(yīng)事件
粉筆網(wǎng)
三面都是技術(shù)面
iOS基礎(chǔ)知識(shí)扎實(shí)就可以,一些簡(jiǎn)單的算法題
UI相關(guān)的Autolayout原理及刷新相關(guān)函數(shù)
layoutSubviews:addSubViews、frame變化、滾動(dòng)UIScrollView、改變UIView大小(觸發(fā)父類),都會(huì)觸發(fā)調(diào)用layoutSubViews;
layoutIfNeeded:如果有需要刷新的標(biāo)記,立即調(diào)用layoutSubviews進(jìn)行布局,setNeedsLayout只會(huì)標(biāo)記,不會(huì)立即刷新
注意:約束的動(dòng)畫(huà)需要在block使用layoutIfNeeded,否則動(dòng)畫(huà)不起作用;
drawRect:viewDidLoad后、sizeToFit、frame變化,都會(huì)觸發(fā)drawRect
高德地圖
做定位的主要問(wèn)C++知識(shí)
簡(jiǎn)單的算法題
二面:
準(zhǔn)備:linux系統(tǒng)相關(guān),C++高級(jí)(多線程,同步,進(jìn)程間通信等)
小紅書(shū)
基本知識(shí)點(diǎn)
設(shè)計(jì)問(wèn)題
視頻播放技術(shù)
離屏渲染優(yōu)化?
解決的問(wèn)題
多米音樂(lè)可能爆機(jī)的問(wèn)題,編寫(xiě)單元測(cè)試,將業(yè)務(wù)分離,根據(jù)SDK業(yè)務(wù)接口可能返回的任一情況對(duì)整個(gè)業(yè)務(wù)進(jìn)行單元測(cè)試;
優(yōu)酷土豆
項(xiàng)目上的問(wèn)題
網(wǎng)絡(luò)+多媒體相關(guān)問(wèn)題
結(jié)構(gòu)設(shè)計(jì)及相應(yīng)處理
ios內(nèi)存管理深入問(wèn)題
iOS編譯原理
京東
面試太簡(jiǎn)單
多米問(wèn)題:
個(gè)別南方用戶有時(shí)網(wǎng)絡(luò)異常,切換南邊備用服務(wù)器;
改用http服務(wù)請(qǐng)求;
偶撲問(wèn)題:
功能冗余切除,結(jié)構(gòu)重組,設(shè)計(jì)模式; MVC --> MVVM ,數(shù)據(jù)與模型的設(shè)計(jì);
性能改善,啟動(dòng)性能,加載緩存數(shù)據(jù)假象APP已啟動(dòng);
UI及流暢度優(yōu)化,數(shù)據(jù)性能;
美團(tuán)點(diǎn)評(píng)
ios load category:
http://blog.csdn.net/a316212802/article/details/49894421
category被附加到類上面是在map_images的時(shí)候發(fā)生的
附加category到類的工作會(huì)先于+load方法的執(zhí)行
類和category中都可以有+load方法,都可以被調(diào)用
load的執(zhí)行順序是先類,后category,而category的+load執(zhí)行順序是根據(jù)編譯順序決定的
crash log 解析,crash +APP包+符號(hào)文件(DYSM) 用xcode查看,或者用命令執(zhí)行具體的崩潰地址查看
AES,RSA 實(shí)現(xiàn)原理
股票雷達(dá)
下午5點(diǎn)
常用開(kāi)源庫(kù)
AFNetworking //
SDWebImage // image cache, handle image in background thread
FMDB // seal with sqlite (light db)
Masonry // NSLayoutConstraint
SWTableViewCell // tableview cell 滑動(dòng)效果,
--> SWTableViewCell是一個(gè)繼承自UITableViewCell的自定義Cell,它上面放了一個(gè)UIScrollerView,這個(gè)滾動(dòng)視圖上放了Cell內(nèi)容、左側(cè)操作菜單和右側(cè)操作菜單。主要技術(shù)是scrollview滑動(dòng),速度velocity的處理。
YYText // coretext
Mantle json to model // kvc
ReactiveCocoa // runtime swizzle,將block、KVO、delegate統(tǒng)一為signal來(lái)處理;RAC有一個(gè)主要的優(yōu)點(diǎn),就是提供了一個(gè)單一的,統(tǒng)一的方法去處理異步的行為,包括delegate方法,blocks回調(diào),target-action機(jī)制,notifications和KVO;
MLeaksFinder // 判斷視圖相關(guān)對(duì)象是否釋放,質(zhì)量較高的代碼
--> 基類 NSObject 添加一個(gè)方法 -willDealloc 方法,該方法的作用是,在對(duì)象將要釋放時(shí),先用一個(gè)弱指針指向 self,并在一小段時(shí)間(3秒)后,通過(guò)這個(gè)弱指針調(diào)用 -assertNotDealloc,而 -assertNotDealloc 主要作用是直接中斷言;
swizzle相關(guān)方法:viewDidAppear、viewWillAppear、popViewController、pushViewController等
問(wèn)題:
變高的cell的自適應(yīng)?
self.tableView.estimatedRowHeight = 100; //保障滑動(dòng)流暢性,使需要的cell才進(jìn)行高度自適應(yīng)計(jì)算
cell.contentView.translatesAutoresizingMaskIntoConstraints = NO;
cell.model // 賦予數(shù)據(jù)模型,確定控件中子視圖是否有數(shù)據(jù)
addConstraint:widthConstraint(NSLayoutConstraint) //添加寬度約束
[cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height; //根據(jù)寬度約束計(jì)算及視圖中數(shù)據(jù),計(jì)算出cell高度
removeConstraint:widthConstraint //移除寬度約束
PS:可對(duì)model.hash為key對(duì)cell自適應(yīng)計(jì)算的高度進(jìn)行緩存(NSCache),可極大提高效率;
iOS各個(gè)版本特點(diǎn)
參考:https://developer.apple.com/library/content/releasenotes/General/WhatsNewIniOS/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008246
iOS1.0 2007 未公開(kāi)
iOS5.0 2011 引入ARC機(jī)制,storyboard
iOS6.0 2012 Maps, UICollectionView、AutoLayout、OpenGL ES
iOS7.0 2013 TouchID
iOS8.0 2014 ApplePay
iOS9.0 2015 統(tǒng)一HTTPS,3D touch、swift2
iOS10.0 2016 推送通知升級(jí)、語(yǔ)音識(shí)別
iOS 11.0 2017 Machine Learning Model,相機(jī)功能調(diào)整的比較多
性能穩(wěn)定:
蘋(píng)果限制了熱更新,更需要代碼發(fā)布的穩(wěn)定性;
靜態(tài)分析,crash報(bào)告上傳
內(nèi)存:循環(huán)引用、大數(shù)據(jù)處理、緩存
使用instrument的leaks檢測(cè),MLeaksFinder檢測(cè)
UI:動(dòng)畫(huà)優(yōu)化、大量加載、渲染
使用CADisplayLink來(lái)監(jiān)控FPS,CADisplayLink是一個(gè)能讓我們以和屏幕刷新率相同的頻率將內(nèi)容畫(huà)到屏幕上的定時(shí)器;
啟動(dòng):?jiǎn)?dòng)時(shí)間優(yōu)化,launch前,launch后
測(cè)試:?jiǎn)卧獪y(cè)試;
XCTest,邊界測(cè)試
熱修復(fù):
JSPatch 的原理就是:JS傳遞字符串給OC,OC通過(guò) Runtime 接口調(diào)用和替換OC方法;
問(wèn)題:
timer的處理,timer的會(huì)強(qiáng)引用其target,所以處理方案可以是:
將target換成一個(gè)代理對(duì)象,代理對(duì)象weak引用原target,并將timer的selector轉(zhuǎn)發(fā)給原target;
將timer變成傳遞block使用,block弱引用target即可;
網(wǎng)絡(luò)優(yōu)化 & 安全
有自己的 url --> ip 的DNS映射緩存;
請(qǐng)求壓縮;
RTT(route trip time),一個(gè)鏈路傳輸時(shí)間,能反應(yīng)網(wǎng)絡(luò)擁塞狀態(tài);
MSS(Maximum Segment Size), IP包的最大報(bào)文段長(zhǎng)度;
合理的并發(fā)數(shù);
多條線路切換,有TCP長(zhǎng)連接、HTTP等混合的方式;
可靠性保障:必須要傳達(dá)的請(qǐng)求,將請(qǐng)求保存在本地直到發(fā)送成功;
安全:
重要信息不要明文放到plist或DB中,要經(jīng)過(guò)加密處理;
每次的服務(wù)請(qǐng)求要加鑒權(quán)驗(yàn)證處理;
最好重要信息都加一些自定義的加密;
reveal可以在越獄手機(jī) 上可以查看任何APP的UI結(jié)構(gòu)
OC代碼是可以反編譯出來(lái)的,不要在代碼中獲取關(guān)鍵數(shù)據(jù),可以從服務(wù)器拉取;
反編譯可以查看到很多代碼邏輯及重要數(shù)據(jù)信息;
協(xié)議或軟件總有漏洞,所以關(guān)鍵的數(shù)據(jù)最好做一層自己的加密;
PS:
manager.securityPolicy.allowInvalidCertificates = YES; //AFNetworking設(shè)置允許使用無(wú)效證書(shū);
https://zhuanlan.zhihu.com/p/22943142
http://ios.jobbole.com/90594/
精通UI界面開(kāi)發(fā)
熟悉MVC,MVVM,組件化思維,了解RN;
不同版本iOS的特性與差異
Git和GitFlow分支管理,Hotpatch機(jī)制
性能和穩(wěn)定性優(yōu)化經(jīng)驗(yàn),熟悉常見(jiàn)性能穩(wěn)定策略
用戶體驗(yàn)的極致追求
良好的自測(cè)習(xí)慣
多線程、網(wǎng)絡(luò)、安全等編程經(jīng)驗(yàn)
TCP/HTTP/SPDY/DNS/CDN網(wǎng)絡(luò)知識(shí),了解網(wǎng)絡(luò)優(yōu)化策略及安全防范機(jī)制
較強(qiáng)的技術(shù)影響力,較高的鉆研學(xué)習(xí)熱情;
魔漫相機(jī)
筆試基礎(chǔ)
面試簡(jiǎn)單問(wèn)問(wèn)
機(jī)試 實(shí)現(xiàn)UI部分
基本功要求非常扎實(shí)
手動(dòng)實(shí)現(xiàn)代碼的能力與效率
猿題庫(kù)
自身APP實(shí)現(xiàn)的技術(shù)相關(guān)
簡(jiǎn)單算法題
經(jīng)驗(yàn)不足
熟悉常用SQL語(yǔ)句
create database name
drop database name
alter table name add column col type
select * from table1 where col=value
select count as totalcount from table1
select sum(field1) as sumvalue from table1
'insert into table1 (field1,field2) values(value1,value2) '
delete from table1 where something
update table1 set field1=value1 where field1 like ’%value1%'
參考:http://www.cnblogs.com/acpe/p/4970765.html
性能分析與調(diào)優(yōu):
UI渲染優(yōu)化,數(shù)據(jù)緩存優(yōu)化,設(shè)計(jì)優(yōu)化
用ARC管理內(nèi)存
| 在正確的地方使用reuseIdentifier
| 盡可能設(shè)置Views為完全透明opaque,盡可能減少subviews
| 避免龐大的XIB
| 不要block主線程
| 在Image Views中調(diào)整圖片大小
| 選擇正確的Collection
| 打開(kāi)gzip壓縮
| 重用和延遲加載(lazy load) Views
| cache緩存數(shù)據(jù)
| 權(quán)衡渲染方法
| 使用shadowPath加快渲染
| 重用機(jī)制,尤其是大開(kāi)銷對(duì)象
美團(tuán)
主要問(wèn)題:
知識(shí)點(diǎn)全面細(xì)致了解,書(shū)寫(xiě)總結(jié),開(kāi)博
系統(tǒng)深入了解
自己擅長(zhǎng)點(diǎn),優(yōu)點(diǎn)
解決的疑難點(diǎn)
維護(hù)的開(kāi)源站+自己的APP
通用的框架非常熟:AF,SD,Mantle等;
主攻:
網(wǎng)絡(luò) + 疑難問(wèn)題:iOS網(wǎng)絡(luò)精通
設(shè)計(jì) SDK+系統(tǒng)架構(gòu):架構(gòu)及設(shè)計(jì)模式全面了解
-->查看 Stack Overflow 與 gitbook
meta class
Class 本身也有一個(gè) isa 指針,指向的是它的 MetaClass;
block底層原理:
實(shí)際編譯成C++是一個(gè)結(jié)構(gòu)體及函數(shù),會(huì)對(duì)外部變量進(jìn)行引用;
注意block形成循環(huán)引用的狀況;
block是為了解決什么問(wèn)題使用的?
該變r(jià)eadonly屬性的變量
使用 setValue:forKey:(KVC)改變變量;
因?yàn)閞eadonly標(biāo)識(shí)編譯期間不生成setter方法,而setValue:forKey:是運(yùn)行時(shí)方法,騙過(guò)了編譯器;
圖片渲染過(guò)程:
CPU 計(jì)算好顯示內(nèi)容提交到 GPU,GPU 渲染完成后將渲染結(jié)果放入幀緩沖區(qū),隨后視頻控制器會(huì)按照 VSync 信號(hào)如下圖1-4所示,逐行讀取幀緩沖區(qū)的數(shù)據(jù),經(jīng)過(guò)可能的數(shù)模轉(zhuǎn)換傳遞給顯示器顯示;
參考:http://www.cocoachina.com/ios/20151203/14549.html
png與jpg的區(qū)別:
png有透明通道, jpg沒(méi)有.png有手機(jī)硬解碼加速 無(wú)損顯示效果好;
png加載速度快, 顯示效果好;
xcode也會(huì)對(duì)png圖片進(jìn)行優(yōu)化,jpg沒(méi)有;
jpg高壓縮率,適合掃描使用;
Runloop的結(jié)構(gòu)和循環(huán)流程:
一個(gè)線程對(duì)應(yīng)一個(gè)runloop,runloop中有幾種模式用于區(qū)別不同任務(wù);runloop循環(huán)處理observer、timer、source三類;
在線程中添加runloop(并添加port)保證線程不退出;
將timer添加到runloop中,保證timer執(zhí)行;
NSOperationQueue和GCD區(qū)別:
NSOperationQueue對(duì)operation及線程狀態(tài)及依賴關(guān)系能進(jìn)行全面控制,GCD能更方便直觀的執(zhí)行;
線程安全:
加鎖的幾種方式:
@synchronized { 代碼塊 }
NSLock / NSUnlock
dispatch_semaphore_t 信號(hào)量,信號(hào)量為0不可用 dispatch_semaphore_wait (-1) / dispatch_semaphore_signal (+1);
NSCondition 條件鎖,NSCondition和NSLock、@synchronized等是不同的是,NSCondition可以給每個(gè)線程分別加鎖,加鎖后不影響其他線程進(jìn)入臨界區(qū);提供更高級(jí)的用法wait和signal,和條件信號(hào)量類似;
NSRecursiveLock 遞歸鎖,總共加鎖解鎖的次數(shù)要匹配;
NSURLSession 與 NSURLConnection:
NSURLSession是NSURLConnection 的替代者,在2013年蘋(píng)果全球開(kāi)發(fā)者大會(huì)(WWDC2013)隨iOS7一起發(fā)布,是對(duì)NSURLConnection進(jìn)行了重構(gòu)優(yōu)化后的新的網(wǎng)絡(luò)訪問(wèn)接口;
AFNetWorking 2.0 -> 3.0 將 NSURLConnection升級(jí)為NSURLSession了;
NSURLSession 創(chuàng)建了三種datatask,NSURLSessionDataTask,NSURLSessionUploadTask和NSURLSessionDownloadTask,創(chuàng)建的task都是掛起狀態(tài),需要resume才能啟動(dòng);
NSURLSession有取消、暫停、繼續(xù)三個(gè)方法;
NSURLConnection創(chuàng)建即默認(rèn)啟動(dòng),可取消,但不能繼續(xù)訪問(wèn),需要再次創(chuàng)建請(qǐng)求;
NSURLSession的斷點(diǎn)續(xù)傳更快捷,可暫停繼續(xù)上傳;
NSURLConnection下載文件時(shí),先將整個(gè)文件下載到內(nèi)存,然后再寫(xiě)入沙盒,如果文件比較大,就會(huì)出現(xiàn)內(nèi)存暴漲的情況;而使用NSURLSessionUploadTask下載文件,會(huì)默認(rèn)下載到沙盒中的tem文件夾中,不會(huì)出現(xiàn)內(nèi)存暴漲的情況,但在下載完成后會(huì)將tem中的臨時(shí)文件刪除,需要在初始化任務(wù)方法時(shí),在completionHandler回調(diào)中增加保存文件的代碼;
NSURLSession有sessionWithConfiguration接口,可對(duì)session的進(jìn)行配置,更加靈活;
參考:http://www.cnblogs.com/kakaluote123/articles/5426923.html
NSURLConnection是怎么封裝的:
NSURLConnectionDelegate | NSURLConnectionDataDelegate | NSURLConnectionDownloadDelegate
CFNetwork
CFNetwork更側(cè)重與網(wǎng)絡(luò)協(xié)議,F(xiàn)oundation則更傾向于API數(shù)據(jù)請(qǐng)求等,雖然框架也提供了一些操作,但是遠(yuǎn)不如CFNetwork豐富。在學(xué)習(xí)CFNetwork之前,需要先了解2個(gè)基礎(chǔ)API框架: CFSocket、CFStream;
做過(guò)什么動(dòng)畫(huà)?
動(dòng)畫(huà)實(shí)際上是對(duì)CALayer進(jìn)行的操作;
CAAnimation \ CAMediaTiming協(xié)議
iOS9.0之后新增CASpringAnimation類,它實(shí)現(xiàn)彈簧效果的動(dòng)畫(huà),是CABasicAnimation的子類;
核心動(dòng)畫(huà)可以使用的類:
CABasicAnimation | CAKeyframeAnimation | CATransition | CAAnimationGroup | CASpringAnimation
參考:http://www.cocoachina.com/ios/20160517/16290.html
https 原理
請(qǐng)求服務(wù) -> 返回crt公用證書(shū)(沒(méi)有顯示warning) -> 隨機(jī)生成key + crt加密 發(fā)送到服務(wù)端 -> crt解密獲得key -> 客戶端服務(wù)端都使用key對(duì)數(shù)據(jù)進(jìn)行對(duì)稱加密傳輸;
因?yàn)閗ey是只有客戶端跟服務(wù)端才知道的,所以保證了通信安全;
比http多了安全策略;
RSA加密原理:
RSA算法基于一個(gè)十分簡(jiǎn)單的數(shù)論事實(shí):將兩個(gè)大質(zhì)數(shù)相乘十分容易,但是想要對(duì)其乘積進(jìn)行因式分解卻極其困難,因此可以將乘積公開(kāi)作為加密密鑰。
非對(duì)稱加密算法:公鑰+私鑰
SDWebImage框架結(jié)構(gòu),緩存機(jī)制
git問(wèn)題:
rebase原理(將一個(gè)分支的全部修改添加到另一個(gè)分支):先將test分支的代碼checkout出來(lái),作為工作目錄,然后將master分支從test分支創(chuàng)建起的所有改變的補(bǔ)丁,依次打上,如果打補(bǔ)丁的時(shí)候出現(xiàn)了問(wèn)題,就會(huì)提示你處理沖突,處理好了,可以運(yùn)行g(shù)it rebase –continue;
git流程:暫存/提交/推送
組件化:
組件化的了解,代碼拆分以解決業(yè)務(wù)上的耦合;
組件化為了解決什么問(wèn)題
組件和組件之間沒(méi)有明確的約束;
組件單獨(dú)開(kāi)發(fā)、單獨(dú)測(cè)試,不能揉入主項(xiàng)目中開(kāi)發(fā),測(cè)試也可以針對(duì)性的測(cè)試;
使用url路由跳轉(zhuǎn),創(chuàng)建視圖控制器:
image.png
參考:http://www.lxweimin.com/p/afb9b52143d4
JSPatch 原理
Runtime 改變函數(shù)指向;
JSPatch 能做到通過(guò) JS 調(diào)用和改寫(xiě) OC 方法最根本的原因是 Objective-C 是動(dòng)態(tài)語(yǔ)言,OC 上所有方法的調(diào)用/類的生成都通過(guò) Objective-C Runtime 在運(yùn)行時(shí)進(jìn)行,我們可以通過(guò)類名/方法名反射得到相應(yīng)的類和方法,也可以替換某個(gè)類的方法為新的實(shí)現(xiàn),還可以新注冊(cè)一個(gè)類,為類添加方法;
消息傳遞:
單例與全局變量的區(qū)別
單例是一個(gè)share只能訪問(wèn)唯一的一個(gè)實(shí)例變量,alloc也只能返回唯一的一個(gè)實(shí)例,copy也只能返回唯一一個(gè)實(shí)例,所以創(chuàng)建的方法都只能指向唯一一個(gè)實(shí)例;
全局變量是是指向一個(gè)類變量,是可以變化的,可以生成多個(gè)實(shí)例;
設(shè)計(jì)模式的掌握
單例 觀察 工廠 代理 建造者
構(gòu)建模式:build pattern, 構(gòu)造函數(shù)將很多屬性出入進(jìn)去創(chuàng)建一個(gè)對(duì)象;
IOS可以創(chuàng)建時(shí)候傳入block函數(shù),參數(shù)為一個(gè)構(gòu)造模型對(duì)象,然后在block參數(shù)中進(jìn)行屬性賦值,構(gòu)造模型運(yùn)用參數(shù)創(chuàng)建一個(gè)對(duì)象并返回;
參考:http://www.cocoachina.com/ios/20150313/11328.html
MVC 與 MVVC
model view controller
model-view view controller
實(shí)際設(shè)計(jì)。。
編寫(xiě)單元測(cè)試
比如寫(xiě)一個(gè)網(wǎng)絡(luò)庫(kù),如何測(cè)試該網(wǎng)路庫(kù),用例寫(xiě)的更全面一些
接觸不多,知道用自帶的test進(jìn)行編寫(xiě)
如果沒(méi)有instruments如何檢測(cè)memory leak,zombie object之類的問(wèn)題
原理:如果不使用instruments工具,就自己利用runtime進(jìn)行函數(shù)hook替換加入響應(yīng)代碼進(jìn)行監(jiān)控處理;
通過(guò)hook改變函數(shù)實(shí)現(xiàn),監(jiān)聽(tīng)是否釋放,視圖控制器及子視圖等,在停止使用后;
在dealloc函數(shù)中打印log可以調(diào)試頁(yè)面是否釋放;
zombie(過(guò)渡釋放):打開(kāi)enable zombie object,相當(dāng)于用一個(gè)僵尸來(lái)替換默認(rèn)的dealloc實(shí)現(xiàn),也就是在引用計(jì)數(shù)降到0時(shí),該僵尸實(shí)現(xiàn)會(huì)將該對(duì)象轉(zhuǎn)換成僵尸對(duì)象;
HeapInspector-for-iOS 它通過(guò) hook 掉 alloc,dealloc,retain,release 等方法,來(lái)記錄對(duì)象的生命周期。具體的檢測(cè)內(nèi)存泄露的方法和原理,與 Instrument 的 Allocations 一致;
基本算法
分層打印:將打印完畢的節(jié)點(diǎn)的子節(jié)點(diǎn)放入隊(duì)列尾部待打印(vector)
時(shí)間復(fù)雜度為O(N)的排序?
最近讀寫(xiě)什么書(shū)
Jobs
讀過(guò)的開(kāi)源框架:
AFNetworking
github上關(guān)注的。。。
解決的問(wèn)題
pod更新的問(wèn)題,蘋(píng)果不支持js注入的三方架構(gòu)
去 stackoverflow上去查找;
自己擅長(zhǎng)的地方
C/C++混編
網(wǎng)絡(luò)編程
平臺(tái)架構(gòu)