叠纸网络
做游戏的,好像是暖暖那家公司。
第一轮是手写代码,“真”手写。一张纸,十道题。几乎都是字符转换的常见题,比较简单。
小公司的感觉,前端没有重要性和话语权,甚至要自己用ps切图。面试官也不是很专业。
第二轮是leader面试,看上去不是很认真的人,说话没有主次。问了点以前做的项目。
hr面试,问了下我薪资意向。
不得不说,这家公司妹子真的好多啊。
米哈游
线上面试的,在v站找的人内推
- 浏览器的事件循环和node的事件循环有什么差别
- 说一下用过的redux方案,问了 redux-saga的原理
- 讲自己做过的项目细节。
- 问方案,实现一个弹窗。可以在基座应用中被不同的微应用调用。
- 米哈游给人的感觉就是不缺人,问题问的很琐碎,就问了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
一面:
- 实现 call 方法 禁止apply
- 实现 useDebounce
- 实现 instance_of
- 实现 flatten,优化不能用递归
- 说一下eventloop , 然后写下 下面的输出
1 | function f() { |
- useeffect 和 useLayouteffect
- ts用过没, 泛型说一下
二面
- 实现useInterval。
- 给定一个数组 打乱排序并返回。要求概率相等
- 说一下next服务端渲染的流程和客户端渲染的区别。
- 接上一题后:知道renderToString 和 hydrate的区别吗 。
- 长列表 更新key和不更新key 的区别 。
- 接上一题,描述key变化后 更新到dom的流程 。
- 说一下遇到过的困难。
4 6 7 没回答好
4: 应该说一下两者的优缺点。然后回答的不够有条理
- 应该从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 ….
- 我遇到的困难
- 主观上的困难:技术需求
说了一下以前做的 lego 项目。
1.目标是让运营或者产品替代开发完成sp后台的配置化开发任务
2.困难是开发资源缺乏,必须在业务需求之外完成开发,2是市面上没有开源的项目可以100%hold需求,说一下自己的调研结果:baidu amis,不符合产品预期,原因:。。。。
计划开发周期是第一季度完成可提供演示的产品,第二季度要求利用平台产出的页面可以上线运行。
最后调研出来可以用宏来生产模板组合页面完成 代码到 组件 到页面的闭环,可以实现产品对项目可管理的要求。
然后我们前端团队自己设计出了一套架构可以完成从 拖拽配置 到 编写组件 到组合页面,到可发布上线这样一套的流程。
我负责了 lego-backend-service 的搭建 其中包括对组件 和 page的管理,以及调用 编译函数对页面编译的过程的输出和中端。的系统。
还负责了将收钱吧已有的组件进行 macros 化的开发。
这个过程中,我学习到了kafka mysql 的使用,以及babel 和 macros相关的知识,让我对组件复用也上升了一个层次。
遗憾的是开发时间和人力资源过于紧张,从第一季度拖到了第四季度,才达到了第二季度的要求。过程中,需求也一直在扩充。
客观上的困难:项目重构 说了下重构risk-app 接入组件库 自己重写业务逻辑
三面:
- 编程题 考察合成事件和batchupdate , 延伸问了如何接管batchupdate (unstable_batchupdate)
- 编程题 实现一个useInterval
- 编程题 考察原生 dom操作 对重绘重排的理解,延伸问了requestAnimationFrame 使用场景原理
- 问遇开发中遇到的最大困难 聊了些lowcode相关的
四面:
- 职级,所在部门,
- 薪资构成,社保缴纳比例
- 晋升和普调
- 餐补 房补 出差补贴之类的
- 绩效和奖金
- 入职的窗口
- 背调