面试被问性能优化,被考倒了..

共 1602字,需浏览 4分钟

 ·

2024-04-01 19:00

大家好,我是程序员鱼皮。今天分享一个项目相关的面试题,源于编程导航某位小伙伴的提问。

鱼友提问

鱼皮你好,我最近在面试中遇到了一些关于项目性能优化的问题,想请教一些经验和方法。

我使用的是编程导航的 智能 BI 项目,最近总是会被问到 “项目第一的瓶颈是什么”、“怎样去优化” 之类的问题。

我回答的是由于调用的 AI 接口有一定的调用限制,在项目中使用了限流的策略来避免超出配额。但是有些面试官会进一步问我,如果没有 AI 接口的限制,那么我的项目还有哪些其他的性能瓶颈?以及我会如何解决它们?这时候我就不太清楚该怎么回答了。

鱼皮在面对这类问题时,是如何思考和回答,来给出面试官满意答案的呢?

d2790c8e8787313d27f2a2e5e0391c6b.webp

鱼皮回答

小伙伴你好,由于缺少一些性能优化的专业知识,你的这个问题其实是比较空泛的。

因为对项目进行优化的前提一定是 结合具体的业务场景线上实际运行情况 才有意义,回答这个问题前首先要强调这点,不同场景和规模的项目,关注的优化点和优化方法也不同。

就以我的智能 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

举个例子,比如成本优化。随着用户图表数据量的增大,后端的存储成本越来越高,这时就需要通过数据压缩、数据沉降、数据清理等机制来降低成本。

不知道大家能不能想到这些,有没有启发?

学到的话 “点个赞” 或者 “在看” 吧~

9d436e4b4dbdc50fd635e8bf52c7ae4a.webp

对了,编程导航的最新项目《代码生成器共享平台》已经完结,感兴趣的同学可以 加入学习 啦!

👇🏻 点击下方阅读原文,获取鱼皮往期编程干货。

往期推荐

我的编程学习小圈子

我们做的小工具上线啦!

微信聊天记录导出的开源项目,火了!

服务器没挂,为啥无法访问?

我做了个网站,帮你写出满分简历

Java 行业磕碰两年,我的一点心得

浏览 26
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报