一面 · 技术面 · 4 月 20 日

  1. 你觉得你做的项目中有哪些是值得重点介绍的,有哪些亮点,解决了哪些难点;
  2. 为 DIV 设置 CSS 样式,保持无论给 div 设置任何宽度,它的宽高比始终是 3:4 ;
  3. WebPack、Rollup、Parcel 区别,有了 WebPack 为什么还要有 Rollup 和 Parcel 呢;
  4. Common JS 和 ES Module 有什么区别;
  5. 代码题,写出代码的输出结果(代码没有截图,主要考察方法调用时的 this 指向);
  6. 什么是内存泄漏,如何排查内存泄漏问题,怎么避免内存泄漏;
  7. interface 和 type 有什么区别;
  8. 什么是泛型;
  9. React setState 怎么使用,一个方法写多个 setState 会渲染多次么;
  10. React 组件之间如何通信以及 React 的合成事件原理;
  11. Redux 和 mobx 有什么区别,优缺点分析;
  12. 算法题:计算多叉树的最大深度; ```typescript type Element = { children: Element[] }

function getDepth(root: Element) { if(root.children.length < 1) { return 0 }

  1. let max = 0
  2. for(let i of root.children) {
  3. const depth = getDepth(i) + 1
  4. if(depth > max) {
  5. max = depth
  6. }
  7. }
  8. return max

}

console.log(getDepth({children: [{ children: [ { children: [] }, { children: []} ]}] }))

  1. <a name="H3XjM"></a>
  2. # 二面 · 技术面 · 4 月 25 日
  3. 1. 项目亮点、难点以及如何解决;
  4. 1. Redux 和 mobx 优缺点分析,业务场景及技术选型、代码调试;
  5. 1. 介绍一下 HTTPS,为什么要有 HTTPS;
  6. 1. 类组件与函数式组件区别,优缺点分析;
  7. 1. 为什么 React 暂不支持函数式组件来做 Error Boundary;
  8. 1. 编程题:假设你的客户端不支持加法计算,服务端提供了一个接口 `asyncAdd(a: number, b:number , cb: (result: number) => void)`,要求基于这个接口实现 `sum(1, 2, 3, 4……).then(result => console.log(result))`来实现对结果的输出;
  9. ```typescript
  10. /* 提供的接口 */
  11. function asyncAdd(a: number, b: number, callback: (result: number) => void) {
  12. callback(a + b)
  13. }
  14. /* 以下为现场写的实现 */
  15. function asyncAddPromise(a: number, b: number): Promise<number> {
  16. return new Promise<number>(resolve =>
  17. asyncAdd(a, b, result => resolve(result))
  18. )
  19. }
  20. async function sum(...args: number[]) {
  21. const result = [...args]
  22. while (result.length > 1) {
  23. result.push(await asyncAddPromise(result.shift() || 0, result.shift() || 0))
  24. }
  25. return result[0]
  26. }
  27. sum(1, 2, 3, 4).then(result => console.log(result))
  1. 最近有了解哪些新技术,可以分享一下么?
  2. 对未来学习方向的中长期的规划是怎样?

    三面 · 技术面 · 4 月 29 日

  3. 为什么离开现在这家公司以及具体的离职日期;

  4. 编程题:两数之和 - 力扣(LeetCode),要求分析时间复杂度并改写代码使其返回多组符合条件的结果;
  5. 项目亮点、难点以及如何解决;
  6. React Reconciliation 过程;
  7. requestIdelCallbackrequestAnimationFrame的区别;
  8. 说一说 Webpack TreeShaking;
  9. Common JS 和 ES Module 有什么区别;
  10. 如何实现一个即输入即搜索的组件;
  11. 你觉得自己有哪些优点和缺点;
  12. 你对字节的工作节奏是否有了解呢;

    结果

    面试未通过,三面挂。