2024-2-7 字节商业化 一面 过

2024-2-7 字节商业化 一面 过

  • CSS 有哪些选择器,权重
  • 事件循环输出题目
    • 为什么运行输出每次不一定一样,setTimeout 那里
new Promise((resolve, reject) => {
console.log('1')
resolve()
})
.then(() => {
console.log('2')
})
.then(() => {
console.log('10')
})

setTimeout(() => {
console.log('11')
setTimeout(() => {
console.log('12')
}, 0)
}, 3)

Promise.resolve().then(() => {
console.log('3')
setTimeout(() => {
console.log('4')
}, 4)
})
console.log('5')
setTimeout(() => {
console.log('6')
Promise.resolve().then(() => {
console.log('7')
})
}, 2)
  • 手写 call
Object.prototype.call2 = function (context, ...args) {
const sy = Symbol()
context[sy] = this
const res = context[sy](...args)
delete context[sy]
return res
}
  • 手写 repeat
    • setInterval
    • promise, await
    • 递归
// 实现一个限定次数的定时执行器的生成器
function repeat(times, mills, func) {}

// example:
let log3 = repeat(3, 1000, console.log)

log3('hello', 'world')

log3('hello', 'world', '2')
  • 输出题目
Function.prototype.a = () => alert(1);
Object.prototype.b = () => alert(2);
function A()
const a = new A();
a.a();
a.b();
  • 输出
var x = 10
function a(y) {
var x = 20
return b(y)
}
function b(y) {
return x + y
}
a(20) // 30
  • 如何理解闭包