2018面試題:html
一、KVO、KVC 是什麼,各自底層的實現原理?ios
二、說說你理解的埋點?面試
三、消息轉發機制原理?算法
四、說說你理解的weak屬性,什麼狀況下使用 weak 關鍵字,相比 assign 有什麼不一樣??編程
五、假如Controller太臃腫,如何優化?json
六、項目中網絡層如何作安全處理?設計模式
七、main()以前的過程有哪些?數組
http://www.cocoachina.com/ios/20180305/22453.html安全
八、怎麼高效的實現控件的圓角效果?網絡
九、NSIRLConnection 和NSLRLSession 的區別是 麼? NSURLProtocol是作什麼的?
十、AutoLayout 中的優先級是什麼? UIScrollView 中使用Autolayout 會出現什麼問題?
十一、如何處理UITableVier 中Cell 動態計算高度的問題,都有哪些方案?
十二、UIview 和CAlayer 是什麼關係? 你 CLayer 作過什麼?
1三、你在什麼場景下會選擇使 Category ?類別有什麼做用?
1四、講講iOS事件響應鏈的原理?
1五、什麼是 method swizzing ? 講講你的使場景以及使時的注意事項?
1六、寫個「標準「宏 MIN ,這個宏輸兩個參數並返回較小的那個?
1七、介紹下 layoutSubview 和 drawRect?
1八、runloop 和線程有什麼關係?
1九、對程序性能的優化你有什麼建議?
20、分析json、xml 的區別 ? json、xml 解析方式的底層是如何讓處理的 ?
2一、重寫-個NSString類型的,retain 式聲明 name 屬性的 setter 和 getter 法( MRC ) ?
2二、用預處理指令 define 聲明個常數, 來代表一年中有多少秒(忽略閏年的問題)。
2三、IBOutlet 連出來的視圖屬性爲何能夠被設置成weak?
2四、屬性readwrite、readonly、assign、retain、copy、nonatomic 什麼做用 ? 在哪一種狀況下 ?
2五、#import 和 #include 有什麼區別? @class 呢 ? #import <> 和 #import"" 有什麼區別?
2六、指針與數組名的關係?
2七、OC中建立線程的方法是什麼? 若是在主線程中執行代碼,方法是什麼? 若是想延時執行代碼,方法是什麼?
2八、堆和棧的區別?
http://www.cocoachina.com/ios/20180425/23171.html
2九、設計模式是什麼? 你知道哪些設計模式,並簡要敘述?
30、MVC 、MVVM 、MVP 的區別?
3一、frame 和 bounds 有什麼不一樣?
3二、Objective-C的類能夠多重繼承麼?能夠實現多個接口麼?Category是什麼?重寫一個類的方式用繼承好仍是分類好?爲何?
3三、@property 的本質是什麼?ivar、getter、setter 是如何生成並添加到這個類中的
3四、@property中有哪些屬性關鍵字?/ @property 後面能夠有哪些修飾符?
3五、用@property聲明的 NSString / NSArray / NSDictionary 常用 copy 關鍵字,爲何?若是改用strong關鍵字,可能形成什麼問題?
3六、淺拷貝和深拷貝的區別?
3七、系統對象的 copy 與 mutableCopy 方法?
3八、這個寫法會出什麼問題:@property (nonatomic, copy) NSMutableArray *arr ;
3九、如何讓本身的類用 copy 修飾符?如何重寫帶 copy 關鍵字的 setter ?
40、寫一個 setter 方法用於完成 @property (nonatomic, retain) NSString *name ,寫一個 setter 方法用於完成 @property (nonatomic, copy) NSString *name
4一、@synthesize 和 @dynamic 分別有什麼做用?
4二、常見的 Objective-C 的數據類型有那些,和C的基本數據類型有什麼區別?如:NSInteger 和 int
4三、id 聲明的對象有什麼特性?
4四、Objective-C 如何對內存管理的,說說你的見解和解決方法?
4五、Objective-C 中建立線程的方法是什麼?若是在主線程中執行代碼,方法是什麼?若是想延時執行代碼、方法又是什麼?
4六、Category(類別)、 Extension(擴展)和繼承的區別?
4七、咱們說的OC是動態運行時語言是什麼意思?
4八、爲何咱們常見的delegate屬性都用是week而不是retain/strong ?
4九、何時用delete,何時用Notification ?
50、ViewController生命週期?
5一、方法和選擇器有何不一樣?
5二、你是否接觸過OC中的反射機制?簡單聊一下概念和使用?
5三、調用方法的兩種方式?
5四、如何對iOS設備進行性能測試?
5五、開發項目時你是怎麼檢查內存泄露?
5六、什麼是懶加載?
5七、類變量的 @public,@protected,@private,@package 聲明各有什麼含義?
5八、什麼是謂詞?
5九、isa指針問題?
60、如何訪問並修改一個類的私有屬性?
6一、一個 objc 對象的 isa 的指針指向什麼?有什麼做用?
6二、下面的代碼輸出什麼?
6三、寫一個完整的代理,包括聲明、實現?
6四、isKindOfClass、isMemberOfClass、selector 做用分別是什麼?
6五、delegate 和 notification 的區別?
6六、什麼是 block ?
6七、block反向傳值?
6八、block的注意點?
6九、BAD_ACCESS在什麼狀況下出現?
70、lldb(gdb)經常使用的控制檯調試命令?
7一、你通常是怎麼用 Instruments 的?
7二、iOS中經常使用的數據存儲方式有哪些?
7三、iOS的沙盒目錄結構是怎樣的?
7四、iOS多線程技術有哪幾種方式?
7五、GCD 與 NSOperation 的區別?
7六、寫出使用 GCD 方式從子線程回到主線程的方法代碼?
7七、如何用 GCD 同步若干個異步調用?(如根據若干個url異步加載多張圖片,而後在都下載完成後合成一張整圖)
7八、dispatch_barrier_async(柵欄函數)的做用是什麼?
7九、如下代碼運行結果如何?
80、什麼是 RunLoop ?
8一、什麼是 Runtime ?
8二、Runtime實現的機制是什麼,怎麼用,通常用於幹嗎 ?
8三、什麼是 Method Swizzle(黑魔法),什麼狀況下會使用?
8四、_objc_msgForward 函數是作什麼的,直接調用它將會發生什麼?
8五、什麼是 TCP / UDP ?
8六、通訊底層原理(OSI七層模型)?
8七、介紹一下 XMPP ?
8八、OC 中建立線程的方法是什麼?若是在主線程中執行代碼,方法是什麼?
8九、tableView 的重用機制?
90、用僞代碼寫一個線程安全的單例模式?
9一、如何實現視圖的變形?
9二、在手勢對象基礎類 UIGestureRecognizer 的經常使用子類手勢類型中哪兩個手勢發生後,響應只會執行一次?
9三、字符串經常使用方法?
9四、如何高性能的給 UIImageView 加個圓角?
9五、你是怎麼封裝一個 view 的?
9六、HTTP協議中 POST 方法和 GET 方法有那些區別?
9七、請簡單的介紹下 APNS 發送系統消息的機制?
9八、AFNetworking 底層原理分析?
9九、描述下 SDWebImage 裏面給 UIImageView 加載圖片的邏輯?
100、友盟統計接口統計的全部功能?
10一、不用中間變量,用兩種方法交換 A 和 B 的值?
10二、求最大公約數?
10三、模擬棧操做 ?
10四、排序算法?
10五、折半查找(二分查找)?
10六、在 Objective-C 中,enum 建議使用 NS_ENUM 和 NS_OPTIONS 宏來定義枚舉類型?
10七、避免使用C語言中的基本數據類型,建議使用 Foundation 數據類型,對應關係以下?
10八、談談 UITableView 的優化?
10九、如何實行cell的動態的行高?
1十、如何讓計時器調用一個類方法?
1十一、如何重寫類方法?
1十二、NSTimer 建立後,會在哪一個線程運行?
11三、id 和 NSObject* 的區別?
11四、iOS 開發逆向傳值的幾種方法整理 ?
11五、淺談iOS開發中方法延遲執行的幾種方式 ?
11六、NSPersistentStoreCoordinator , NSManaged0bjectContext 和 NSManaged0bject 中的那些須要在線程中建立或者傳遞?
11七、您是否作過一部的網絡處理和通信方面的工做?若是有,能具體介紹一下實現策略麼?
11八、你使用過 Objective-C 的運行時編程(Runtime Programming)麼?若是使用過,你用它作了什麼?你還能記得你所使用的相關的頭文件或者某些方法的名稱嗎?
11九、Core 開頭的系列的內容。是否使用過 CoreAnimation 和 CoreGraphics 。UI 框架和 CA,CG 框架的聯繫是什麼?分別用 CA 和 CG 作過些什麼動畫或者圖像上的內容。(有須要的話還能夠涉及 Quartz 的一些內容)?
120、是否使用過 CoreText 或者 CoreImage 等?若是使用過,請談談你使用 CoreText 或者 CoreImage 的體驗?
12一、NSNotification 和 KVO 的區別和用法是什麼?何時應該使用通知,何時應該使用 KVO,它們的實現上有什麼區別嗎?若是用 protocol 和 delegate(或者 delegate 的 Array )來實現相似的功能可能嗎?若是可能,會有什麼潛在的問題?若是不能,爲何?(雖然 protocol 和 delegate 這種東西面試已經面爛了…)
12二、你用過 NSOperationQueue 麼?若是用過或者瞭解的話,你爲何要使用 NSOperationQueue,實現了什麼?請描述它和 GCD 的區別和相似的地方(提示:能夠從二者的實現機制和適用範圍來描述)
12三、既然提到 GCD,那麼問一下在使用 GCD 以及 block 時要注意些什麼?它們兩是一回事兒麼?block 在 ARC 中和傳統的 MRC 中的行爲和用法有沒有什麼區別,須要注意些什麼?
12四、對於 Objective-C,你認爲它最大的優勢和最大的不足是什麼?對於不足之處,如今有沒有可用的方法繞過這些不足來實現需求。若是能夠的話,你有沒有考慮或者實踐太重新實現OC的一些功能,若是有,具體會如何作?
12五、你實現過一個框架或者庫以供別人使用麼?若是有,請談一談構建框架或者庫時候的經驗;若是沒有,請設想和設計框架的 public 的 API,並指出大概須要如何作、須要注意一些什麼方面,來使別人容易地使用你的框架?
https://www.jianshu.com/p/2e1b3f54b4f3