字节跳动前端暑期实习二面面经
1.常规自我介绍
2.项目介绍,有没有在后面做一些优化
3.Vue的生命周期,获取数据在哪个钩子函数
4.Vue的虚拟DOM比较原理,diff算法介绍
5.Vue的虚拟DOM树是一个同层级的比较,如果要删除一个节点,会把他的子树都删除掉吗
6.手写实现两栏自适应的水平布局和垂直布局,一开始是用的flex布局所以两个都用flex布局写的
7.HTTP请求头有哪些,ETag、Last-Modified是不是请求头,平时用devtools太少太少,这里答得太少露怯了
8.除了cookie、local Stroage还有那些浏览器存储方式,session Stroage和local Stroage有哪些区别
10.在什么时候会选择local Stroage,local会不会影响性能呢
11.DOM事件绑定和响应
12.事件委托主要解决了什么问题
13.let、const、var有什么区别,const定义的对象内部属性能不能改,本身不能修改,为什么
14.防抖和节流有什么区别,手写防抖
15.apply和call、bind有什么区别,bind接收什么类型的参数
16.手写题,求数组的最大深度
let max = 0; function getArrayMaxDepth(nums, depth) { for (let i = 0; i < nums.length; i++) { if (nums[i].constructor === Array) { getArrayMaxDepth(nums[i], depth + 1); max = Math.max(depth + 1, max); } } return max; } const arr = [1, [2, 3], [4, [5, [6, 7]]], [8]]; var r = getArrayMaxDepth(arr, 1); console.log(r);
- 最后一题跟数组扁平化很相似,刚开始写的时候由于判断条件写错了,有bug,想到写不好的话要凉凉,紧张得后背直接出汗了。
- 连试待蒙的写好了,整体花了10多分钟确实太不应该了。
- 好在面试官很善良的放过了我,给了一个三面的机会,感谢字节面试官,继续加油。