天天看點

iOS高階面試題之某某音樂的面試題

近期由于工作上的變動,也進行了新一輪iOS的面試。之前面試過很多家企業,一直沒有時間總結一把,今天把面試中遇到的一些經典題目列出來,答案則會稍後補充,以供大家學習:

1、ARC中weak和assign差別,分别用在什麼場景,weak的實作原理是什麼?

weak 用來修飾弱引用的屬性,在ARC環境下,所有指向這個對象的weak指針都将被置為nil。

asssign 相于于指針指派,不對引用計數進行操作,注意原對象不用了,一定要把這個設定為nil;簡單指派,對基礎資料類型 (例如NSInteger,CGFloat)和C資料類型(int, float, double, char, 等) 适用簡單資料類型。

2、GB2312,UTF-8,UTF-16,Unicode的差別和聯系,NSString内部存儲用的什麼編碼,為什麼選擇這種編碼?

3、NSSet和std::map中的key是以什麼資料結構存儲的?設計理由是什麼?為什麼沒有NSStack,NSQueue這兩種容器?

4、一台IPV4的電腦能直接和一台IPV6的電腦通過IP協定直接通信麼?

5、寫一段用GET方式請求位址為 http://qq.com/1.mp3的檔案的第一個位元組資料的Request Message 内容,内容從字母GET開始,包含一系列的Request field。

6、函數void dispatch_async(dispatch_queue_t queue,dispatch_block_t block)中第一個參數函數queue是什麼意思,和線程優先級有什麼關系?

7、編譯器是如何做到讓block塊内的代碼通路到block塊外的變量的,如果修改block外的變量,給變量增加__block字首的意義是什麼?

8、實作字元串比較函數,如果兩個指針指向的字元串内容一樣,傳回ture

bool strcmp(const char*psz1,const char *psz2)

9、實作一個OC類,這個類中可以儲存Int類型的資料,要求實作如下接口:可以向類中pop一個Int型資料,資料按照pop的時間順序存儲;可以從類中push出一個Int型資料,每次push出的資料都是最新時間插入的資料;可以從類中擷取最大的那個Int型資料。要求實作時間複雜度O(1)

繼續閱讀