一面 · 技术面 · 4 月 20 日
- 你觉得你做的项目中有哪些是值得重点介绍的,有哪些亮点,解决了哪些难点;
- 为 DIV 设置 CSS 样式,保持无论给 div 设置任何宽度,它的宽高比始终是 3:4 ;
- WebPack、Rollup、Parcel 区别,有了 WebPack 为什么还要有 Rollup 和 Parcel 呢;
- Common JS 和 ES Module 有什么区别;
- 代码题,写出代码的输出结果(代码没有截图,主要考察方法调用时的 this 指向);
- 什么是内存泄漏,如何排查内存泄漏问题,怎么避免内存泄漏;
- interface 和 type 有什么区别;
- 什么是泛型;
- React setState 怎么使用,一个方法写多个 setState 会渲染多次么;
- React 组件之间如何通信以及 React 的合成事件原理;
- Redux 和 mobx 有什么区别,优缺点分析;
- 算法题:计算多叉树的最大深度; ```typescript type Element = { children: Element[] }
function getDepth(root: Element) { if(root.children.length < 1) { return 0 }
let max = 0
for(let i of root.children) {
const depth = getDepth(i) + 1
if(depth > max) {
max = depth
}
}
return max
}
console.log(getDepth({children: [{ children: [ { children: [] }, { children: []} ]}] }))
<a name="H3XjM"></a>
# 二面 · 技术面 · 4 月 25 日
1. 项目亮点、难点以及如何解决;
1. Redux 和 mobx 优缺点分析,业务场景及技术选型、代码调试;
1. 介绍一下 HTTPS,为什么要有 HTTPS;
1. 类组件与函数式组件区别,优缺点分析;
1. 为什么 React 暂不支持函数式组件来做 Error Boundary;
1. 编程题:假设你的客户端不支持加法计算,服务端提供了一个接口 `asyncAdd(a: number, b:number , cb: (result: number) => void)`,要求基于这个接口实现 `sum(1, 2, 3, 4……).then(result => console.log(result))`来实现对结果的输出;
```typescript
/* 提供的接口 */
function asyncAdd(a: number, b: number, callback: (result: number) => void) {
callback(a + b)
}
/* 以下为现场写的实现 */
function asyncAddPromise(a: number, b: number): Promise<number> {
return new Promise<number>(resolve =>
asyncAdd(a, b, result => resolve(result))
)
}
async function sum(...args: number[]) {
const result = [...args]
while (result.length > 1) {
result.push(await asyncAddPromise(result.shift() || 0, result.shift() || 0))
}
return result[0]
}
sum(1, 2, 3, 4).then(result => console.log(result))
- 最近有了解哪些新技术,可以分享一下么?
-
三面 · 技术面 · 4 月 29 日
为什么离开现在这家公司以及具体的离职日期;
- 编程题:两数之和 - 力扣(LeetCode),要求分析时间复杂度并改写代码使其返回多组符合条件的结果;
- 项目亮点、难点以及如何解决;
- React Reconciliation 过程;
requestIdelCallback
与requestAnimationFrame
的区别;- 说一说 Webpack TreeShaking;
- Common JS 和 ES Module 有什么区别;
- 如何实现一个即输入即搜索的组件;
- 你觉得自己有哪些优点和缺点;
- 你对字节的工作节奏是否有了解呢;
结果
面试未通过,三面挂。