字节暑期新业务前端一面

- TCP和UDP的区别
  1. udp面向有连接,需要三次握手,而udp面向无连接
  2. udp更安全,udp更不安全
  3. tcp头部占20字节,udp头部占8字节,udp的开销更小
  4. tcp面向字节,udp面向报文
  5. tcp有拥塞控制,而udp没有
- UDP丢包的优化方案
丢包的原因:UDP包过大、发送速率过快和recvfrom处理数据过慢
对应上面三种的解决方案
1. 增加系统发送和接受缓存区的大小
2. 增加应答机制,处理完一个包,在继续发包
3. 开辟两个线程,一个专门接收数据包,并存放在应用层缓存区;另外一个线程专门处理和响应数据包,避免处理数据造成丢包
- Websocket是什么?
html5的一中新协议,实现了浏览器和服务器的实时通信
- Websocket用的是TCP还是UDP,怎么实现Websocket全双工通信?
TCP
- http报文
请求行,请求体,请求体
- 强缓存字段和协商缓存字段
Cache-Control和Expries  Etg和Last-Midefied,之后说了各种的特点,及说了下既能有了有了Last-Midefied为什么要Etg的原因
- 线程通信的方式
管道通信,消息队列通信,共享内存通信,信号量通信,socket,面试管说不能socket通信给我整不自信了,不就这5种嘛
- http正向代理和反向代理
1. 正向代理就是客户端代理,帮客户端找到访问其无法访问的资源;反向代理就是服务器代理,帮助服务器做负载均衡,安全防护等。
2. 正向代理一般是客户端架设的,比如自己机器上安装了一个代理软件;反向代理一般是服务器架设的,比如自己集群中部署一个反向代理服务器。
3. 正向代理中,服务器不知道真正的客户端是谁,以为访问自己就是真实的客户端;反向代理客户端不知道真正的服务器是谁,以为自己访问的就是真实的服务器。
- this指向编程题
const fn = () => {
    console.log(this);
    const a = function(){ console.log('a',this);}
    const b = () => { console.log('b',this);}
    let obj = {
        age:20,
        c:function(){
            console.log('c',this);
        },
        d:() => {
            console.log('d',this);
        },
        e:function() {
            a();
            b();
            (()=> console.log('e',this))();
        }
    }
    a()
    b()
    obj.c()
    obj.d()
    obj.e()
}
fn()
// 1. window
// 2. a window
// 3. b window
// 4. c obj
// 5. d window
// 6. a window b window e e

- 寻找无序二叉树树中第n个最小值的位置
input: n = 4,tree = obj
output: [ [ 2, 2 ], [ 3, 3 ] ]

let obj = {
    val:14,
    left:{
        val:4,
        left:{
            val:5,
            left:null,
            right:null
        },
        right: {
            val:8,
            left:null,
            right:null
        }
    },
    right:{
        val:7,
        left:{
            val:7,
            left:null,
            right:null
        },
        right: {
            val:3,
            left:null,
            right:null
        }
    }
}
const getMinN = (root,n) => {
    let stack = [root]
    let i = 0,j =0;
    let map = new Map()
    while(stack.length) {
        let len = stack.length
        i++
        while(len--) {
            const n = stack.shift()
            j++
            map.set({val:n.val},[i,j])
            if(n.left) stack.push(n.left)
            if(n.right) stack.push(n.right)
        }
        j = 0
    }
    // 得到排序的map数据
    let sortArr = [...map.entries()].sort((a,b) => a[0].val - b[0].val)
    // 找到一样的 
    let ans = sortArr.filter((item,index,arr) => index >= n - 1 && arr[n - 1][0].val == item[0].val)
    // 加工一波
    ans = ans.map(item => item[1])
    return ans
}
console.log(getMinN(obj,4));


求二面!!!

#字节面试##实习##前端#
全部评论
寻找无序二叉树树中第n个最小值是?
点赞 回复 分享
发布于 2022-04-26 19:43
楼主是啥时候投的,官网还是内推?
点赞 回复 分享
发布于 2022-04-27 09:29

相关推荐

2024-12-10 00:08
韩山师范学院 Java
讲道理的变色龙在午休:26届已经卷成这个b样了吗,遥想我们24届同学能用java敲个小游戏都算厉害了,20届的更加是一条狗都能找到工作。只能说祝你好运兄弟
点赞 评论 收藏
分享
2024-12-30 22:31
吉首大学 Web前端
工字钢写代码:改成吉林就OK了
点赞 评论 收藏
分享
评论
6
50
分享

创作者周榜

更多
牛客网
牛客企业服务