ios面試題總結1

1.mvc和mvp的區別與使用的優缺點

MVP中的V在iOS中指的是ViewController和View。MVP將MVC的ViewController進行拆分:視圖數據邏輯處理部分爲P,ViewController剩餘部分與View合併成V。V和P之間通過Protocol進行通信。

MVP實現了各模塊的解藕,具有更好的可測試性。但是總體代碼量比MVC大。
另外,iOS MVC更適用於快速開發,即代碼規模較小的項目。因此將簡單的MVC的Demo改成MVP,反而會顯得笨拙。

2.iOS打包成功之後,運行在iPhone上會閃退,黑屏

一種是證書錯誤,另一種就是當前的設備並不在開發者對應的賬號裏面。

3.OC的字典實現原理

哈希表:

哈希:1、哈希算法 2、md5 3、SHA1 ...

可以自己寫個哈希涵數,把名字 key按 26個首字母進行排序 可以用13個格子進行儲存,如果首字母相同的,可以增加一個增量,H=(H(key)+d)Mod m,  d 從1開始計起 模於整個數量m=13,這樣做一個增加操作。實際中如果格子裏的重複數量越少,代表算法越好。效率越高。

4..iOS中的消息發送機制和消息轉發機制的區別

消息發送機制:

OC的函數調用成爲消息發送。屬於動態調用過程。在編譯的時候並不能決定真正調用哪個函數(事實證明,在編 譯階段,OC可以調用任何函數,即使這個函數並未實現,只要申明過就不會報錯。而C語言在編譯階段就會報錯)。只有在真正運行的時候纔會根據函數的名稱找 到對應的函數來調用。

消息轉發機制:

1.Method resolution 方法解析處理階段
2.Fast forwarding 快速轉發階段
3.Normal forwarding 常規轉發階段

5.祖件間的通訊 

iOS業界討論組件化方案甚多,大體來說有3種。

 

  • Protocol註冊方案
  • URL註冊方案
  • Target-Action runtime調用方案

MGJRoute方案

URL註冊方案 蘑菇街 App 的組件化之路 已經說的很清楚了 可以去看下

原理:

通過url註冊服務, 其他地方通過url, 獲取服務 框架在維護一個url-block的表格

特點:

  • url維護成本高 硬解碼
  • 可以在組件內部任何地方調用/註冊服務, 沒有必要統一組件接口服務
  • 每個業務組件, 都需要依賴這個框架

6.SDWebImage是怎麼來清理緩存的?

1.根據時間順序來刪除,7天過期刪除掉。

2.把之前沒刪除的按時間順序存起來,按自定義的最大緩存來刪除,直到最大緩存一半爲止。

緩存計算,它的單位爲字節

[[[SDWebImageManager sharedManager] imageCache]getSize];

緩存圖片的數量

[[[SDWebImageManager sharedManager] imageCache] getDiskCount];

緩存清理,第一種是內存緩存,第二種是硬盤緩存

[[[SDWebImageManager sharedManager] imageCache] clearMemory];  
[[[SDWebImageManager sharedManager] imageCache] clearDisk];

7.SDWebImage是怎麼處理接收的內存警告的?

AutoPurgeCache 繼承自 NSCache 自動清除緩存,調用NSCache 的 removeAllObjects方法。

8.SDWebImage中怎麼計算圖片的成本大小?

緩存大小

/**
 * Get the size used by the disk cache
 */
- (NSUInteger)getSize;
// 注意:返回值單位爲字節
// 具體實現
- (NSUInteger)getSize {
    __block NSUInteger size = 0;
    dispatch_sync(self.ioQueue, ^{
        NSDirectoryEnumerator *fileEnumerator = [_fileManager enumeratorAtPath:self.diskCachePath];
        for (NSString *fileName in fileEnumerator) {
            NSString *filePath = [self.diskCachePath stringByAppendingPathComponent:fileName];
            NSDictionary *attrs = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil];
            size += [attrs fileSize];
        }
    });
    return size;
}

9.SDWebImage中clear和clean有什麼樣的區別?
 

clear

   全部刪除

clean

   部分刪除 

  1.根據時間順序來刪除,7天過期刪除掉。

   2.把之前沒刪除的按時間順序存起來,按自定義的最大緩存來刪除,直到最大緩存一半爲止。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章