如何应对前端系统设计和优化

最近接触了不少面试题目,有这么一类常见的题目,没有标准答案,上下限差距很大,第一次碰到没有准备的话,回答起来总会比较纠结。

具体的题目有性能优化,提升代码质量,做埋点系统,优化webpack等,这里我把他们统称为系统设计和优化题。

在这里我尝试找一下应对这些问题的套路,让大家可以在工作和面试中找到感觉,顺利过关。

下面我就同时写题目和我自己的答案,希望大家能在阅读的过程中找到一些规律。

具体题目

如何做性能优化?

问题的关键是性能,那么,性能指的是什么?页面加载的快慢和页面是否流畅。

那么用什么指标来衡量呢?页面加载时长和帧率

怎么计算这些指标呢?加载时长可以使用performance.timing,API上报,onload等事件。而帧率可以使用raf来计算。

那么我们要怎么做性能优化呢?针对用户访问的全流程,每一步进行优化。如dns解析,tcp链接,渲染页面等。详情可以查看我的文章

如何提升代码质量?

同样我们要先想以下的问题
什么是代码质量?代码质量有哪些指标(代码性能、代码的缺陷数量)?怎么计算指标?

怎么提升代码质量?
从研发的流程着手。需求评审、代码初始化、写代码(eslint)、提交代码(git commit钩子)、测试代码、发布代码(规则拦截)、数据监控

如何进行效率提升

怎么衡量效率?人日?

怎么提升效率?跟上面的提升代码质量的阶段比较接近,不重复讲了。

怎么设计埋点系统

关键的问题是数据,因此我们要从数据着手,了解我们要上报哪些数据(性能/用户行为/错误),怎么上报数据(gif,api),怎么处理数据(日志清洗,归类,存储),怎么查看数据(可视化,权限系统),怎么利用数据(生成报表,报警监控)

怎么做搭建系统

关键的元素是页面。因此我们要围绕页面的生产,页面的配置,页面的管理,页面的渲染等来进行讨论

怎么做客户端离线资源系统?

关键问题是资源。因为我们要解答发放什么资源,什么时候发放,怎么发放,怎么更新、删除资源,怎么使用资源,资源的优先级、有效期等问题

怎么优化webpack

webpack的优化可以分为缩小体积和减少打包时间两个方向。

我们可以从webpack打包的流程为切入点进行分析。

初始化参数阶段、加载插件阶段、确定入口阶段、编译阶段、完成编译、输出资源、写入文件

尾声

不知道大家找到一些规律了吗?

下面是我的思路。

找到问题的关键点,找到如何衡量关键点的方法,从系统运行的全流程进行分析,针对每个流程进行分别优化。

希望大家可以有一些收获

支持作者

如果我的文章对你有帮助,欢迎 关注和 star 本博客 或是关注我的 github,获取更新通知。欢迎发送邮件到hpoenixf@foxmail.com与作者交流