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

百度前端一面

优质
小牛编辑
91浏览
2023-03-28

百度前端一面


  1. 自我介绍, 说一下vdom

  2. 你说一下闭包,闭包的应用场景以及缺陷,当时没答上来缺陷,后面查了一下


常驻内存,增加内存使用量。
使用不当会很容易造成内存泄露。


  1. 说一下函数柯里化,以及应用场景,答的马马虎虎吧


// 木易杨
const add = (...args) => args.reduce((a, b) => a + b);

// 简化写法
function currying(func) {
const args = [];
return function result(...rest) {
if (rest.length === 0) {
return func(...args);
} else {
args.push(...rest);
return result;
}
}
}

const sum = currying(add);

sum(1,2)(3); // 未真正求值
sum(4); // 未真正求值
sum(); // 输出 10




  1. 你用webpack吗?我说不用,我用vite,对webpack不怎么了解,面试官问:你说一下vite的优化
    我说了esbuild预构建,以及缓存LRU,以及相比于webpack的bundless优势




  2. commonjs与esm的区别,然后又问我真不知道tree shaking,说一下它的原理




  3. http2比http1.1好在哪里




  4. 你知道深拷贝和浅拷贝吗?说一下怎么实现深拷贝




  5. vuex和localStorage的区别,以及如何实现一个响应式的localStorage




  6. 手写快排,手写一维数组中出现次数最多的数字




  7. 说一下Map和WeakMap的区别,以及key有什么不同?




  8. 说一下vue响应式原理以及vue怎么知道我更新了一个响应式数据后就会进行rerender呢?




我说因为渲染器是这样设计的,render返回一个对象,对象内的响应式变量发生变化触发effect收集activeEffectFn,然后execute它再进行两次diff比较


effect(() => render())

面试官:那他是怎么更新到页面的呢?
我说diff完后vue会拿到当前的组件实例下有个$el属性,通过这个属性去更新dom,我不知道他有没有听明白,就一直在问这一点

 类似资料: