前言
最近参加了某公司的面试,一面二面通过,三面的时候有些磕磕绊绊。最终导致面试不通过,所以就将面试过程整理了一下。
React篇
useCallBack与useMemo的区别,什么场景下会用到,请列举一个不使用就会出错的场景
- useCallBack: 主要用于缓存函数,防止函数的重新生成
- useMemo: 主要用处是缓存值,防止值的重新生成
- 适用场景: 具体应用场景当时没想出来
useContext与redux的区别,分别讲一下适用场景
- useContext: 避免组件层级过深时数据传递的问题,可以跨组件存取数据
- Redux: 主要应用于项目中公共状态的存取,便于数据双向绑定与状态管理
React性能优化,你在项目中是如何做的?
- 通过useCallBack缓存函数,避免函数重新生成导致不需要更新的组件重复渲染
项目中如果State过多的情况下,应当如何进行优化
- 根据功能模块划分,将同模块下的state归并至一个对象类型的state来优化state过多的情况
小程序篇
在Taro中,请列举小程序底部菜单栏通过用户身份动态生成应该如何设计
- 用户登录的时候获取用户的身份信息,将身份信息存储到localStorage中,在底部初始化时,从storage中获取用户的菜单信息赋值到Redux/tookit中,动态生成小程序底部菜单栏
还有别的解决方案吗?
- 也可以直接存到storage中,从storage中进行存取,但是对于数据双向绑定没有存公共状态更加完美
小程序中有做哪些性能优化吗?
- 通过小程序Subpackage将不需要首次加载的模块进行分包处理,优化小程序首次加载的体积和加载时间
后台管理系统
你在项目中封装了哪些组件,有哪些难点?
- 管理系统有个功能是帮助用户进行预约项目,主要有预约的时间、机构等。组件主要是基于ant的日历组件,难点是在日历渲染的时候需要把当前用户可以预约的日期下可约的机构的匹配,需要把日历日期与机构日期进行匹配
项目的权限设计是如何设计的?
- 页面权限:通过umi的路由access插件,在用户登录的时候获取到用户的页面权限信息,通过access对现有路由进行过滤匹配,实现页面路由鉴权
- 通过用户登录之后将按钮权限存储到Storage中,在对应的页面获取按钮权限,对当前页面的按钮进行鉴权
请讲一下你对umi的理解,有哪些优缺点?
- umi蚂蚁推出的一个开箱即用,提供了一套开箱即用,从开发到部署的完整流程的开源框架
- 优点:丰富的插件系统、社区生态活跃
- 缺点:项目体积庞大,对于初学者有一定的学习成本
目的
希望各位大佬可以不吝赐教,对小弟的面试表现给出一定的意见,感激不尽