京東商城面試總結(jié)

京東的小哥哥真的特別好,一開始倒了杯咖啡給我,是京東的杯子。印象很深,非常喜歡。二面的面試官也很友好,聊的很開心,也讓我對未來做了一個規(guī)劃。

先記一下比較好的題,這篇文章做個補充和總結(jié)。

weak的本質(zhì)是一個hash表:
它的key存儲的是對象的地址,
它的value存儲的是weak指針地址的數(shù)組,而數(shù)組元素的count就是引用計數(shù)的count,當(dāng)count為0時,key移除表,指針致空。
所以用weak可以避免出現(xiàn)野指針的情況,而assign就會出現(xiàn)安全性問題。

原因:session在ARC下不會及時釋放
原因探究: AFURLSessionManager實現(xiàn)了NSURLSession的協(xié)議,即AFURLSessionManager和NSURLSession互相持有,如果這個delegate是week的話,那沒什么問題,但是系統(tǒng)提供的是retain:如圖


delegate是retain

解決方法有兩種: 設(shè)計成單例 或者 取消tasks,將session對象銷毀

//廢棄session對象。cancelPendingTasks決定是否取消此session中的tasks
–(void)invalidateSessionCancelingTasks:(BOOL)cancelPendingTasks 
__weak typeof(manager) weak_manager = manager;
    [manager requestWithMethod:method
        URLString:uri
        parameters:param
        success:^(NSURLSessionDataTask *task, id responseObject) {
            if (completion) {
                completion(YES, responseObject, task.response);
            }
            [weak_manager invalidateSessionCancelingTasks:YES];
        }
        failure:^(NSURLSessionDataTask *task, NSError *error) {
            if (completion) {
                completion(NO, error, task.response);
            }
            [weak_manager invalidateSessionCancelingTasks:YES];
        }];
  • 在不使用AFN等第三方庫的情況下,自己用蘋果源生API實現(xiàn)一個異步下載圖片功能(可以寫偽代碼,記不清的地方可以大概寫一下,仿AFN設(shè)計)

這個我寫了一個大概。。流程應(yīng)該沒問題。。。

  • 如果讓你自己設(shè)計一個緩存框架,你會怎么設(shè)計?(仿SD設(shè)計:一個下載器,一個緩存器,一個管理者)

這里主要設(shè)計了下載器,和緩存器,
緩存要設(shè)計最大時間清理,以及超過峰值大小,遍歷最遠沒有修改的文件,刪除大小為峰值的一半。

京東的面試過程很愉快,面試官很友好并且很有耐心的引導(dǎo)我走向正確的結(jié)果,很感謝,感恩,希望能與京東的面試官和小伙伴們共事。再次感恩!感謝!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容