叠纸网络

做游戏的,好像是暖暖那家公司。
第一轮是手写代码,“真”手写。一张纸,十道题。几乎都是字符转换的常见题,比较简单。
小公司的感觉,前端没有重要性和话语权,甚至要自己用ps切图。面试官也不是很专业。
第二轮是leader面试,看上去不是很认真的人,说话没有主次。问了点以前做的项目。
hr面试,问了下我薪资意向。
不得不说,这家公司妹子真的好多啊。

米哈游

线上面试的,在v站找的人内推

  1. 浏览器的事件循环和node的事件循环有什么差别
  2. 说一下用过的redux方案,问了 redux-saga的原理
  3. 讲自己做过的项目细节。
  4. 问方案,实现一个弹窗。可以在基座应用中被不同的微应用调用。
  5. 米哈游给人的感觉就是不缺人,问题问的很琐碎,就问了30分钟。最后问了下面试官真的有hc吗,面试官含糊其辞,听说他们的面录比大概十比一。其他的记不清了,感觉没什么答错的地方,但是就是没有二面了。

微盟

我记不清了,40多道题,他们照着哪个面试题库一个个问的。都很简单,面试官啥都不懂得样子,叭叭叭问了一个半小时。不想和这个人共事。跟他解释fiber的时候,浏览器渲染过程都听不懂,感觉就是个初级开发,装的很高深。
没有通知二面,也没有后续

携程面试

以前的测试妹子内推的。
面试流程还挺正规的,三轮面试还有笔试,英语拉胯

一面:

  • 自我介绍一下
  • 输入url之后 发生了什么( 没说绘制过程,因为我不懂,被指出来了)
  • 设计一个交易快照 储存交易发生时的页面,不能用图片
  • redux 是什么,怎么实现异步的action
  • 数组取最大值 数组flat怎么实现
  • react 怎么做优化。可能是想问:shouldUpdate? useMemo useCallback之类的,但是我不知道怎么组织语言,只能说出来这些词
  • webpack 怎么减少项目体积。忘了那个插件的名字了。还问了怎么优化项目可能是想问,整体优化的策略吧。
  • 实现上传进度

二面:

  • redux 是什么, 为什么用redux. nuxt怎么接入redux 才能做到数据同步
  • 类组件与函数组件的区别什么时候用类组件 什么时候用函数组件 为什么
  • 闭包是什么,哪些应用场景
  • vdom 了解吗 讲一下。
  • lerna用过吗, 什么时候用lerna
  • 有没有用过一些动画的库 讲一下
  • 又想起来一个 怎么编排redux 的action和reduce,我想面试官可能想问的时combineReducer这个,我没写过原生的redux 被问倒了 😅
  • 最好看下mbox 三个人都问了 但是我真没用过

三面:

  • 都是重复的题。还有业务上的问题,面试官问的意思没搞懂(记不得了

四面:

  • 居然过了,因为没有过六级 所以加了两个机试。 一个英语口语,一个行测题。 还好有惊无险

最后被分到租车,呆了三天,直接离职了。项目烂,管理差,我是第一次见到段子那种,一个文件写了几千行没有注释的项目。可能是这个部门不太好吧

美团

前同事内推,面试官是妹子,那天我迷迷糊糊开始面试,结果一面都没过。有点丢人

  • 为什么用umi
  • 怎么捕获白屏时间
  • 实现一个usestate 和 useeffect
  • compiler和Compilation的区别
  • loader和plugin的执行时机
  • tapable是什么
  • webpack的优化
  • 双向绑定
  • 如何监听数组的变化
  • 跨域cookie,浏览器做了什么检查
  • head script 的加载和执行顺序
  • 编程题:flatMenuList

大润发

还是手写编程题,有些ts的题,总体不难,牛客网水平吧。

Binance

一面:

  1. 实现 call 方法 禁止apply
  2. 实现 useDebounce
  3. 实现 instance_of
  4. 实现 flatten,优化不能用递归
  5. 说一下eventloop , 然后写下 下面的输出
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
function f() {
setTimeout(() => {
console.log(5);

Promise.resolve().then(() => {
console.log(6);
});
});

new Promise((resolve, reject) => {
console.log(1);

resolve();
}).then(() => {
console.log(2);

Promise.resolve().then(() => {
console.log(3);
});

setTimeout(() => {
console.log(4);
});

Promise.resolve().then(() => {
console.log(7);
});
});

Promise.resolve().then(() => {
console.log(8);
});
}
  1. useeffect 和 useLayouteffect
  2. ts用过没, 泛型说一下

二面

  1. 实现useInterval。
  2. 给定一个数组 打乱排序并返回。要求概率相等
  3. 说一下next服务端渲染的流程和客户端渲染的区别。
  4. 接上一题后:知道renderToString 和 hydrate的区别吗 。
  5. 长列表 更新key和不更新key 的区别 。
  6. 接上一题,描述key变化后 更新到dom的流程 。
  7. 说一下遇到过的困难。

4 6 7 没回答好

4: 应该说一下两者的优缺点。然后回答的不够有条理

  1. 应该从fiber 开始对比workingress 树开始说的

答:key发生变化后,可以理解成react要开始新的一轮render,这个时候react要开始根据旧的cureent树构建新的workinprogress树,然后循环wokrinprogress的new child ,生成一个set 然后和旧的children 循环对比,如果key相同,把旧的节点传过去,如果不相同就会返回一个新的crertenewnewfibernode, 这样就完成render的过程,进入commitwork,commit 分为三个过程,befercommt 这个时候会调用gitsnapshot 。然后进入mutation阶段的过程,把ref 指向新的firber节点,更新dom,调用useeffect 等生命周期函数,和willmount 函数。 最后是layout阶段,这个时候时候调用uselayout ….

  1. 我遇到的困难
  2. 主观上的困难:技术需求

说了一下以前做的 lego 项目。

1.目标是让运营或者产品替代开发完成sp后台的配置化开发任务

2.困难是开发资源缺乏,必须在业务需求之外完成开发,2是市面上没有开源的项目可以100%hold需求,说一下自己的调研结果:baidu amis,不符合产品预期,原因:。。。。

计划开发周期是第一季度完成可提供演示的产品,第二季度要求利用平台产出的页面可以上线运行。

最后调研出来可以用宏来生产模板组合页面完成 代码到 组件 到页面的闭环,可以实现产品对项目可管理的要求。

然后我们前端团队自己设计出了一套架构可以完成从 拖拽配置 到 编写组件 到组合页面,到可发布上线这样一套的流程。

我负责了 lego-backend-service 的搭建 其中包括对组件 和 page的管理,以及调用 编译函数对页面编译的过程的输出和中端。的系统。

还负责了将收钱吧已有的组件进行 macros 化的开发。

这个过程中,我学习到了kafka mysql 的使用,以及babel 和 macros相关的知识,让我对组件复用也上升了一个层次。

遗憾的是开发时间和人力资源过于紧张,从第一季度拖到了第四季度,才达到了第二季度的要求。过程中,需求也一直在扩充。

  1. 客观上的困难:项目重构 说了下重构risk-app 接入组件库 自己重写业务逻辑

三面:

  1. 编程题 考察合成事件和batchupdate , 延伸问了如何接管batchupdate (unstable_batchupdate)
  2. 编程题 实现一个useInterval
  3. 编程题 考察原生 dom操作 对重绘重排的理解,延伸问了requestAnimationFrame 使用场景原理
  4. 问遇开发中遇到的最大困难 聊了些lowcode相关的

四面:

  1. 职级,所在部门,
  2. 薪资构成,社保缴纳比例
  3. 晋升和普调
  4. 餐补 房补 出差补贴之类的
  5. 绩效和奖金
  6. 入职的窗口
  7. 背调