線上一面的三步驟都是先自我介紹,講自己準備的簡報。第二 part 是考白板題,每個主管出的似乎都不一樣,但蠻高機率考 L
ittle/Big Endian、記憶體位置內容相關。第三 part 是介紹部門、工作、工時,以及提問環節。一面的時長為 2 小時。
白板題寫得很爛,花超級久,而且還是靠主管哪裡有錯,主管是蠻親切的,中規中矩,講話沒有高低起伏,但是對部門的介紹講得很清楚。
一面主管最晚會與二面主管討論是否進行二面,最晚會在禮拜五告知,但推測應該是無聲卡,畢竟一次白板題都沒有一次寫對,明明就有寫過但是不熟悉,需要再回去加強。
主管介紹 SSD controller FW 裡面有三個組成:HOST、FTL、FPL、Security,這個部門是 HOST,負責 Protocol 開發,像是 NVMe 和 PCIe,這兩者關係有點像 TCP 之於 IP。FTL 則負責 Table Maganement。FPL負責 NAND Flash Maganement。
有開始從消費性 SSD 轉向企業級 SSD。
最近有蠻多新案子的,似乎也是因為這樣才招人。專案的開發會是開會討論設計 -> 實際開發 -> 驗證 (其他的驗證 team 來做,然後解決他們遇到的 issues)。
這個部門可能會到四面才有機會拿到 offer,二面是跟部長視訊面試,三面是跟處長,四面是跟 HR。
### 工時
表定工時 8 - 5,彈性上班 2 小時,所以最晚可以 10 - 7。產品的中後期比較有可能加班,但最忙就到 8 到 9 點,不過沒有問部門都是幾點上班。
一年內會有一週需要在假日 standby,解決產品出貨前的機台驗證遇到的各種問題,原則上是遠端,但如果找不到原因,會需要到公司處理。
### 新人訓練
持續時間會落在 3~4 個月,並且用一個 Excel 來寫每個人每一周要幹嘛,主要為讀文件,也會有資深的學長姐帶領。新人訓練有分為三部分,第一部分為讀 NVMe spec 和 PCIe spec。第二部分為讀內部文件,像是對 IC controller 的設計,了解如何操控 IC,SSD 裡的 DRAM 和 NAND Flash 之間的資料讀寫,有點像看 datasheet。第三部分為看公司的 FW 框架,看如何模組化,這部粉屬於公司機密,所以沒有講很多。
在訓練進度回報的部分,每周都要報告給學長姐聽,你這周讀了什麼,大約 2 小時。
面試問答
白板題
1. 根據給定的數字,刪除 singly linked list 中包含此數字的節點,然後回傳 head
2. 實作 FindSubstring(char *str1, int len_1, char *str2, int len_2),若 str2 為 str1 的子字串,則回傳 str2 在 str1 中的 index。如不是,則回傳 -1。
3. 給你 `unsugned int *ptr = 0x10000` 以及記憶體位置跟儲存內容,問你 `printf("%X", *ptr + 1)` 以及 `printf("%X", *(ptr + 1))` 的結果。問你這是 little 還是 big endian,如果是 big endian,那結果會是如何。
主管會檢查你的程式法是否正確,並提出哪裡可能有問題要修正。正確後才會繼續下一題,所以完成越多越好,我的話則是不熟所以只有完成三題。
這個部門是 SSD controller FW 裡的 HOST,在產品驗證的時候可能會需要搬重物,像是桌機,問你可以接受嗎?
沒問題,平常有重量訓練習慣,搬的東西都比電腦重好幾倍。
面試建議
1. 勤練白板題,練習在 word 裡面打程式碼,尤其是 easy 的 linked list 和 字串操作。
2. 多準備考古題。
3. 寫白板題時,要講你大概會怎麼做,再開始寫程式碼,完成越多題越好。