阅读 4142

记一次偶然的头条前端面试

正题

  • 做一下自我介绍
  • 箭头函数与普通函数区别?能不能作为构造函数?
  • EventLoop 相关,有哪些宏任务和微任务?特点?对 requestAnimationFrame 的理解?
  • package.json 中的 peerDependencies?
  • 虚拟DOM的好处?
  • HTTPS是对称加密还是非对称加密?
  • webpack中loaders作用?plugins和loaders区别?是否写过webpack插件?
  • 有没有用过单元测试?
  • 编程题:compose实现。

大概记得就这些了。

大厂面试官也不容易,头天面试,第二天在网上就被挂出来了。

解析

箭头函数与普通函数区别?能不能作为构造函数

MDN

  1. 语法更加简洁、清晰
  2. 箭头函数不会创建自己的this
  3. 箭头函数继承而来的this指向永远不变
  4. .call()/.apply()/.bind()无法改变箭头函数中this的指向
  5. 箭头函数不能作为构造函数使用
  6. 箭头函数没有自己的arguments
  7. 箭头函数没有原型prototype
  8. 箭头函数不能用作Generator函数,不能使用yeild关键字

ES6 - 箭头函数、箭头函数与普通函数的区别

EventLoop 相关,有哪些宏任务和微任务?特点?对 requestAnimationFrame 的理解

微任务、宏任务与Event-Loop

JS事件循环机制(event loop)之宏任务/微任务

关键:

  1. JS引擎是单线程的
  2. Event Loop是javascript的执行机制
  3. 微任务优于宏任务先执行
宏任务
微任务

requestAnimationFrame MDN

requestAnimationFrame用法

package.json 中的 peerDependencies

指定当前组件的依赖以其版本。如果组件使用者在项目中安装了其他版本的同一依赖,会提示报错。

package.json 中的 peerDependencies

虚拟DOM的好处

减少了同一时间内的页面多处内容修改所触发的浏览器reflow和repaint的次数,可能把多个不同的DOM操作集中减少到了几次甚至一次,优化了触发浏览器reflow和repaint的次数。。

React的虚拟DOM优势在哪里

HTTPS是对称加密还是非对称加密

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)))
}
复制代码

函数式编程之Compose

闲聊

其实这次面试挺偶然的,偶然一天有人在boss直聘上跟我打招呼,对方显示的研发leader,随后我发了简历过去,没过两天就收到了面试邀请。

收到面试我还是挺高兴的,说明我的简历还能过字节跳动的初筛,面试完之后就不高兴了,因为发现自己确实菜。。

通过面试就能发现大厂的学习是一个体系,同样的问题,可以问出很多东西来,由点到面由面到体,有深度且全面。

最近在积极找工作,如果有合适的坑位希望能帮忙内推,坐标成都。