頻道欄目
首頁 > 程序開發 > web前端 > HTML/CSS > 正文
【前端刷題筆記02】字節跳動2019面試題-一只想做全棧的貓-SegmentFault思否
2019-05-11 22:05:10           
收藏   我要投稿

1、TCP的三次握手和四次揮手

1.1 三次握手:

客戶端請求 -> 服務器響應 -> 客戶端確認收到響應,建立連接(保證網絡正常)

TCP三次握手

1.2 四次揮手

客戶端請求 -> 服務器響應該請求 -> 服務器確認數據傳送完畢, 發送關閉連接的響應 -> 客戶端發送響應,在2MSL內未收到回復則視為服務器端已收到該響應并關閉連接接口,客戶端關閉連接。

TCP四次揮手

1.3 為什么TIME_WAIT狀態需要經過2MSL(最大報文段生存時間)才能返回到CLOSE狀態?

雖然按道理,四個報文都發送完畢,我們可以直接進入CLOSE狀態了,但是我們必須假象網絡是不可靠的,有可以最后一個ACK丟失。所以TIME_WAIT狀態就是用來重發可能丟失的ACK報文。

2、TCP和UDP的區別、比較

UDP TCP
是否連接 無連接 面向連接
是否可靠 不可靠傳輸,不使用流量控制和擁塞控制 可靠傳輸,使用流量控制和擁塞控制
連接對象個數 支持一對一,一對多,多對一和多對多交互通信 只能是一對一通信
傳輸方式 面向報文 面向字節流
首部開銷 首部開銷小,僅8字節 首部最小20字節,最大60字節
適用場景 適用于實時應用(IP電話、視頻會議、直播等) 適用于要求可靠傳輸的應用,例如文件傳輸

3、鏈表反轉

鏈表反轉有兩種方法:

就地反轉法
//就地反轉法
interface ListNode {
    value: string;
    next: ListNode;
}
function reverseList1(head:ListNode) {
    if (head == null)
        return head;
    let dummy = null;
    dummy.next = head;
    let prev = dummy.next;
    let pCur = prev.next;
    while (pCur != null) {
        prev.next = pCur.next;
        pCur.next = dummy.next;
        dummy.next = pCur;
        pCur = prev.next;
    }
    return dummy.next;
}
頭節點插入法
interface ListNode {
    value: string;
    next: ListNode;
}
function reverseList2(head: ListNode) {
    let dummy = null;
    let pCur = head;
    while (pCur != null) {
        ListNode pNex = pCur.next;
        pCur.next = dummy.next;
        dummy.next = pCur;
        pCur = pNex;
    }
    return dummy.next;
}

參考連接

TCP三次握手和四次揮手過程 TCP和UDP比較 單鏈表反轉總結篇
點擊復制鏈接 與好友分享!回本站首頁
相關TAG標簽
上一篇:webpack4js構建速度優化-flashback-SegmentFault思否
下一篇:React優化子組件render-個人文章-SegmentFault思否
相關文章
圖文推薦
點擊排行

關于我們 | 聯系我們 | 廣告服務 | 投資合作 | 版權申明 | 在線幫助 | 網站地圖 | 作品發布 | Vip技術培訓 | 舉報中心

版權所有: 紅黑聯盟--致力于做實用的IT技術學習網站

加拿大28火车判定方法