南京 SHEIN 前端开发(架构)面经 您所在的位置:网站首页 shein社招面试流程 南京 SHEIN 前端开发(架构)面经

南京 SHEIN 前端开发(架构)面经

#南京 SHEIN 前端开发(架构)面经| 来源: 网络整理| 查看: 265

前情提要

SHEIN 是一家我关注已久的公司,所以收到面试邀请时还是挺惊喜的,当时我正在完成自己的开源 UI 组件库(这是伏笔!),连八股文都还没来得及背,但抱着走过路过不能错过的心态决定欣然赴约,正好测试一下自己的水平~

React 1. 请问 Vue 和 React 的区别是什么?

答: 这里当时我回答的是 Vue 强调的是响应式和依赖收集,而 React 强调的是 diff 算法和 Fiber 结构,然后详细描述了下它们的结构,但面试官显然是不满意,他希望听到的是 Vue 双向绑定和 React 单向数据流的区别,这可以从他之后的问题看出来。

2. 知道 React 单向数据流吗?它和 Vue 的双向绑定有什么区别?

答: 单向数据流的概念我确实没有背,我回答是父传子通过 props,子传父只能通过父组件传递的回调函数。如果顶层(父级)的某个props改变了,React会重新渲染所有的子节点这点我没回答到。

3. React 单向数据流对组件的开发有什么好处?

答: 这个我确实没了解过,大概猜了一下,大概说的不对。回来查了一下,单向数据流的好处是能够保证状态改变的可追溯性,假如,父组件维护了一个状态,子组件如果能够随意更改父组件的状态,那么各组件的状态改变就会变得难以追溯。

4. React Hooks符合单向数据流吗?

答: 我说符合,然后解释了下 Hooks 的原理,不知道答的对不对。

5. 为什么 Vue 有插槽而 React 没有?

答: ???抱歉,这个真没了解过。回来查了一下,说 React 的 this.props.children与Vue中的slot相对应。不管是单个slot,还是多个slot和作用域插槽,都可以完美实现。

Vue 6. 知道 Vue 中的计算属性吗?和 watch 的区别?

答: 送分题

7. 如果在计算属性中添加一个随机数或者日期,计算属性会改变吗?

答: 不会改变,送分题啊,我还手写过计算属性,但有点记不清原理了,当时已经被问的有点懵了,然后面试官敏锐地察觉了这一点。

8. 计算属性的原理是什么?它是依赖于 data 中的数据还是自己创建一个新的依赖?

答: 肯定依赖 data 中的数据啊,我都不知道当时自己在犹豫什么,整个面试中最后悔的一题了。

9. 为什么 Vue 2.x 对 TypeScript 的兼容很差,而 React 就兼容的很好?

答: 这个没了解过,我猜是因为 Vue 2.x 是面向对象,而 React 是函数式的原因,但具体的不清楚。

10. 知道 Pinia 吗?和 Vuex 有什么区别?

答: 你要问 Vue 3 就问 Vue 3 啊,问什么 Pinia 啊,这个我只了解原来 Vuex 中有区分异步和同步函数的 action 和 mutation, 在 Pinia 合二为一了,其它就不清楚了。

TypeScript 11. interface 和 type 的区别?

答: 送分题

12. 元组 和 数组 的区别?

答: 送分题

13. namespace 和 module 的区别?

答: 这个没了解过,module 之情在导入第三方包时还用过,但 namespace 只知道是命名空间的意思。

开源 UI 组件库

还记得,一开始说的伏笔吗?我的开源 UI 组件库只完成了一半,但为了体现技术嘛也写在了简历上,没想到面试官盯着这个问,其它项目看都没有看,简历都没翻第二页。不是啊,我知道其它项目有点水,但也不至于一个字不问吧(笑哭.jpg)。

给我的感觉就像小孩子在沙滩堆砌一座沙子城堡,正在沾沾自喜中,突然一波面试浪潮无情地将城堡打翻摧毁,欲哭无泪啊。

14. 如何实现组件的按需导入?

答: 我大概知道意思是正常开发页面是在 src 文件夹下创建文件,但开发组件是放到 packages 文件夹中的,但具体怎么操作不记得了。

15. 针对组件的兼容性问题有什么想法?如何适配低版本浏览器?

答: 我回答的是通过配置 .browserslistrc 文件,但面试官显然不满意,这块确实没了解过。

16. 如何完整的开发一个开源项目?

答: 不知道啊,我开源作品还没完成呢(笑哭.jpg)。我回答了要有开源协议,上传 GitHub,发布到 npm 上。

17. 知道哪些开源协议?

答: 不清楚,不知道,不了解。

18. npm 和 yarn 是什么?有什么区别?

答: 这个没具体背过,我说它们都包管理工具,npm 的下载包时版本会有问题,yarn 通过 yarn.lock 文件锁定包的版本依赖,感觉说的不够详细。

19. 除了 npm 和 yarn,还知道哪些包管理工具?

答: 我说 npx,面试官说这也是包含在 npm 中的,那其它就不知道了。

20. 什么叫版本语义化?

答: 不清楚,不知道,不了解。

总结

唉,面试挂可以找千万个理由,但归根到底还是自己太菜了。本以为自己的 Vue 和 React 已经没有太大的问题,但实际上还是有许多细节没有关注。开源作品没有完成就放在简历上,给自己挖了大坑,我一定尽快完成它。

总之,下次面试相信一定能做的更好。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有