當前位置: 妍妍網 > 碼農

面試被問效能最佳化,被考倒了。。

2024-01-26碼農

大家好,我是程式設計師魚皮。今天分享一個計畫相關的面試題,源於編程導航某位小夥伴的提問。

魚友提問

魚皮你好,我最近在面試中遇到了一些關於計畫效能最佳化的問題,想請教一些經驗和方法。

我使用的是編程導航的 ,最近總是會被問到 「計畫第一的瓶頸是什麽」、「怎樣去最佳化」 之類的問題。

我回答的是由於呼叫的 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

舉個例子,比如成本最佳化。隨著使用者圖表數據量的增大,後端的儲存成本越來越高,這時就需要透過資料壓縮、數據沈降、數據清理等機制來降低成本。

不知道大家能不能想到這些,有沒有啟發?

學到的話 「點個贊」 或者 「在看」 吧~

對了,編程導航的最新計畫【程式碼生成器共享平台】已經完結,感興趣的同學可以 啦!

👇🏻 點選下方閱讀原文,獲取魚皮往期編程幹貨。

往期推薦