主要总结前两面基础问题,后面面试更多的是项目相关。
字节
一面
基础题
-
HTTPS? VS HTTP 知道哪些对称加密/非加密算法
HTTPS 详细的SSL/TLS握手过程? -
React hooks理念, diff原理,为什么要key prop
-
插入大量DOM节点,react 、 原生分别怎么处理,原生会用到哪些方法
React使用Fragment
,原生使用createDocumentFragment
-
JWT是什么,cookie细节
-
模块化了解吗?AMD CMD CommonJS ESMoudle
-
CSRF 详细说,防御方法
-
CSS position 详细说
-
UI组件库详细(我的项目)
-
微前端(我的项目)
-
最近学习的新技术
编程
- 手写节流防抖,详细问场景
- 原生xhr + promise封装
二面
项目深问
-
项目相关,微框架,为什么使用,难点与思考
-
项目相关,websocket兼容性,原生方法,丢包怎么解决
-
项目相关,RN白屏怎么处理,线上问题怎么定位问题
-
项目相关,什么情况下会OOM,怎么解决;JS什么情况下会堆栈溢出,怎么排查,怎么解决
-
长列表的滚动与刷新,虚拟列表怎么实现,intersectionObserve,getBoundingClientRect
-
JS动画与CSS动画?JS动画怎么不阻塞,CSS动画为什么不阻塞
合成线程:transform,filter,opacity,will-change -
webpack热更新是怎么实现的,怎么实现不刷新页面的更新?
-
原生JS有哪些不刷新页面的更新
编程:
- 输出随机数数组,不重复的随机整数[a,b),长度为c
- 二叉树,求从父节点到子节点每条路径组成的数字之和
三面
项目深度和广度上都有提问
编程题:问了我在博客写过的最大子序合
附加题:如果你是黑客,怎么实现CSRF攻击?
美团
一面
基础题:
-
项目发布流程?(gitlabCICD-Jenkins-Rancher啥的)
-
react源码详细问
fiber是什么?
双缓存了解吗?
render和commit哪个阶段可以中断,哪个是同步更新?
事件处理机制?怎么停止冒泡的?
-
webpack流程
loader和plugin的区别?分别写过这两个吗?
webpack懒加载怎么实现的?
-
babel了解吗,详细说说过程?
-
redux源码?redux-thunk源码? dva源码?
-
跨域的方法,详细问
-
微前端的详细问(项目相关)
-
websocket详细(项目相关)
编程:
- 手写节流,普通版及第一次就触发的版本
- 手写promisfy
二面
一面面评较好,聊得比较广,二面在此基础上比较轻松
项目和基础外,也聊了聊如何学习新技术和对团队的期望等等
编程:手写斐波那契,递归&遍历
三面
因为前两面评价很好,三面内容也不难
项目深度和广度扩展,感觉是很有水平的大佬
项目相关:局域网与广域网区别,他们分别使用的协议有什么区别?FTP&HTTP?
编程:写出实现数组拍平的所有方法(我写了API、reduce、for…of…)
阿里
一面
基础的问题会问很深入,注重细节
-
css盒模型
分别是怎么计算宽度的
使用什么来改变? -
position
有哪些属性,详细聊聊
position是基于什么定位的?要是父元素都是static呢?此时与fixed区别
详细说说sticky -
display:flex
flex详细聊,使用场景?怎么水平&垂直居中
flex:1缩写代表的含义,flex:3呢 -
事件处理,捕获阶段获取的event.target是什么
几种事件流和事件处理程序,为什么现在统一使用冒泡
什么事件不会冒泡?为什么不冒泡
react事件处理了解吗
react是怎么停止冒泡,要是你来开发会如何处理 -
用什么方法判断是数组?为什么不用你说的其他方法,而是新增了一个API:
Array.isArray
-
sort内部排序,是稳定的吗
sort接收参数有什么要求
怎么处理字符串顺序
怎么处理中文
a-b=0时怎么处理 -
reduce的使用,第二个参数的含义
-
跨域有哪些
跨域的请求可以发出吗?请求是在哪一步进行拦截的
CORS普通请求和复杂请求的区别 -
项目亮点?
编程:
- 实现对象数组的合并,去重,排序
- 实现redux compose函数
阿里一面过了,但是因为面试战线比较长,有些疲惫了,所以终止了面试流程。
最终拿到了美团&字节的offer。