在閒魚實習是一種什麼樣的體驗

語言: CN / TW / HK

前言

作者介紹:文景睿,花名幕辰,Github名 luckysmg ,一名來自哈爾濱工業大學軟體工程系的大四學生,在閒魚技術團隊實習了三個月。先後參與了閒魚音影片編輯器,圖片編輯器的改版升級,以及 Flutter Engine 優化等相關工作,這篇文章主要是個大家分享一下我來實習的這段時間的一些心得體會。

初來乍到

之前,我在學校的實驗室呆了三年,主要做的是移動端研發的相關工作,對專案工程也接觸了不少,但是當看見閒魚工程的巨量code的時候還是讓我大吃一驚,初次編譯專案要半個小時是我這輩子都不敢想的 。專案的各個模組分工很多很細,來了之後請教師兄,瞭解各個模組的功能和作用。由於Flutter是閒魚中使用的主要技術,而我自己之前主要是做Native相關工作的,所以對於Flutter多少有些陌生,無論是從UI佈局的思路,響應式資料流的處理還是互動等等和Native都有較大差別,我也花了一些時間來進行學習和適應。

進入狀態 在熟悉了一段時間工程程式碼,整體研發模式之後,我也迫不及待的正式進入戰鬥模式開始輸出 。之前提到,我參與了影片編輯器和圖片編輯器的研發,主要就是以下兩個頁面:

 

這兩個頁面是閒魚主釋出鏈路的核心頁面,每天會有數百萬的使用者接觸到這個頁面,剛接手的時候我也不敢想象,第一次想著自己每一行code都將會影響數百萬的使用者,心裡難免會有些緊張和焦慮。兩個頁面的共同難點就是強互動,需要根據使用者互動實時對頁面內的元件進行響應,給使用者良好的操作反饋。其中,圖片編輯頁面單指控制圖片的需求甚至還要用到一些數學知識(向量的點乘和叉乘)來對控制元件進行角度的變換,以及放大縮小等等,如下圖所示

再把這些資料經過一定的的計算,得到貼紙合成的資料,比如貼紙座標,旋轉角度,大小尺寸等引數,再利用源圖片資料利用一些演算法流程對圖片進行合成為一張全新的圖片。上面每一步,每一步都不能出任何差錯,這個對我一個初出茅廬的學生而言,無疑是一個巨大挑戰。但是,挑戰也是提升自己的好機會,也是學習的好機會,在師兄的幫助和指點下,我也是順利地完成了相關工作,並如期上線。 

迎來挑戰

在閒魚團隊,我感受到更多的是對技術進行學習和探索,而不是做完業務和需求就了事,在基本完成了相關比較緊急的事情之後,師兄開始帶我瞭解Flutter的引擎層,並且著手開始優化Flutter引擎程式碼。引擎部分原本我認為比較底層,離我很遠,自己觸碰不到,但是進去之後發現其實並沒有那麼難,於是開始瞭解相關程式碼以及實現,也向Flutter官方提了一些PR對引擎層程式碼進行優化,這些都不算啥,真正的挑戰,要從iPhone13釋出說起。

大家都知道,iPhone13系列首次支援了120HZ高刷,然而,很不幸的是flutter在iOS側的引擎部分並沒有適配相關程式碼,並且幀回撥中相關間隔時間也存在問題,導致閒魚在iPhone13系列上收到大量反饋和使用者輿情,卡頓,不順滑,高刷無效等等等劈頭蓋臉等像我們撒過來......於是我拿出了我剛買的13,開始對引擎進行debug....嘗試著能不能修改引擎的相關實現來解決問題。最後在翻看引擎的相關程式碼後,對iOS側的刷幀回撥進行修改,最後成功讓閒魚的Flutter頁面在iPhone13系列機型擁有高刷(目前閒魚最新版本已經上高刷)

另外,我自己也發現iOS側還有一個鍵盤彈起沒有動畫的問題,而Android是有的,說明也是引擎層的問題,我也通過結合iOS系統特性對Flutter Engine進行修改,提升了鍵盤彈起場景下Flutter應用的體驗,以下是實現對比(後續會有相關實現的文章)

總結

總的來說,實習三個月下來,感覺團隊的技術氛圍,團隊氛圍都非常不錯,我個人技術方面有很大的進步和發展,也順利拿到了轉正offer,最後也決定秋招選擇了閒魚技術團隊,在這裡也非常感謝師兄們在我實習期間給我非常大的引導和幫助。

附上我跟我的小夥伴們的合影: