字节暑期新业务前端一面

- 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));


求二面!!!

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

相关推荐

存一下准备挨个投一下
小小:银行秋招真题,欢迎大家来刷:牛客 -> 题库 -> 国央企笔试真题 。https://www.nowcoder.com/exam/company?questionJobId=195&subTabName=written_page
点赞 评论 收藏
分享
面我面我面我_秋招版:不是戈门,干哪来了,这就是java嘛
点赞 评论 收藏
分享
xiaolihuam...:当然还有一种情况是你多次一面挂,并且挂的原因都比较类似,例如每次都是算法题写不出来。面试官给你的评价大概率是算法能力有待加强,算法能力有待提高,基础知识掌握的不错,项目过关,但是coding要加强。短期内高强度面试并且每次都是因为同样的原因挂(这个你自己肯定很清楚),会形成刻板印象,因为你偶尔一次算法写不出来,面试官自己也能理解,因为他清楚的知道自己出去面试也不一定每一次面试算法都能写出来。但是连续几次他发现你的面屏里面都是算法有问题,他就认为这不是运气问题,而是能力问题,这种就是很客观的评价形成了刻白印象,所以你要保证自己。至少不能连续几次面试犯同样的错。算法这个东西比较难保证,但是有些东西是可以的,例如某一轮你挂的时候是因为数据库的索引,这个知识点答的不好,那你就要把数据库整体系统性的复习,下一轮面试你可以,项目打的不好,可以消息队列答的不好,但是绝对不可以数据库再答的不好了。当然事实上对于任何面试都应该这样查漏补缺,只是对于字节来说这个格外重要,有些面试官真的会问之前面试官问过的问题
点赞 评论 收藏
分享
评论
6
52
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务