面试被问性能优化,被考倒了..
大家好,我是程序员鱼皮。今天分享一个项目相关的面试题,源于编程导航某位小伙伴的提问。
鱼友提问
鱼皮你好,我最近在面试中遇到了一些关于项目性能优化的问题,想请教一些经验和方法。
我使用的是编程导航的 智能 BI 项目,最近总是会被问到 “项目第一的瓶颈是什么”、“怎样去优化” 之类的问题。
我回答的是由于调用的 AI 接口有一定的调用限制,在项目中使用了限流的策略来避免超出配额。但是有些面试官会进一步问我,如果没有 AI 接口的限制,那么我的项目还有哪些其他的性能瓶颈?以及我会如何解决它们?这时候我就不太清楚该怎么回答了。
鱼皮在面对这类问题时,是如何思考和回答,来给出面试官满意答案的呢?
鱼皮回答
小伙伴你好,由于缺少一些性能优化的专业知识,你的这个问题其实是比较空泛的。
因为对项目进行优化的前提一定是 结合具体的业务场景 和 线上实际运行情况 才有意义,回答这个问题前首先要强调这点,不同场景和规模的项目,关注的优化点和优化方法也不同。
就以我的智能 BI 项目为例,可以做以下几点优化:
1、AI 调用限制优化
实际情况:由于 AI 接口的 QPS 有限,导致项目实际运行时出现了调用超限的报错。
解决方案:单个 AI 接口的 QPS 有限,那我们可以多搞几个 AI 接口,通过负载均衡(轮询调用多个 AI 接口)的方式增加整个系统的 QPS。或者在成本有限的情况下,通过限流来保证系统的稳定性。
做性能优化的时候有个小技巧,多拿生活场景去类比。比如一个店供不应求,那可以限时发售、限制流量,或者增加一个排队机制,让用户按顺序等待,并依次执行操作。
2、数据处理
实际情况:AI 接口单次能处理的数据量,用户输入数据过多时,直接报错。
解决方案:可以将用户输入的数据进行压缩,比如合并同类的数据,使得 AI 接口能够同时处理更多行列的数据。如果发现压缩效果差,可以优化算法;如果发现压缩效率低,可以用文件分片 + 多线程等方式并发压缩。
3、前端查询优化
实际情况:随着单个用户图表数的增多,前端查询速度越来越慢,比如要等待 8 秒才能加载出图表。
解决方案:可以引入缓存机制,从更快的内存缓存或本地缓存查询数据,减少查询时长。
4、用户体验优化
实际情况:由于 AI 接口响应时间较长,用户要等待很久。
解决方案:可以将同步等待优化为异步执行,用户执行操作后,立刻得到 “提交成功” 的提示,然后用户可以选择等待,也可以等接口执行完成后得到通知,或者主动到任务管理页面查询进度。在提高用户体验的同时,能够支持更多用户同时使用系统。
当然,上面几点都是围绕性能优化,其实项目的优化远不止性能,还有可用性、稳定性、可观测性等等,之前鱼皮都分享过。
编程导航的同学可以阅读《如何增加项目亮点?》:https://bcdh.yuque.com/staff-wpxfif/resource/tstv23fyzh0lnq5o
举个例子,比如成本优化。随着用户图表数据量的增大,后端的存储成本越来越高,这时就需要通过数据压缩、数据沉降、数据清理等机制来降低成本。
不知道大家能不能想到这些,有没有启发?
学到的话 “点个赞” 或者 “在看” 吧~
对了,编程导航的最新项目《代码生成器共享平台》已经完结,感兴趣的同学可以 加入学习 啦!
👇🏻 点击下方阅读原文,获取鱼皮往期编程干货。
往期推荐