字节跳动
约 758 字大约 3 分钟
2024-04-07
- 介绍最熟悉的项目,重难点,成就有哪些?
- v-scale怎么做的(项目中提到的)
- CDN
- 超级课堂中都优化了什么?
- tree-shaking怎么做的
- webpack里optimization都可以做哪些事情?
- vue2的编译原理,vue3用到了proxy是怎么个,为什么要用proxy?
- flex布局
- flex: 1做了什么?
- 解释 flex:flex-grow | flex-shrink | flex-basis
- 跨域处理怎么做的?提到了nginx处理和node中间件处理。
- 事件委托考察打印顺序
async function async1(){
console.log('async1 start')
await async2()
console.log('async1 end')
}
async function async2(){
console.log('async2')
}
console.log('script start')
setTimeout(function(){
console.log('setTimeOut')
}, 0)
async1()
new Promise(function(resolve){
console.log('promise1')
resolve()
}).then(function(){
console.log('promise2')
})
console.log('script end')- 作用域考察某个值的打印
- 平常项目中有什么性能指标吗?
算法:
- 柯里化函数,实现sum(1)(2)(3)
- 二叉树所有根到叶子路径组成的数字之和 1 2 3 4 5 124 + 125 + 13 = 262
function sumTreePath(node) {
if (!node) return 0
let arr = []
function loop(node, n) {
if (!node.left && !node.right) {
arr.push(n+=(''+node.val))
}
if (node.left) {
loop(node.left, node.val)
}
if (node.right) {
loop(node.right, node.val)
}
return arr
}
loop(node)
let sum = arr.reduce((item1, item2) => Number(item1)+Number(item2))
return sum
}2024网摘
其一
- 浏览器的缓存有哪些
- vue2可以监听数组里元素的变化吗?不可以的话请说明原因
- vue3双向绑定的原理
- 说说事件循环机制
- 平常发POST请求的时候有没有遇到过发送一次请求,实际上发送了两次的情况?如何解决这个问题呢?
- vueRouter中history模式和hash模式的区别
其二
- 3d 项目中的性能优化?
- 提到 GC,讲讲 js 中的 GC
- threejs 中如何实现拾取?
- three 在射线检测中做了哪些优化提高检测效率?
- 射线检测还有哪些手段?不限于 three 做的,也不限于软件
- webgl 渲染流程?
- webgl 中的深度测试和模版测试?
- 前端生成海报的时候,用了什么库,原理是什么?
- 出现跨域的资源怎么办?
- base64 为什么比 png 大?
- 长列表怎么性能优化?
- 用虚拟列表有哪些需要考虑的点,怎么做的?(高度不定情况、留 buffer 空间)
- 前端的性能指标知道多少?
- 跨标签页通信的方式有哪些?
- postMessage API 能跨域吗?
- 如果需要跨设备通信呢?
- 子组件是一个 Portal,发生点击事件能冒泡到父组件吗?
- 能冒泡是基于什么原理呢?
- W3C 冒泡顺序?
- mouseEnter 和 mouseOver 有什么区别?
- 不会冒泡的事件有哪些?
- js 的模块系统?
- 异步加载一个模块的方式?
- webpack 中异步加载模块的方式?
- tree-shaking 有什么要求吗?
- 做题 1 实现 get 方法
- var obj = {a: {b: {c: 2}}}; console.log(get(obj, 'a.b.c')); // 输出 2
- 做题 2 把数组平分,实现 fn
- fn([1,2,3,4,5],2) //结果为1,2],[3,4],[5