1. 自我介绍
2. 问:自学前端是怎么学的
广度学习+以点到面的深度学习
3. 问:js有哪几种作用域 (三种….
问:let在编译后实际还是var,因为低版本不支持let语法,这个是怎么实现的
答:猜测包装成函数,通过参数形式注入,读取argument
4. 问:hooks的属性都是怎么储存的 (链表
问:useRef介绍 (虚拟Dom引用
问:都在哪里用 (操作Dom 获取表单输入
问:如何用useRef获取子组件的方法 (不知道,没答上来
问:useContext (一系列常见相关用法,使用场景,问的很深
5. 问:移动端自适应怎么做,比如针对不同尺寸的屏幕
答:flex,rem,百分比…
(整个过程像讨论,百分比有什么不好,rem、vm选哪个,怎么互相转化等等,感觉有些地方没太get意思,确实项目经验不足)
6. 问:项目里的懒加载是怎么实现的
答:有两个项目都用到了,一个是常规的分页加载,一个是ssr的时候设置data-src
问:ssr操作Dom怎么解决
答:ssr获取html,cdn获取css和js
问:如果引用了antd的组件,ssr就开始操作dom了呢
答:部分组件noSSR(面试官表示可以,但听语气好像不是他想要的答案
7. 问:webpack拆包
答:没做过
8. 问:低代码平台的实现 (实习项目,但是是sdk和webpack配置是另一个部门做的,不懂
答:扯了扯我这边随着业务更新的组件,感觉不是面试官想听的
9. 问:异步async和promise区别
答:扯了代码清晰阅读方便,try catch之类的
(面试完发现好像是想问await直接阻塞后面代码运行,.then的话放入回调,但还是会运行,一些执行堆栈的区别)
10. 代码:深拷贝+循环引用优化
秒了 递归加set储存之前遍历的节点
还有一些别的问题记不全了,第二天感谢信
#面经##字节跳动##校招#