当前位置: 首页 > 面试经验 >

字节前端一面

优质
小牛编辑
95浏览
2023-08-29

字节前端一面

JS数据类型有哪些?

引用数据类型和基本数据类型的区别是什么?

如何判断一个对象是不是空对象?

代码输出:

const obj1 = {
    key: 'value1',
};

const obj2 = {
    key: 'value2',
};

function func1(obj1) {
    obj1.key = 'value11';
    return obj1;
}

function func2(obj2) {
    obj2 = {
        key: 'value22',
    };
    return obj2;
}

func1(obj1);
func2(obj2);

console.log(obj1, obj2);
console.log(obj2 === func2(obj2));

对闭包的理解?什么情况下会产生闭包?

代码输出:

function func() {
    let num = 0;
    return () => {
        num++;
        return num;
    }
}

const func1 = func();
const func2 = func();

console.log(func1());
console.log(func2());
console.log(func1());
console.log(func2());

对JS单线程的理解?缺点是什么?设计初衷是什么?

浏览器从输入url到页面渲染出来的过程?

DOM树的构建和JS代码的执行的先后顺序?

对webWorker的理解?使用限制有哪些?

对JS的事件循环的理解?

代码输出

async function async1() {
    console.log('async1 start');
    await async2();
    console.log('async1 end');
}

async function async2() {
    console.log('async2');
}

console.log('script start');

setTimeout(() => {
    console.log('setTimeout');
}, 0)

async1();

new Promise((resolve) => {
    console.log('promise1');
    resolve();
}).then(() => {
    console.log('promise2');
})

console.log('script end');

如果在async1()前面加上await会不会影响输出结果?

Promise和async/await有哪些相似性?

有了解过React框架的哪些原理吗?

React Fiber在哪个过程是可以中断的?

代码题:实现一个convert函数,将扁平化的结构转换成树状结构。

const list = [
    { key: 1, value: 'A', parentKey: 0 },
    { key: 2, value: 'B', parentKey: 0 },
    { key: 3, value: 'C', parentKey: 1 },
    { key: 4, value: 'D', parentKey: 1 },
    { key: 5, value: 'E', parentKey: 2 },
    { key: 6, value: 'F', parentKey: 3 },
    { key: 7, value: 'G', parentKey: 4 },
];

===>
    
const tree = [
    {
        key: 1,
        value: 'A',
        parentKey: 0,
        children: [
            {
                key: 3,
                value: 'C',
                parentKey: 1,
                children: [
                    { key: 6, value: 'F', parentKey: 3 }
                ]
            },
            {
                key: 4,
                value: 'D',
                parentKey: 1,
                children: [
                    { key: 7, value: 'G', parentKey: 4 }
                ]
            }
        ]
    },
    {
        key: 2,
        value: 'B',
        parentKey: 0,
        children: [
            {
                key: 5,
                value: 'E',
                parentKey: 2
            }
        ]
    }
];

代码题:实现输出下一个质数

getPrime(); // 2
getPrime(); // 3
getPrime(); // 5
// ...

代码题:给一个有序数组和一个数字,要求返回该数字在有序数组中出现的起始位置和结束位置。

const arr = [1, 1, 2, 2, 2, 3, 4];
const n = 2;
getPosition(arr, n); // 输出: [2, 4]
 类似资料: