百度 9.30 二面 (35min)
百度 9.30 二面 (35min)
Breezli先简单介绍项目
刚介绍完组件库就开问了
为什么使用 Monorepo 架构,主要为了解决什么问题
我回答是依赖隔离相关的东西,然后把工具类、组件实现、文档、测试这类的逻辑相隔开会好管理,还提到了缺点就是整个项目体积可能会很大之类的
组件库使用了StoryBook,是用来干嘛的,单纯用来测试吗,还有没有用什么功能
大概说了是用来调试单独的组件用的,由于需要一个可视化的界面来看当前组件的样式和功能,直接通过文档站点不好观察组件调试过程中的变化,并且Storybook有热更新,通过配置相应storybook的选项也可以测试控制组件的某种功能,比如按钮的大小颜色,节流传值功能之类的
CI/CD如何配置、GitHub Action对这个项目的作用
和一面时回答的差不多,然后面试官好像以为我的npm包和文档站点都是在github actions构建流程里的,然后解释了一下包发布是在我的核心层里,然后文档站点是通过github actions构建的,扯了有一会
为什么想要做组件库这么一个项目,是什么需求不满足以至于要重新构建一个自己的组件库
一是说组件开发成本比较大,刚好自己在学vue3源码的时候碰到了 monorepo,然后想做一下二次实践
追问:有了解过全局覆盖吗,没有实践过的话你觉得会是怎么做的
猜想了一下可能是在全局引入css配置覆盖样式?市面上组件库样式的全局覆盖还真没尝试过
axios项目的拦截器机制是如何实现的
使用 promise 链实现,请求拦截器倒序插到请求前,响应拦截器正序插到请求后,然后由于是promise所以任何一个环节出现问题都会终止整个流程,这个没啥问题
请求的取消是如何实现的
忘记了没说出来
请求取消:
CancelToken构造函数内部创建pendingPromise和cancel方法- 当用户调用
cancel(reason)时,解析pendingPromise并存储reason - 在 xhrAdapter 中:
if (config.cancelToken) { config.cancelToken.promise.then(reason => { xhr.abort(); reject(reason); }) }



