当前位置: 移动技术网 > IT编程>网页制作>CSS > 【前端刷题笔记02】字节跳动2019面试题-一只想做全栈的猫-SegmentFault思否

【前端刷题笔记02】字节跳动2019面试题-一只想做全栈的猫-SegmentFault思否

2019年05月20日  | 移动技术网IT编程  | 我要评论

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比较 单链表反转总结篇

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网