轉職軟韌體工程師的面試準備

圖片來源:freepik

文/ArHsien

這篇文章主要紀錄自己人生第一次轉職的經歷,提供給對轉職也有興趣的朋友們參考。

前情提要

雖然說是轉職,但筆者的經歷為實體層 ( Physical layer ) 演算法開發工程師想轉往軟韌體開發工程師,因此準備難度相對無相關理工背景的人還是比較容易一點。

先說結論

  1. 準備時間:1~2個月
  2. 準備項目:專業項目 ( C/C++、演算法、資料結構、作業系統、計算機組織/結構 ) + 個人履歷 ( 自介、工作經歷、個人特質相關問答)
  3. 目標程度:解釋大方向概念(conceptual definition)+實際操作大重點+熟悉考古題
個人準備方向:C/C++: 基本程式概念 + 常見題型準備 (Macro、bitwise operation、recursive function、memory allocation (stack & heap)、pointer definition (ex: function pointer array))
演算法:複雜度、搜尋、排序、五大策略資料結構:鏈結串列 vs. 陣列、stack vs. queue、set & map、tree、heap、hash
作業系統:架構、process&thread 概念、重點名詞(deadlock、synchronization)
計算機組織/結構: memory hierarchy (cache、write through/back、associate & direct mapped)、processor (pipeline、hazards)

準備心得

同樣名為工程師,但以實體層演算法開發的工作內容而言,這幾項學科僅有 C/C++ 有所重疊,加上學生時期未修習過演算法/資料結構/作業系統/計組計結這幾門課,相當於從零開始準備,著實費力些。若從學校課程安排來看,要好好修習這幾像課程至少兩三個學期起跳,想要兩個月內全部學會基本上是不太可能的。

但兩個月也有兩個月的學習法 。只是學到的東西就會不夠完整以及不夠深入,若考慮到之後技術發展的知識需求,則需在未來將空隙補齊。

專業項目

有了前面的認知,想在兩個月內將知識吸收量最大化,只好將準備的目標定為”解釋大方向概念(conceptual definition)+實際操作大重點+熟悉考古題

  • 解釋大方向概念(conceptual definition)
    實際操作可能不會,但概念/原則性的解釋一定要會。例如:union 與 struct的差異?process 與 thread的差異?memory hierarchy的好處?這類的問題至少能講出關鍵點。
  • 實際操作大重點
    有些操作型技術的掌握,就是一翻兩瞪眼,不會介於有跟沒有之間。例如:如何實作SWAP function by bitwise operation? 指標類型如何運算?如何實作各種sort?這類偏實作的問題基本上沒看過很難自由發揮。
  • 熟悉考古題
    考古題的答案不一定要全記住,但在整理學習筆記時,要能立刻反應某個概念有出現在考古題裡,接著多加留意相關的概念與脈絡以加深印象。對於程式設計的考古題,則要確保完全理解,知道每一個操作的理由。舉例來說,當發現到Macro(巨集)以及bitwise operation的問題很常被拿來作為面試問題時,在相關重點的整理上便會力求完整。

個人履歷

在轉職的前提下,由於領域的差異性,該思考的是如何讓不是做你的領域的人也能瞭解你的工作內容以及貢獻:

  1. why ? (你做的項目的在產品中的定位以及目的)
  2. what ? (你在項目中的貢獻?)
  3. how ? (working model ? 主要使用哪些手法完成自己的工作/工具)
  4. 常見個人特質問題(你的優缺點?遇過最挫折的項目?如何做得更好?… 等等,大概估狗一下就可以找到滿多的,或者未來有機會再與各位分享自己在履歷部分準備的心路歷程 ? )

學習步驟

  • Step 1. 收集考古題 & 解答:
    知己知彼,百戰不殆,明擺著面試大概率會問這些題目,退一萬步來說,如果只有1個禮拜的準備時間,就直接刷考古題吧。即便有相對充裕的時間,依然建議將收集考古題列為重要的開始。合理的思考下,考古題通常與該領域的大重點有正相關(站在面試官的立場,越接近核心精神的知識越能在短短兩小時內衡量面試者的技術底子。即便遇到更細節的問題,也能從大概念延伸來回答)。從考古題出發,往相關概念延伸串連總比一開始就大海撈針漫無目的看一輪來得有方向。
  • Step 2. 把相關領域的資料掃過一輪:
    有了step. 1,在這一步驟的閱讀便會對出現過的名詞更有印象,更容易抓到該領域/章節的重點。
  • Step 3. 嘗試整理各領域的重點:
    在這一階段,透過自己習慣的方式整理,將重點概念以自己思考邏輯作重點筆記
  • Step 4. 面試前順過一輪考古題+自己整理的筆記:
    接近面試時,基本上也沒太多時間(沒心情?)做系統性地整理,不如回來好好把自己整理過的東西多看幾次,加深印象,而面試與面試之間如果時間充裕(例如有3+1天),自己則會在前期回到step 3.把後來多領悟到的東西整理進去(3天),接著再進行Step 4 (1天,通常這天也會一併順過履歷部分)

後記

  • 這一輪的面試最大的心得,無非是發現面試有趣的那一面,尤其是有了工作經驗後的面試。相較於找第一份工作時偏技術性的問答,更多是對彼此工作經驗的討論,以及雙方各自所尋求的工作內容/人格特質的相互媒合。
  • 秉持著不”重工”的精神,藉轉職的空檔將自己的準備過程分享給大家,盼能對擁有相同念頭的人有所幫助O uO
  • 有幸生活在一個開放式資源豐富的時代,許多以前只能透過課堂吸收的知識,在網路的幫助下,只要有心,幾乎都能找到資源學習。本文的最後也會一併提供這次在準備面試時所收集到的相關知識來源,非常感謝估狗大神以及網路上的各位大神。
  • 至於想要離職/轉職的契機,以及自己是如何衡量要不要離開的,這個以後 ̷ ̶專̶門̶做̶一̶集̶視̶頻̶為̶大̶家̶講̶解̶(誤) 有機會再跟大家聊聊XD
  • 最後,人生沒那麼難,只是需要一點勇氣。
  • 編按:筆者主要於2020/10~2020/11為面試進行準備。

2020.12.02

參考資源收集

## 演算法
Ref: https://www.youtube.com/watch?v=V_ajcNni6wk&list=PLhxdaTcUMi3nRM5mtOdQgO4VEtAEsTiYd [軟體工程師雜談] 王紫楓

## 資料結構
Ref: https://www.youtube.com/watch?v=V_ajcNni6wk&list=PLhxdaTcUMi3nRM5mtOdQgO4VEtAEsTiYd [軟體工程師雜談] 王紫楓

## 作業系統
Ref 1 : https://mropengate.blogspot.com/2017/09/operating-system-concepts.html Mr. Opengate : 作業系統 Operating System Concepts
Ref 2 : https://hackmd.io/@Pl-eQT9CQaS0jhExKqL8_w/BkhOSR4jW?type=view 作業系統OS
Ref 3 : https://sls.weco.net/node/21321 01. 作業系統原理簡介

## 計算機組織
Ref : https://mropengate.blogspot.com/search/label/Computer%20Science-Computer%20%20Organization Mr. Opengate : Computer Organization

## 常見考題(面試題目收集)
Ref 1 : https://hackmd.io/@86E3gZKuToKwjVavw4Wdpw/BJoOqyo6?type=view 2016q3 Homework1 面試題目
Ref 2 : https://wubui.pixnet.net/blog/post/41242054 [面試] 聯發科技MTK (內含考題)
Ref 3 : http://arc2453.blog.fc2.com/blog-entry-31.html 新竹聯發科軟韌一面
Ref 4 : https://www.ptt.cc/bbs/Tech_Job/M.1501843612.A.732.html [心得] 面試心得系列5 聯發科 MTK
Ref 5 : https://pttcareer.com/soft_job/M.1582184301.A.EE6.html [請益] MTK 軟韌體工程師面試問題討論
Ref 6 : https://hackmd.io/@6zSPCmL1Szq0bq_rOqcO6w/HkkhJ-ah-?type=view 2017Homework1-整理面試題目
Ref 7 : https://inuyashaos.blogspot.com/2018/04/2018mtk.html [心得] 2018聯發科(MTK)暑期實習一階面試(附一些題目)
Ref 8 : https://www.itread01.com/content/1546240689.html 作業系統常見面試和筆試題
Ref 9 : https://www.itread01.com/content/1550558718.html 作業系統常見面試題(二)
Ref 10 : https://hackmd.io/@g9tdU4gDSTiEZrerd0g7-w/SyCXEfsSE?type=view 面試整理
Ref 11 : http://wcodominique.blogspot.com/2014/02/interview-test-part-1.html 面試 Interview 考題 test part 1
Ref 12 : https://kknews.cc/zh-tw/n/g4omzyy.html 乾貨!作業系統基礎知識匯總!轉給要面試的同學吧
Ref 13 : https://kknews.cc/zh-tw/education/anaqmjn.html 程序猿找工作筆試面試那些事兒 — 作業系統常考知識點總結
Ref 14 : https://dangerlover9403.pixnet.net/blog/post/212368431 [面試考題] Linux面試考題
Ref 15 :https://moptt.tw/p/Tech_Job.M.1556807389.A.095 [心得] 面試心得[上] (文很長慎入)
Ref 16 : https://j890111tw.blogspot.com/2019/10/bitwise-operation.html bitwise operation 面試考題
Ref 17 : https://mark1990301.pixnet.net/blog/post/134104055 軟韌體工程師面試題目
Ref 18 : https://mropengate.blogspot.com/2017/08/cc-c.html C/C++ — 常見 C 語言觀念題目總整理(適合考試和面試)

本文由 ArHsien 授權轉載,原文連結

瀏覽 1,527 次

覺得不錯的話就分享出去吧!

發佈留言

Back to top button