原创 面試總結 - TableView優化

正確使用reuseIdentifier來重用cells 儘量使所有的view opaque,包括cell自身 避免漸變,圖片縮放,後臺選人 緩存行高 如果cell內現實的內容來自web,使用異步加載,緩存請求結果 使用shado

原创 面試總結 - 響應鏈

事件的傳遞:(父控件到子控件)尋找合適的view。 當發生觸摸事件時,runloop會通知UIApplication處理,UIApplication將該事件加入到事件隊列裏, UIApplication再從事件隊列裏取出最前面的事

原创 面試總結 - 圖層混合

怎麼檢測圖層混合? 1、模擬器debug- 選中 color blended layers紅色區域表示圖層發生了混合 2、Instrument-選中Core Animation-勾選Color Blended Layers 避免圖

原创 面試總結 - 緩存機制

緩存可以分爲:內存數據緩存,數據庫緩存,文件緩存。 每次想獲取數據的時候,先檢測內存中有無緩存,再檢測本地有無緩存(數據庫\文件),最終發送網絡請求,將服務器返回的網絡數據進行緩存(內存,數據庫,文件),以便下次讀取 緩存機制是二

原创 面試總結 - AFN

AFN調用流程分析: AFHTTPSessionManager: 發起網絡請求(例如GET); AFHTTPSessionManager內部調用dataTaskWithHTTPMethod:方法(內部處理requestSerial

原创 面試總結 - RunLoop

就是運行時循環,一個程序能一直運行就是基於runloop。 每個線程如果想繼續運行,不被釋放,就必須有一個runloop來不停的跑圈,以來處理線程裏面的各種事件和消息,主線程默認是開啓一個runloop。也就是這個runloop才

原创 面試總結 - 單利

單利: 單例必須是唯一的,所以它才被稱爲單例。在一個應用程序的生命週期裏,有且只有一個實例存在。單例的存在給我們提供了一個唯一的全局狀態。比如我們熟悉的UIApplication(應用程序實例類) NSNotificationCe

原创 Swift --- 目錄

Swift — swfitc Swift — 屬性(property)和輸入輸出參數(inout) Swift — 下標(subscript) Swift — 方法前綴,以及nonmutating Swift

原创 LeetCode題解 --- 目錄

LeetCode — 2. 兩數相加 LeetCode — 21. 合併兩個有序鏈表 LeetCode — 23. 合併K個排序鏈表 LeetCode — 51. N皇后 LeetCode — 52. N皇后

原创 面試總結 - KVO、KVC、Notification和Delegate

KVO是OC對觀察者設計模式的一種實現。 KVO提供一種機制,指定一個被觀察對象,當對象某個屬性發生改變時,對象會獲取通知,並作出相應的處理。 在MVC設計架構下的項目,KVO機制很適合實現mode模型和view視圖之間的通訊。

原创 iOS - 增加按鈕點擊範圍

#import <UIKit/UIKit.h> #import <objc/runtime.h> @interface UIButton (EnlargeEdge) /** 設置可點擊範圍到按鈕邊緣的距離 */ - (vo

原创 面試總結 - UIViewController 生命週期

ViewController的生命週期中各方法執行流程如下: //類的初始化方法 1.+ (void)initialize; //對象初始化方法 2.- (instancetype)init; //從歸檔初始化 3.- (inst

原创 Java - hashMap 鏈表是頭插還是尾插

1.JDK8以前是頭插法,JDK8後是尾插法 2.爲什麼要從頭插法改成尾插法? A.因爲頭插法會造成死鏈,參考鏈接 B.JDK7用頭插是考慮到了一個所謂的熱點數據的點(新插入的數據可能會更早用到),但這其實是個僞命題,因爲JDK7

原创 面試總結 - 耗電優化

耗電優化 1.CPU處理; 2.網絡請求; 3.定位; 4.圖像渲染 1.1儘可能降低 CPU、GPU 功耗; 1.2少用定時器; 1.3 優化I/O操作: 儘量不要頻繁寫入小數據,最好一次性批量寫入; 讀寫大量重要數據時,可以用

原创 編程範式 --- 目錄

編程範式 — 函數式編程(Funtional Programming,簡稱FP) 編程範式 — 面向協議編程(Protocol Oriented Programming,簡稱POP)