正题
- 做一下自我介绍
- 箭头函数与普通函数区别?能不能作为构造函数?
- EventLoop 相关,有哪些宏任务和微任务?特点?对 requestAnimationFrame 的理解?
- package.json 中的 peerDependencies?
- 虚拟DOM的好处?
- HTTPS是对称加密还是非对称加密?
- webpack中loaders作用?plugins和loaders区别?是否写过webpack插件?
- 有没有用过单元测试?
- 编程题:compose实现。
大概记得就这些了。
大厂面试官也不容易,头天面试,第二天在网上就被挂出来了。
解析
箭头函数与普通函数区别?能不能作为构造函数
- 语法更加简洁、清晰
- 箭头函数不会创建自己的this
- 箭头函数继承而来的this指向永远不变
- .call()/.apply()/.bind()无法改变箭头函数中this的指向
- 箭头函数不能作为构造函数使用
- 箭头函数没有自己的arguments
- 箭头函数没有原型prototype
- 箭头函数不能用作Generator函数,不能使用yeild关键字
EventLoop 相关,有哪些宏任务和微任务?特点?对 requestAnimationFrame 的理解
关键:
- JS引擎是单线程的
- Event Loop是javascript的执行机制
- 微任务优于宏任务先执行
宏任务
微任务
package.json 中的 peerDependencies
指定当前组件的依赖以其版本。如果组件使用者在项目中安装了其他版本的同一依赖,会提示报错。
package.json 中的 peerDependencies
虚拟DOM的好处
减少了同一时间内的页面多处内容修改所触发的浏览器reflow和repaint的次数,可能把多个不同的DOM操作集中减少到了几次甚至一次,优化了触发浏览器reflow和repaint的次数。。
HTTPS是对称加密还是非对称加密
HTTPS 在内容传输的加密上使用的是对称加密,非对称加密只作用在证书验证阶段。
webpack中loaders作用?plugins和loaders区别?是否写过webpack插件
推荐 - 带你深度解锁Webpack系列
有没有用过单元测试
我说我们业务比较紧,并没有做过。。
编程题:compose实现
const add = num => num + 10
const multiply = num => num * 2
const foo = compose(multiply, add)
foo(5) => 30
// 摘自 https://github.com/reactjs/redux/blob/master/src/compose.js
export default function compose(...funcs) {
if (funcs.length === 0) {
return arg => arg
}
if (funcs.length === 1) {
return funcs[0]
}
return funcs.reduce((a, b) => (...args) => a(b(...args)))
}
闲聊
其实这次面试挺偶然的,偶然一天有人在boss直聘上跟我打招呼,对方显示的研发leader,随后我发了简历过去,没过两天就收到了面试邀请。
收到面试我还是挺高兴的,说明我的简历还能过字节跳动的初筛,面试完之后就不高兴了,因为发现自己确实菜。。
通过面试就能发现大厂的学习是一个体系,同样的问题,可以问出很多东西来,由点到面由面到体,有深度且全面。
最近在积极找工作,如果有合适的坑位希望能帮忙内推,坐标成都。