找實習和面試經驗分享

這篇文章整理找實習期間碰到的一些趣事跟面試心得。

找公司

最初是 Dcard 開 Intern 缺的時候我沒有第一時間注意到,到看到時已經是截止前最後一週。我用很快的速度趕完申請要寫的作業,並快速地整理了一份 CV,最後拿到的履歷審核結果是感謝信,連進面試的機會都沒有,讓我大受打擊。

原本一開始其實我是打算看看能不能找到外商,再來就是一線軟體公司和新創,經過這次打擊我就把標準往下放,只要有公司願意給機會就都試試看。

我現在覺得這個心態比較健康啦,還可以順便累積面試經驗。

以下是我有投過的公司(附職缺)

  • Google - Student Training in Engineering Program (STEP)
    • 海投,啥都沒有
    • 最早投的,大概也不會上,其實算是投好玩的,push 自己往前而已
  • Dcard - Backend Intern
    • 海投,感謝信
    • 用自己的徵才平台,履歷可以完全自由發揮
    • 網站上面標月薪五萬,牛逼
  • GLSoft - R&D Engineering Intern
    • 貌似只能在 104 上面投
    • 海投,啥都沒有
    • 只有在 SITCON 上看到的純軟新創公司,感覺很開放所以想進去看看
  • 新加坡商鈦坦科技 - T Strong Plan (學期 Intern)
    • 從 104 上拿到表單填履歷,可以自由上傳
    • 11 月中才開始通知面試,所以到現在還在等
    • 外商,公司氛圍看起來超棒
  • CMoney - Backend Engineer / Intern
    • 在 COSCUP 上有看過,做理財金融相關產品的純軟公司
    • 104 上 HR 主動聯絡問要不要面試
    • 第一個面到的公司,面試官人很好,感覺 team 裡面的狀況不錯
    • 面試完有拿到口頭 offer

面試情況

先把我有面過的寫上去,之後有面其他公司我再回來補。

CMoney

由於是面完一段時間才回來寫,可能會有遺漏,見諒。

事前

在面試前要先寫邏輯測驗(有計時的 Google 表單),題目以邏輯推論測驗為主,時間很充足,我好像 15 分鐘就寫完了,不過看不到自己的分數。

線上視訊面試

流程
  1. 自我介紹
  2. 實習動機
  3. CS 相關知識問答
    • 資料結構
    • 演算法
    • 作業系統相關 (幾乎沒問)
    • 物件導向設計
    • 版控
  4. 白板題
  5. 想問面試官的問題
  6. 結果確認
自我介紹

其實原本就知道一定會有自我介紹環節,不過仗著平常常常上台的經驗,就算沒準備還是擠了好長一段。內容大致上說明自己來自哪間大學、平常技術社團/社群參與、講者經驗、參加過的開發之類的。沒講得特別順,給自己打個 70 分。

實習動機

實習動機我從最近修過的物件導向設計與分析和軟體工程實務開頭,提到想學習敏捷開發和大型軟體工程的經驗。面試官感覺很喜歡這個回答,也跟我介紹了公司也是用敏捷開發在迭代產品,還有一些公司的開發情形。

CS 相關知識問答

一開始上來的就是我自己最少碰的資結和演算法。這兩門課我至少都脫離半年以上了,而且我平常也沒有特別鑽研,慌的不行,特別是我面試前沒時間複習,完全就在裸考,雖然面試官問的非常簡單但我還是答得不清不楚。

面試官題目會隨著面試者的回答變化,重點還是平常要好好記啦,背我底下被問到的題目也沒用

資結和演算法我有印象的題目如下:

  • 舉例一個資料結構,可以把資料直接排好
    • Min Heap / Max Heap 在幹嘛、特性、可以用在哪?
    • 用 priority queue 來把資料排序的話你要怎麼做?
  • 求解費氏數列會用什麼方法做?
    • 解釋動態規劃
    • Divide and Conquer 和 DP 的差別
  • quick sort 的 worse case 發生在什麼狀況

第一題我第一個想到的就是 priority queue 用要放的值當 priority 可以達到用值排序的效果,但面試官提到我誤解題目意思,他要的是提高搜尋速度的資料結構。脫離資結一段時間的我實在是想不出來,後來面試官直接講二元搜尋樹,我就覺得我在耍笨。後面忘了講到什麼又聊到 Heap,面試官又問 Min Heap 和 Max Heap,我就回我只記得兩個分別是根節點一個是最小值一個最大值。

問到這裡的時候我就在後悔沒有好好複習資結和演算法了。

求解費式數列大家應該都會直接把上次的結果存起來下次再用,所以我直接回 DP,然而被問 DP 的定義是啥我就倒了。如果不要那麼緊張應該是答得出來。接下來剛好又聊到 Divide and Conquer,又被問 DP 和 Divide and Conquer 的差別,我只好拿 merge sort 來舉例,說 Divide and Conquer 會把問題拆解成小問題,到最後的子問題求解容易,重新把解組合回去後複雜度反而會降低,而 DP 都在求解填表(對我真的不知道怎麼講了 QQ)。

再後面又問一個 quick sort ,一緊張就全給忘了,下次我一定乖乖複習。

作業系統相關我有印象的只有問遞迴太多次會發生什麼,我就用最詳細的方式解釋 stack overflow 的成因就結束了。

面試官最後有講應該會問多執行緒和 deadlock 相關的,但是我時間不夠就沒問了。

物件導向有問到 abstract class 和 interface 的差別和使用時機,照常解釋以後在 interface 那邊講得不太好,有被面試官糾正一下,但是後來補充完我的回答背景以後好像有好一點。版控則只有問使用版控的經驗和抓戰犯的時候怎麼抓。

白板題

出了非常簡單的題目,並給 10 分鐘的時間,程式語言不限。我就用 Python 快速寫了一份,不過還沒跑就請面試官幫我看了,面試官只好跟我說叫我跑跑看,應該會有錯。跑過以後修了不少小錯誤,果然不能信任自己在高壓力狀態下的寫 code 能力。驗證完程式沒問題後面試官會再 review 一下 code,大致上講一下哪些地方可以改進加強,並給一些改進提示,再給 10 分鐘改,最後驗完程式沒問題白板題就結束了。

這邊真的要謝謝面試官都有給我犯錯的提醒,緊張的時候真的一堆小錯誤

想問面試官的問題

印象中我有問公司各 team 的相處氛圍、實習會被分到哪個 team、這是第幾屆的實習之類的,大致上都跟公司有關。聽起來公司的狀況都還不錯,剩下的時候都在跟面試官閒聊。

結果確認

最後確認有跟我說先給我口頭 offer,但我有提到我有投其他間而且還在等面試,於是面試官超 nice 的讓我可以到 11 月底再回覆意願,也陪我聊了一下我投的另一間公司,並給了一些我之前沒有的想法,真的很謝謝他。面試結束對公司好感度大幅增加。

結果

待補