iOS基礎:
- 多線程使用粟判,gcd跟operation區(qū)別,怎么取消正在執(zhí)行的gcd任務
- GCD 系列知識總結
- NSOperation相關知識總結
- 可以仿照operation的工作原理榴嗅,設置一個BOOL變量厨相,當需要停止時設置成YES,執(zhí)行任務的時候去判斷這個狀態(tài)
- 使用帶來的問題:資源競爭、優(yōu)先倒置缆巧、死鎖
- runtime的使用
- iOS Runtime詳解
- swizzling中hook一個方法要先class_addMethod,假如成功class_replaceMethod,失敗直接method_exchangeImplementations豌拙;這樣做的原因是防止本類中沒有實現(xiàn)這個方法陕悬,即使父類有實現(xiàn)這個方法也不應該替換父類該方法
- 項目中按鈕防止連續(xù)點擊
- 多頁面通知的封裝
- 歸檔解檔
3.runloop的理解跟應用
- iOS RunLoop詳解
- 本質上是一個while循環(huán),一個線程對應一個loop。主線程loop默認開啟按傅,子線程要自己手動開啟捉超。一個loop鐘有多個模式(mode),默認都是default模式唯绍。
- 子線程逼丛溃活,比如在子線程加一個定時器况芒,默認執(zhí)行一次就不會再執(zhí)行了
- 假如在主線程加一個定時器去修改UI,當我們滑動界面的時候就會發(fā)現(xiàn)UI不變了惜纸。因為默認是default模式,滑動界面時切換成響應模式。通過調整成common模式耐版,就可以解決這個問題了祠够。
- 重任務分散,比如批量大圖加載粪牲。
- 自動釋放池工作原理
AutoreleasePool的原理和實現(xiàn) - 響應鏈原理
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
if (!self.isUserInteractionEnabled || self.isHidden || self.alpha <= 0.01) {
return nil;
}
if ([self pointInside:point withEvent:event]) {//這邊point是在self上的位置
for (UIView *subview in [self.subviews reverseObjectEnumerator]) {
CGPoint convertedPoint = [subview convertPoint:point fromView:self];//convertedPoint是subView上的位置
UIView *hitTestView = [subview hitTest:convertedPoint withEvent:event];
if (hitTestView) {
return hitTestView;
}
}
return self;
}
return nil;
}
- 擴大按鈕點擊范圍
- 修改響應視圖
- 讓超出父視圖的子視圖響應操作
- 自動打包技術
- a,b任務并發(fā)執(zhí)行哪审,然后執(zhí)行c任務怎么做,有哪些方法實現(xiàn)
- dispatch_group_async(A),dispatch_group_async(B),dispatch_group_notify(C)
- operation設置任務C依賴A,依賴B
- 對C加柵欄
-(void)testBarrier{
dispatch_queue_t osConcurrent = dispatch_queue_create("dyConcurrent1", DISPATCH_QUEUE_CONCURRENT); //自己創(chuàng)建并行隊列
dispatch_async(osConcurrent, ^{
for (int i = 0; i< 3; i++) {
NSLog(@"任務1");
}
});
dispatch_async(osConcurrent, ^{
for (int i = 0; i< 3; i++) {
NSLog(@"任務2");
}
});
dispatch_barrier_async(osConcurrent, ^{//這邊一定要是自己創(chuàng)建的并行隊列虑瀑,系統(tǒng)global無效
NSLog(@"追加追加追加");
});
dispatch_async(osConcurrent, ^{
for (int i = 0; i< 3; i++) {
NSLog(@"任務3");
}
});
}
輸出:
任務1湿滓、2并發(fā)執(zhí)行,執(zhí)行完執(zhí)行追加追加舌狗,再執(zhí)行任務3
一個dispatch_barrier
允許你在一個并行隊列中創(chuàng)建一個同步點叽奥。當在隊列中遇到這個barrier時,這個barrier block便會延遲執(zhí)行(同時所有在其后的block都會延遲),直至所有在barrier之前的block執(zhí)行完成。這時,這個barrier block便會執(zhí)行痛侍。之后隊列便恢復正常執(zhí)行朝氓。
- 多線程中的鎖使用,要是你你怎么實現(xiàn)
網絡相關:
- https請求流程主届,哪一步有可能被攻破
- tcp,udp協(xié)議
數據結構:
- 數組赵哲、字典底層實現(xiàn)
開放性問題:
- 你的優(yōu)勢是什么
- 你們公司做的最好的是哪一塊
- 組建化做了嗎,路由要是你設計你怎么設計君丁,每種設計的優(yōu)缺點
- openUrl的方式 {scheme}://{module}/{page}?{para1=1¶2=2 ... }
- RN有了解嗎枫夺?你們公司為什么不用RN,原因是什么
- 要是你入職能為我們公司帶來哪些改變
- 最近在看什么書,以后職業(yè)規(guī)劃绘闷?
- 你有什么問題問我嗎橡庞?
最后附上瀏覽的其他面試心得: