拼多多前端工程师社招面经
1面
pdd用的是他们自己家的面试系统。
1. react16新生命周期,有什么变化【描述】
两个static、一个didcatch捕获错误的、一个getsnapshot
2. react16之前的那些不好的生命周期怎么过度到react16的新生命周期。
3. componentWillReceiveProps用到了this,getDriverStateFromProps也要用,怎么办【伪代码】
把this.xxx存到state里面,第二个参数是state,里面有xxx(有点挫,懂的人应该都有同样的感受吧,如果是函数组件,一个useRef保存一下即可)。另外的方法,如果和内部变量无关,把它抠到class组件外面去
4. 编程题:['aaafsd', 'aawwewer', 'aaddfff'] => 'aa'(ide没有调试功能,也不能打开控制台,我只能写好了让面试官去运行。无调试,靠想象)【编程】
5. 编程题:['aa/bb/sd', 'aa/bb/wwewer', 'aa/bb/ddfff'] => 'aa/bb'(无调试,靠想象)【编程】 接上题改一下,不用一分钟即可解决
6. 怎么理解ts【描述】
类型检查、ide友好提示、文档、利于维护
7. ts的type和interface什么区别【描述】
经典问题,网上可搜,主要是列举出两者的特点,对比一下
8. ssr怎么实现,你们怎么做【描述】【举例】
将动态渲染逻辑做到后端去,并把最终html结果直接返回。我们这边是数据动静分离+部分ssr直出,重要的数据ssr,比较慢的接口还是放前端
9. 你们有没有统一构建的cli,怎么实现【描述】【举例】
基于react全家桶,ts、eslint、埋点上报、sw都可配置,根据配置生成代码模版,开箱即用
10. 你们项目有ci吗,怎么做,提交的时候会做什么事情【描述】【举例】
通过接入公司内部某ci,配置yaml文件,每次监听git hook,并作出对应的行为如安装、lint、部署、搬运、生成change log等等。提交的时候,检查lint、修复autofixable的问题,存在修不了的问题报错,提交失败