面試被問性能優(yōu)化,被考倒了..
大家好,我是程序員魚皮。今天分享一個項目相關(guān)的面試題,源于編程導(dǎo)航某位小伙伴的提問。
魚友提問
魚皮你好,我最近在面試中遇到了一些關(guān)于項目性能優(yōu)化的問題,想請教一些經(jīng)驗和方法。
我使用的是編程導(dǎo)航的 智能 BI 項目,最近總是會被問到 “項目第一的瓶頸是什么”、“怎樣去優(yōu)化” 之類的問題。
我回答的是由于調(diào)用的 AI 接口有一定的調(diào)用限制,在項目中使用了限流的策略來避免超出配額。但是有些面試官會進(jìn)一步問我,如果沒有 AI 接口的限制,那么我的項目還有哪些其他的性能瓶頸?以及我會如何解決它們?這時候我就不太清楚該怎么回答了。
魚皮在面對這類問題時,是如何思考和回答,來給出面試官滿意答案的呢?
魚皮回答
小伙伴你好,由于缺少一些性能優(yōu)化的專業(yè)知識,你的這個問題其實(shí)是比較空泛的。
因為對項目進(jìn)行優(yōu)化的前提一定是 結(jié)合具體的業(yè)務(wù)場景 和 線上實(shí)際運(yùn)行情況 才有意義,回答這個問題前首先要強(qiáng)調(diào)這點(diǎn),不同場景和規(guī)模的項目,關(guān)注的優(yōu)化點(diǎn)和優(yōu)化方法也不同。
就以我的智能 BI 項目為例,可以做以下幾點(diǎn)優(yōu)化:
1、AI 調(diào)用限制優(yōu)化
實(shí)際情況:由于 AI 接口的 QPS 有限,導(dǎo)致項目實(shí)際運(yùn)行時出現(xiàn)了調(diào)用超限的報錯。
解決方案:單個 AI 接口的 QPS 有限,那我們可以多搞幾個 AI 接口,通過負(fù)載均衡(輪詢調(diào)用多個 AI 接口)的方式增加整個系統(tǒng)的 QPS?;蛘咴诔杀居邢薜那闆r下,通過限流來保證系統(tǒng)的穩(wěn)定性。
做性能優(yōu)化的時候有個小技巧,多拿生活場景去類比。比如一個店供不應(yīng)求,那可以限時發(fā)售、限制流量,或者增加一個排隊機(jī)制,讓用戶按順序等待,并依次執(zhí)行操作。
2、數(shù)據(jù)處理
實(shí)際情況:AI 接口單次能處理的數(shù)據(jù)量,用戶輸入數(shù)據(jù)過多時,直接報錯。
解決方案:可以將用戶輸入的數(shù)據(jù)進(jìn)行壓縮,比如合并同類的數(shù)據(jù),使得 AI 接口能夠同時處理更多行列的數(shù)據(jù)。如果發(fā)現(xiàn)壓縮效果差,可以優(yōu)化算法;如果發(fā)現(xiàn)壓縮效率低,可以用文件分片 + 多線程等方式并發(fā)壓縮。
3、前端查詢優(yōu)化
實(shí)際情況:隨著單個用戶圖表數(shù)的增多,前端查詢速度越來越慢,比如要等待 8 秒才能加載出圖表。
解決方案:可以引入緩存機(jī)制,從更快的內(nèi)存緩存或本地緩存查詢數(shù)據(jù),減少查詢時長。
4、用戶體驗優(yōu)化
實(shí)際情況:由于 AI 接口響應(yīng)時間較長,用戶要等待很久。
解決方案:可以將同步等待優(yōu)化為異步執(zhí)行,用戶執(zhí)行操作后,立刻得到 “提交成功” 的提示,然后用戶可以選擇等待,也可以等接口執(zhí)行完成后得到通知,或者主動到任務(wù)管理頁面查詢進(jìn)度。在提高用戶體驗的同時,能夠支持更多用戶同時使用系統(tǒng)。
當(dāng)然,上面幾點(diǎn)都是圍繞性能優(yōu)化,其實(shí)項目的優(yōu)化遠(yuǎn)不止性能,還有可用性、穩(wěn)定性、可觀測性等等,之前魚皮都分享過。
編程導(dǎo)航的同學(xué)可以閱讀《如何增加項目亮點(diǎn)?》:https://bcdh.yuque.com/staff-wpxfif/resource/tstv23fyzh0lnq5o
舉個例子,比如成本優(yōu)化。隨著用戶圖表數(shù)據(jù)量的增大,后端的存儲成本越來越高,這時就需要通過數(shù)據(jù)壓縮、數(shù)據(jù)沉降、數(shù)據(jù)清理等機(jī)制來降低成本。
不知道大家能不能想到這些,有沒有啟發(fā)?
學(xué)到的話 “點(diǎn)個贊” 或者 “在看” 吧~
對了,編程導(dǎo)航的最新項目《代碼生成器共享平臺》已經(jīng)完結(jié),感興趣的同學(xué)可以 加入學(xué)習(xí) 啦!
???? 點(diǎn)擊下方閱讀原文,獲取魚皮往期編程干貨。
往期推薦
