一、快手
主要问的问题如下:
react
16新增了哪些生命周期、有什么作用,为什么去掉某些15的生命周期(写过码看过文档都能答上了)- fiber怎样的,如何实现异步渲染(链表/可中断)
redux
和redux-saga
的区别和原理- 项目中用到的
saga-duck
是个什么东西 useEffect
的实现原理(坦白说自己没看过react的实现,就说了下preact的实现)- 异步渲染和旧版的diff的区别
- babel实现转码的过程(词法/语法分析)
- 项目的技术栈怎么选型(这种问题好几次都被问到,感觉我真的不太知道怎么答)
- 小程序底层实现原理了解多少(说了下双线程模型/预加载
webview
) - 项目nodeJs应用异常退出如何处理(pm2/uncaughtException事件等)、日志上报怎么做(输出重定向到文件,elk服务传传到kibana)
- graphic schema怎么设计(说了下我对于项目中的理解,资源维度,感觉回答不太好)
- 有哪些技术驱动业务的案例(说了下这个插件的思路和
webpack
一些优化)
二、拼多多
一面
redux
的理念(说了下action
dispatch
state啥的
,单向数据流)react-redux
中connect
怎么实现(高阶组件、context
注入store、subscribe订阅store数据变化)mixin
hoc 继承的区别,优缺点react
diff如何实现react
旧版的diff用深度优先还是广度优先。为什么用深度优先,广度优先能实现吗(其实我认为广度也能实现的,面试官问广度有啥不好,我确实不知道..)- diff的时间复杂度?为什么?(o(n)。提了下react优化o(n3)->o(n))
react-router
实现原理(hash/html5 history)- 客户端路由
hash
/history
实现的区别、原理 - 有哪些常见的
http
头 websocket
/轮询的好处和缺点 (性能、兼容性)websocket
的握手过程(urgrade websocket
)tcp
的握手过程- tcp/udp的区别
- 一个应用场景redux触发几次action如何设计(这个问题感觉有点迷,不知道有啥问,我回答也有点迷,面试官说可以了...)
- 尽可能多实现pdd app导航布局实现(就是类似4等分div并列排布)
- 如何清除浮动
- BFC实现原理
- 开放题:pdd首页假设没有任何优化,尽可能多的想优化的办法(懒加载、打包优化、webpack速度、代码压缩、雪碧图、http2 balabala....)
二面
- css的盒子模型(content-box border-box)
- 实现动画有哪些方法 (js css)
- react mixing hoc 继承 hook之间的区别/优缺点
- 浏览器渲染出一个页面的过程
- vue/react技术选型
- 项目相关,项目重构开发如何并行balabala...
- 项目中工程化进行了哪些优化
- 项目中继续进行优化会从哪些方面去做(说了下webpack5 module fedration)
- nodejs项目的性能优化
- linux文件权限(4 2 1 )
- 前端监控怎样实现 (数据采集、上报、展示之类)
三、虾皮
一面
- http 302 301 307之间的区别
- 301和302对于seo来说哪个更好 (301)
- 跨域是什么、如何解决
- jsonp有什么缺点
- 图片base64和外链的应用场景,各有什么优缺点(base64减少请求数,但是会增加额外的体积)
- http缓存机制
- https的握手过程是怎样的
- set/map的区别
- hook的局限性
- setState和hook的区别
- decorator的作用,编译后是怎样的(@decorator -> decorator(target)...)
- symbol是什么,一般用来做什么
- csrf 是什么 如何防范
- sql注入是什么,如何防范
- react 调用setState之后发生了什么
- nodejs事件循环机制
- pm2的原理,有哪些模式(cluster fork)
- docker和k8s有了解多少(k8s听过没用过)
- 移动端端一个元素拖动,如何实现和优化(节流、改变位置)
-for in
/for of
看代码输出
- 几道看代码说输出(忘了具体题目了)
- 描述链表的反转怎样实现,复杂度多少
编程
- 实现
instanceOf
- 实现一个对象被
for of
遍历 - 实现链表的添加、删除。复杂度多少
二面
- 给了两段效果上都可以实现child 继承 parent,细节上的差别function child(){}function parent(){}
child.prototype.__proto__ = parent.prototype
child.prototype = new parent()
复制代码 - 一些代码看输出的题目。考点有函数
this
指向的问题 - 如何监听html外链资源加载失败(面试官又追问了
onerror
和addEventListener
的error都能吗。面试官说onerror不行,具体我没试过...) Mutation Observer
、Intersection Observer
使用场景(Intersection听过没用过)127.0.0.1
和0.0.0.0
差别(一个只能通过localhost
,一个可以通过本机ip或者localhost都行)- 利用promise js sleep函数实现
- jsx转换后是怎样的
redux
compose
函数做什么的,中间件呢redux-saga
是什么,和redux-thunk
有什么区别- dva有了解吗
umi.js
有用过吗req.pipe(res)
- stream 如何处理数据消费和数据生产的速率不一致问题
- writeable stream
drain
事件是做什么的(这是和一个控制读写速率有关的事件)
四、字节
一面
- 常用的http状态码(101 200 204 301 302 304 307 400 404 500...)
- 301和302的区别(永久/临时)
- 前端路由怎样实现(
hashchange
事件 hack history.pushState) - 前端路由直接刷新404怎样处理(404时重定向到index.html 如nginx)
- 从前端到后端全链路如何设计实现一个登陆的流程(session方案、jwt)
- 什么是跨域,怎样处理
- 简单请求和复杂请求的区别
- 浏览器的缓存策略说下
- domain属性解决跨域。几种domain设置对跨域是否生效
- ts 泛型做什么的,infer关键字的作用
题目
- 实现typescript的
Paramters
、ReturnType
(考察infer关键字使用) - 实现
Promise.all
(每个promise resolve结果存数组,最后一个promise返回时,把数组返回) - 实现一个并发请求控制函数,限制并发数
二面
- jwt的原理(以前用过,比较好说)
- xss和csrf是怎样的,如何去解决
pureComponent
和Component
的区别(前者shouldComponentUpdate
默认比较props)react
hoc hook解决了什么问题- 有哪些常用的react hook,它们做了什么(
useState
useReducer`` useContext
等等...) - 项目实现一个中间层的意义(前端全链路日志打通)
setState
同步还是异步setState
传递对象和函数有什么区别?如何选择- 合成事件怎样的,有什么好处
- 事件冒泡和事件捕获的区别、react中的冒泡和捕获呢(react中都是合成事件,无论冒泡和捕获,对应于原生事件都是冒泡)
- 怎样看待加班(hhh 加班很正常啦,在腾讯的时候也是每天加班)
- 为啥选择跳槽
题目
- 实现
css
垂直、水平居中 - 实现
bind
函数 - 实现快速排序
三面
- 为什么之前拿了实习offer没来/下一份工作有怎样的预期
graphql
相比restful
的区别、优点缺点()- 为啥选择了
redux-saga
作为解决方案(解决异步优雅/提供很多工具函数)。redux
的异步中间件方案有哪些,对比。saga
对比dva
? - graphql的鉴权在哪里做
- 协程是什么(语言层面实现的并发),Go/nodeJs怎样去实现协程(Go使用go关键字、
node
可以使用Generator
实现、我理解react
16的异步渲染也是协程的实现) react
fiber
的机制是怎样的- 锁机制的作用,node和Go如何处理死锁
- Go/node实现并发怎么做
- node和Go的优缺点怎样理解
编程
- 实现一个
useState
三面可能因为简历写了自己写过一些Go(其实我只是个人项目的一些玩具),面试官问了不少node和Go的问题,然后我就先表明Go自己只是简单学过,然后就按照我的理解回答node和Go的问题..幸好感觉回答得也7788吧
需要面试答案,最新web前端资料,电子书、VUE、面试题、精讲视频的点击这里获取
![480d6fdf41ea6711ee1cd3d7555d46e5.png](https://i-blog.csdnimg.cn/blog_migrate/5cc27e712a1e634bb1881bae6ed4c6ed.png)
![16b0b0de936056109a989ed9fceaad2d.png](https://i-blog.csdnimg.cn/blog_migrate/9f0f61ed03b8abefe032320bc514a1cc.png)