2025-26 寒假心得

本文最後更新於:2025年2月16日 凌晨

這次寒假做了一堆事情,雖然從去年就開始放,但感覺只有過年一個禮拜是放假,其他時間都還是繼續留在學校做事,所以寫篇心得記錄一下。

Google STEP

去年 11 月中去美國的時候填了 2025 Google STEP 的實習,最後在 12 月底收到了進面試的通知,當時信件說會在近期安排面試,然後面試結果會等大約一個月,也就是 2025 一月的時候出來,結果最後拖到了 12/31 號才通知。原本 Google 安排 1/13 早上跟下午進行兩次面試,結果好像是面試官不夠還是怎樣,二面換了兩次時間,從 1/13 下午改到 1/16 又改到 1/21,缺面試官可以直接錄取我沒關係

面試

面試流程基本上都差不多,不會有自我介紹的環節,面試官也不會看到履歷,面試就是單純的 coding interview,Google 會提供一個類似 Google Docs 但是比較高級的編輯器,面試時就是直接在上面寫 Code 或是標記想法,可以自己選要什麼語言,我兩場都是直接選 C++。

面試過程其實跟清大特選面試蠻像的,只差在 Google 需要寫 Code,所以我就用平常跟別人討論題目的心態跟想法去面對,沒想到一面一點進去是一個印度人。原本就有聽說可能會是一次英文一次中文的面試,雖然我英文很爛但是如果是講題目的話還勉強可以,可是印度人就完全是兩回事了,印度腔根本聽不懂,一句話可能只能聽出個位數個關鍵字,還好他廢話蠻多的,大概有一半的時間都在復述我說的想法,然後自言自語說 emm this makes sense 之類的,所以還算勉強應付得過去。

題目 Google 說不能公開,但基本上就是一些基本的算法題,我遇到的是一題 DP 跟一題 Greedy,DP 那題超級水,他講完題目基本上我就直接開始講做法了,所以他後來給了好像三四種變種,才把 45 分鐘的時間填滿。二面就是台灣人的中文面試了,題目有稍微難一點,但原題還是蠻簡單的,也是給了兩三種變種,有個版本我講了一個線段樹的版本,現場刻了一顆懶標線段樹。身為很久沒認真打競程的我根本就快忘記懶標模板怎麼寫了,只能根據我對於線段樹以及懶標的理解,一邊完整解釋概念給面試官聽,一邊依照概念實作。面試官看起來也是知道這東西,有指出我一個地方有小 bug,不過很快就發現並修正了,無傷大雅。

面試的過程我基本上都是當作我是在講課,把完整的思路、利用到什麼性質等細節都講得很清楚,二面結束後我有問面試官我有什麼可以改進的地方,他說我講得很好很清楚,看來這個策略是正確的,不過大家都說 STEP 只收女生,所以就隨緣吧,結果據說會在三月出來。

HPC-Camp

清大超算團隊在寒暑假都會舉辦訓練營,在三天的寒假營隊裡會教雖然是基礎但還是不簡單的超算知識,包含叢集電腦的架構與操作、程式編譯、Profiling、平行程式等等,去年我也是因為這個寒假訓練營才正式踏入了超算的領域。

而今年就換我當工作人員了,起初我以為我應該只是幫忙當助教或是隊輔之類的,沒想到看到教授的籌劃,我是行政總籌之一,原本想說辦完 IONC 就再也不碰營隊行政的,看來還是逃不過,但還好有學長的支援,教授的規劃也蠻明確的,所以工作進行得還蠻順利。此外,因為去年教 Profiling 的學長今年不能來,所以老師就問我說要不要試試看講課,我回說如果沒其他人的話可以試試看,結果老師毫無猶豫的說:「Ok,那就讓你試試看了」,怕爆 XD。

後來我就負責了 Profiling 的課程跟 Benchmark 的作業,Profiling 基本上就是根據去年的內容微調,原本想說今年的時間多一點點,所以加了一點內容,原本想說我的腳本幾乎都寫好了,應該操作起來會蠻順利的,不過好像還是太多了,對於第一次接觸超級電腦的同學來說還是有點太難,看來我對於難度的掌握能力還有待加強:(

不過 Benchmark 就順利很多了,這次是規劃在限制 CPU、RAM 資源以及執行時間的情況下,讓他們 tune 出最佳的 HPL 結果,除此之外還使用了平程使用到的計分版系統,讓學員之間互相競爭,有趣的是因為平程計分版是以時間從小到大排序,但是 HPL 要看 GFLops 從大到小排序,所以我就把 GFlops 加一個負號直接填到 time 的欄位,這樣計分板就是從大排到小了,不過他們看到的都會是負數,還蠻好笑的,後來半夜看到他們還一直卷結果,感覺很有成就感(x

另外有一個 OpenMP 的作業,剛好是平程的 Lab2,要算一個半徑為 R 的圓裡面有幾個 Pixel(對,就是我卷到 Rank1 然後忘記交上去的那次。),一般的算法是直接算 $\frac{1}{4}$ 個圓然後再 $\times 4$,不果我那時候想到了沿著輪廓算 $\frac{1}{8}$ 個園然後再 $\times 8$ 的做法。除了複雜度是一半之外,連常數也優化了好幾倍,所以我就丟了當時的程式碼,速度大概是一班實作的兩三倍以上,為了激發他們的鬥志,我就跟他們說比我快的我請他吃飯,果然這招有奏效,那天晚上聽說還有學弟卷到半夜三四點,最後成功想到了跟我當初差不多的算法,蠻好玩的 XD 學弟有潛力。

台積電黑客松

其實原本沒有要參加的,因為我以為決賽是在學期間,結果報名結束前兩天有朋友來問我,我才知道原來還在寒假期間,所以就報了。

預賽

每隊四個人都要進行 coding test,據說台積電 IT 面試的第一關也是這個,最後要錯一題以內或是一題多然後時間夠快才能夠進到決賽,我自己是覺得我抽到的題目蠻簡單的,好像花不久時間就破台了

決賽

決賽是兩天的黑客松,題目跟範例測資會在一周前公布,我們抽到的題目是跨國界即時會議翻譯系統,簡單來說就是要能夠在會議期間即時將講英文、德文、日文的使用者的語音辨識成中文,同時要辨識出裡面的專有名詞,然後還要能夠在會議結束後自動產生會議記錄。

我們做的成果可以參考我們的發表簡報,原始碼也有公開在 GitHub 上。簡單來說就是寫一個網頁,具有 CPU Server 以及 GPU Server,透過自架的 Whisper 模型將語音辨識成文字,然後再透過 DeepL 以及 Mistral API 將文字翻譯成中文的一套系統,比較特別的是我運用平程的知識,在 GPU Server 上寫了 MPI 的程式,同時執行八個 Whisper 端點來達到 load balancing,而每次辨識都只需要花不到 1 秒鐘的時間,最多 1 ~ 2 秒,因此我將我們的逐字稿生成頻率調成了每秒一次,再加上 DeepL 的快速翻譯,我們的系統應該是全場最接近即時翻譯的。

但不料的是,在現場 Demo 的時候,不知道為什麼受到了資料集污染的影響,跑出了奇怪的簡體中文(什麼貢獻者之類的),然後貌似受到了網路還是 Microsoft Teams 的影響(沒錯,投影其實是使用會議室直播,所以延遲相當大),導致後端快速生成的資料並沒有快速地出現在前端,讓我們的完整成果並沒有辦法好好地呈現出來,最後應該是只拿到了第四名。不過以最年輕隊伍的身份能拿到這個名次也是很不錯了,而且這是我第一次寫網頁就直接上戰場,雖然肝了一個禮拜但真的學到蠻多東西的,好玩 XD。

ASC

中國的超算比賽,要在 2/21 前交出預賽的報告,這部分就等之後再更新了。


2025-26 寒假心得
http://koyingtw.github.io/2025-26-Winter-Vacation/
作者
Koying
發布於
2025年2月16日
許可協議