網(wǎng)易云音樂面試總結

首先,很感謝網(wǎng)易小哥哥,我又發(fā)現(xiàn)了我的知識儲備不足的地方,這篇Blog記錄我平時學習的盲點,并希望自己不斷進步。
有幾個問題沒答上來,這里詳細記錄一下。

1.block的內(nèi)存數(shù)據(jù)類型是什么?block和函數(shù)有什么區(qū)別?使用block需要注意什么?

struct Block_descriptor {
    unsigned long int reserved;
    unsigned long int size;
    void (*copy)(void *dst, void *src);
    void (*dispose)(void *);
};

struct Block_layout {
    void *isa;
    int flags;
    int reserved; 
    void (*invoke)(void *, ...);
    struct Block_descriptor *descriptor;
    /* Imported variables. */
};

很顯然是個結構體,里面有一個isa指針,指向了自己的類。還有一個函數(shù)指針,指向block代碼塊。
使用block需要注意兩點:

  • 一個是變量傳遞到block結構體中,僅僅是值傳遞,所以在block中修改變量是不會影響到外面的變量的。
    只有加上了__block關鍵字,才可以改變外部的變量。(有點類似于C++函數(shù)里,實參和形參的區(qū)別)
  • 另一個是防止block對self持有,造成循環(huán)引用->內(nèi)存泄漏。解決方法:在外面__weak一下self,再在block內(nèi)部__strong一下self。

2.HTTPS和HTTP的差別在哪?有什么改進和優(yōu)點。

超文本傳輸協(xié)議HTTP協(xié)議被用于在Web瀏覽器和網(wǎng)站服務器之間傳遞信息。HTTP協(xié)議以明文方式發(fā)送內(nèi)容,不提供任何方式的數(shù)據(jù)加密,如果攻擊者截取了Web瀏覽器和網(wǎng)站服務器之間的傳輸報文,就可以直接讀懂其中的信息,因此HTTP協(xié)議不適合傳輸一些敏感信息,比如信用卡號、密碼等。
為了解決HTTP協(xié)議的這一缺陷,需要使用另一種協(xié)議:安全套接字層超文本傳輸協(xié)議HTTPS。為了數(shù)據(jù)傳輸?shù)陌踩?,HTTPS在HTTP的基礎上加入了SSL/TLS協(xié)議,SSL/TLS依靠證書來驗證服務器的身份,并為瀏覽器和服務器之間的通信加密。

HTTPS和HTTP的區(qū)別主要為以下四點:

  • 一、https協(xié)議需要到ca申請證書,一般免費證書很少,需要交費。

  • 二、http是超文本傳輸協(xié)議,信息是明文傳輸,https 則是具有安全性ssl加密傳輸協(xié)議。

  • 三、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。

  • 四、http的連接很簡單,是無狀態(tài)的;HTTPS協(xié)議是由SSL+HTTP協(xié)議構建的可進行加密傳輸、身份認證的網(wǎng)絡協(xié)議,比http協(xié)議安全。

總結:HTTPS = HTTP + SSL / TLS
SSL 握手驗證協(xié)議
TLS 安全傳輸協(xié)議
實現(xiàn)了加密和身份認證
用到了非對稱加密(公鑰、私鑰)、CA證書=>為了驗證公鑰是否偽造
HTTPS是以安全為目標的HTTP通道,簡單的講是HTTP的安全版
HTTP沒有任何的加密以及身份驗證機制,很容易被竊聽、篡改。
因此會造成個人隱私泄露、惡意的劫持等嚴重的安全問題。

3.三次握手協(xié)議:

三次握手

4.iOS事件傳遞的過程(事件響應呢??)參考資料

過程:
->產(chǎn)生觸摸事件UIEvent
->UIApplication事件隊列
->[UIWindow hitTest:withEvent:]
->返回更合適的view
->[子控件 hitTest:withEvent:](有就繼續(xù)調(diào)用hitTest,沒有更合適的就返回自身。。。進入遞歸遍歷狀態(tài)。。)
->返回最合適的view

hitTest解釋:事件傳遞給窗口或控件的后,就調(diào)用hitTest:withEvent:方法尋找更合適的view。所以是,先傳遞事件,再根據(jù)事件在自己身上找更合適的view。
不管子控件是不是最合適的view,系統(tǒng)默認都要先把事件傳遞給子控件,經(jīng)過子控件調(diào)用自己的hitTest:withEvent:方法驗證后才知道有沒有更合適的view。即便父控件是最合適的view了,子控件的hitTest:withEvent:方法還是會調(diào)用,不然怎么知道有沒有更合適的!即,如果確定最終父控件是最合適的view,那么該父控件的子控件的hitTest:withEvent:方法也是會被調(diào)用的。

5.事件的響應:實際上是事件傳遞的逆過程 通過不斷向上傳遞,將試圖展示給用戶

事件響應鏈
  • 響應者對象:能處理事件的對象,也就是繼承自UIResponder的對象
    作用:能很清楚的看見每個響應者之間的聯(lián)系,并且可以讓一個事件多個對象處理。

  • 如何判斷上一個響應者?
    1> 如果當前這個view是控制器的view,那么控制器就是上一個響應者
    2> 如果當前這個view不是控制器的view,那么父控件就是上一個響應者

  • 響應者鏈的事件傳遞過程:
    1>如果當前view是控制器的view,那么控制器就是上一個響應者,事件就傳遞給控制器;如果當前view不是控制器的view,那么父視圖就是當前view的上一個響應者,事件就傳遞給它的父視圖
    2>在視圖層次結構的最頂級視圖,如果也不能處理收到的事件或消息,則其將事件或消息傳遞給window對象進行處理
    3>如果window對象也不處理,則其將事件或消息傳遞給UIApplication對象
    4>如果UIApplication也不能處理該事件或消息,則將其丟棄

  • 事件的傳遞和響應的區(qū)別:
    事件的傳遞是從上到下(父控件到子控件),事件的響應是從下到上(順著響應者鏈條向上傳遞:子控件到父控件。

6.AFN3.0和2.0差別在哪里?
https://blog.csdn.net/u012411480/article/details/51678472

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

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

  • 1 Block機制 (Very Good) Block技巧與底層解析 http://www.itdecent.cn...
    Kevin_Junbaozi閱讀 4,161評論 3 48
  • 轉(zhuǎn)至元數(shù)據(jù)結尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,058評論 0 9
  • 最全的iOS面試題及答案 iOS面試小貼士 ———————————————回答好下面的足夠了-----------...
    大羅Rnthking閱讀 1,043評論 0 2
  • 一個人渴望死去 就像大??释较?鳥兒渴望爬行 當一個人死去 海浪吞吃著海浪 翅膀仍在飛 黑暗中旋轉(zhuǎn)的燈塔 光芒里...
    雲(yún)歸閱讀 599評論 1 3
  • 我常常獨自悲傷,莫名的悲傷,在太陽下山之后,不要問我為什么。我只知道,一到晚上,她就接管了白天的我。 有人說,心里...
    Amber冬月閱讀 338評論 0 0

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