前端秋招-抖音字节

文章目录


每个点都问的很细很细很细

1. cookie的http-only

https://blog.csdn.net/qq_38553333/article/details/80055521
在这里插入图片描述

2. http2.0的特点

盒子模型和box-sizing

3. osi模型,tcp和udp,三次握手为什么不用二次握手

4. css脱离文档流 absolute fixed 以及如何回归文档流

5. 强制缓存200和协商缓存304, 浏览器是如何该使用判断使用哪个的?

6. js归并排序复杂度O(nlogn), 为什么是O(nlogn)

首先需要拆分数组,拆分次数logN, 然后逐步归并数组,合并两个有序数组O(N).

7. 归并排序和快速排序的区别? 稳定和不稳定,时间复杂度

8. 数据库事务的ACID特性 (原子性/一致性/隔离性/持久性)

9. 实习项目-大文件分片上传, 考虑并发问题. 目前只剩10M空间, 对同一篇文章在不同浏览器上,同时上传两次10MB, 如何处理?

10.怎么计算的md5, 分片原理

11. Node.js的事件循环机制, 对js的事件循环有什么影响和作用?

12. js的事件循环,微任务宏任务, 在执行一个微任务的时候又有了一个微任务,接下来该如何进行?

13. 重绘和回流, 解决方法

14. csrf攻击, B站点模拟请求A站点,cookie跨域拿不到,是怎么做到csrf攻击的.

15. JavaScript 实现归并排序方法 mergeSort,参数为 array,调用方法如 mergeSort([1, 34, 53, 23, 60]),返回结果为 [1, 23, 34, 53, 60]

//line=readline()
//print(line)
console.log('Hello World!');
function mergeSort(array){
    let len = array.length;
    if(len < 2){
        return array;
    }
    let middle = Math.floor(len/2);
    let left = array.slice(0, middle);
    let right = array.slice(middle);
    return merge(mergeSort(left), mergeSort(right)); 
}
function merge(left, right){
    let result = [];
    while(left.length >0 && right.length >0){
        if(left[0] <= right[0]){
            result.push(left.shift());
        } else {
            result.push(right.shift());
        }
    }
    while(left.length){
        result.push(left.shift());
    }
     while(right.length){
        result.push(right.shift());
    }
    return result;
}

let test = mergeSort([1,34,53,23,60]);
console.log(test);

浏览器协商缓存和强制缓存

http2.0和http1.0的区别,问很细

http和https的区别,为什么https安全,能不能继续三次握手四次挥手

跨域的解决方案,为什么,各个之间的区别

事件循环出题判断输出结果

console.log('开始');
setTimeout(() => {
    console.log('输出一个信息');
}, 0);
console.log('执行');
new Promise(resolve => {
    console.log('执行for循环');
    for(var i = 0; i < 100; i++){
        i == 99 && resolve();
    }
}).then(() => {
    console.log('执行then函数')
}).then(() => {
    setTimeout(() => {
        console.log('timeout in promise');
    }, 0);
});
console.log('结束');

开始
执行
执行for循环
结束
执行then函数
undefined
输出一个信息
timeout in promise

函数执行结果

function Foo() {

    getName = function () { alert (1); };

    return this;

}

var getName;

function getName() { alert (5);}

Foo.getName = function () { alert (2);};

Foo.prototype.getName = function () { alert (3);};

getName = function () { alert (4);};


getName(); // 4

Foo.getName(); // 2

写一个加法函数(sum),使他可以同时支持sum(x,y)和sum(x)(y)两种调用方式。

function sum() {
    if(arguments.length == 1) {
        const x = arguments[0];
        return function (y) {
            return x + y;
        }
    }
    else {
        let ans = 0;
        for(let i = 0; i < arguments.length; i++) {
            ans += arguments[i];
        }
        return ans;
    }
}

- 编写方法,返回最长无重复子串的长度

- 无重复子串指:子串中每个字符都不相同

- 例如:s = 'aaabcddddefghh' ,其中,最长的无重复子串为'defgh'长度为5
var lengthOfLongestSubstring = function(s) {
    var arr = s.split('');
    var max=0;
    var str=[];
    for(let i in arr){
    //搜寻是否已存在同样的字符
        var index=str.indexOf(arr[i]);
        if(index!=-1){
            str.splice(0,index+1);//存在则将该字符和前面的字符都除去
        }
        str.push(arr[i]);
        max = Math.max(str.length,max);
    }
    return max;
};

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值