聯發科面試準備心得

Lenka Chu
Sep 4, 2021

--

近期準備轉職聯發科SE深受版上前輩們幫助,因此決定也來回饋一下。

我的背景是112非CS碩但碩論是做AI應用方面的研究,大學在114有修完CS將近雙主修的學程。

由於是第一份純軟的工作,看職缺並沒有特別有想法,已經決定不是要走AI相關的話,就找演算法或是系統開發。加上是在職期間邊工作邊進行面試的準備,因此想將準備範圍盡可能地縮小,在第一波投遞履歷時,我只先找了必備條件上列出會C/C++/python擇一、有RTOS相關經驗加分的職缺。

準備的過程我在這邊分為三大部分:1. 各個語言的語法與其資料結構 2. LeetCode刷題 3. OS與計算機結構複習

第一部分:各語言的語法與其資料結構

在職缺要求上由於比較多是C與C++擇一即可,因此我在準備上花較多時間複習C++,在這邊可以推薦大家我認為複習C++資料結構以及演算法非常受用的網站:http://alrightchiu.github.io/SecondRound/mu-lu-yan-suan-fa-yu-zi-liao-jie-gou.html。基本上我是看完之後會自己再寫幾遍來加強印象,上網做功課時有發現有些題目出現機率特別高,例如:Linked list, sort algorithm,因此我又有針對這兩塊特別多複習,資料結構的複習大概準備了2–3週的時間。

第二部分:LeetCode刷題

LeetCode這邊的刷題應該是面試所有Software engineer都需要做的準備,由於決定要轉職時我個人已經接近1.5年沒有寫程式了,並且準備面試的時間有限,因此我是將難度Easy的題目照面試被考的頻率由高往下準備,在面試前大約寫了60題左右。

第三部分:OS與計算機結構複習

爬文做功課時,幾乎所有前輩們都有提到這兩個科目是必考,在這邊非常推薦清大的OCW,OS的部分我是看了周志遠教授、計結為黃婷婷教授,而在我看計結時由於幾乎忘得一乾二凈···因此我又多複習了王俊堯教授的數位邏輯設計。以上三門課都可以在Youtube找到影片,也可以在清大的OCW網站上下載課程講義。

我在準備時由於懶得去印紙本講義,因此買了一本小筆記本,邊上課邊做筆記,在面試前的一兩天直接用自己的筆記來複習,覺得效果非常好。由於每一堂課都是一整學期的課程,因此這三門課的複習我大概花了1個月半的時間。

接下來要分享的是實際面試時有被問到的問題,這邊我就不拆成不同職缺考什麼,基本上科目都是上面講得幾個大方向:

資料結構與演算法方面,由於面試官幾乎都會很貼心地問你哪個語言最熟,他就會讓你用最熟悉的語言去寫,而我選擇了C++,有被考的題目為:

1.反轉Linked list, 包含其資料結構的宣告(Node中的value, next pointer等等)

2.說明演算法中的BFS/DFS的差異

3.說明C++中的overriding, overloading

4.給一個char stream, 反轉之後進行回傳(用\0來判斷stream的長度)

5.Swap的寫法(一般call by reference後用temp, 另一種可以用bit中的X-OR)

而在OS以及計結方面有被考的就很廣了:

  1. 說明Heap跟Stack的差異, 若在Local function中宣告變數的話會存在哪裡
  2. 什麼是Race condition
  3. Synchronization 的保護機制有哪些
  4. Deadlock發生的必要條件
  5. 記憶體架構
  6. Caching的機制
  7. CPU scheduling
  8. Pipeline的概念(為何要用Pipeline, 有哪幾個stage)
  9. Interrupt的概念(何時會發生,發生時CPU跟OS會有什麼行為)

主要我記得的是這些,只要有複習完這幾個科目的話答案都滿清楚的,整個面試過程中不會考到太刁難,基本上都是有觀念就可以了,也祝福各位面試順利。

--

--