# 軟體工程師_轉換跑道、求職心得與準備方向 ## 零、背景介紹 112 ME 學碩,完全沒程式背景,2020年初在學長的慫恿下開始準備應徵軟韌體相關職缺,在六月初成功獲得"群暉 軟體工程師"的職缺,我會在下面介紹準備的過程與方向。 此篇的準備方式偏向底層C,因當初目標為IC產業的韌體工程師,物件導向跟更深的資結與演算法接觸少,但是可以確定的是這兩個職缺所需要的最基本的技能是有重疊的,如有志往純軟的話,請繼續學下去, ## 一、面試要素 ### 1.履歷 我是以104為主要投遞管道,如果以外商為導向的話會以LinkedIn為主,同時在LinkedIn上面有很多不錯的履歷範例可以參考。 :bulb:[我的履歷](https://drive.google.com/file/d/1EqCidSYQ0RHKTufTxDf0rXnZZZ9C4Pg5/view?usp=sharing) 這邊簡述幾項履歷撰寫上的要點 1. **簡潔明確** 如果新鮮人的話,以兩頁為主,第一頁條列式自己的資歷,第二頁自傳,建議找到自己喜歡的模板,盡量以可以在30秒內看完第一面為主。 2. **自傳很重要** 一定要寫自傳,面試官很喜歡看自傳,可以看到個人特質,請寫好!!,網路上、YouTube都有很多教人寫,以實例成效的方式撰寫,自傳會是你挖坑給主考官問妳問題,如何表現自己就看你要怎麼寫,怎麼去行銷自己。 3. **不誇大** 履歷上的東西切記自己都要會,不要寫超出自己能力範圍的,不要擔心寫出來的東西看起來很廢,盡量寫仔細,像是會資料結構中的XX跟XX結構,不要只寫會資結。 4. **作品集** 請一定要準備作品集,尤其是非本科的朋友,你沒有學過的課程為你做擔保,請準備小型的程式,而這個程式的重點會在於為何選擇此"資料結構"、"演算法"來解決這個問題,還有一些極端的邊界條件的考量(overflow之類),錯誤的回報設計。 ### 2.學歷與技能 以台灣的產業來說,以IC設計為發展性最好(錢最多),基本上學歷對就很輕鬆,但對於非本科學生想進去的話,需要準備許多東西,如果還在學校的話,多修資工相關的課,那些都是你的履歷證明,如果已經來不及修課的話,透過自學時請留下修過的證明,如課程上的小作品等。 以韌體工程師需要準備的技能有: 1. 主技能: - C/C++ - 資料結構 - 演算法 - 作業系統 - 計算機結構 2. 副技能: - 通訊原理 - 影像處理 ### 3.準備方向 這邊會 #### 3-1. C/C++ 1. Sizeof各類型 2. bitwise operation(刷題) 3. 指標(==重要==) 4. 函式指標 5. volatile、static、extern 6. global、stack、heap 7. little endian vs big endian 8. call by value、call by address(探討與差距,然後C沒有call by ref.) 9. #define的陷阱題、與inline、function差別 10. 實作cstyle字串函數 主要了解各名詞的觀念,而物件導向觀念在韌體範圍內考得不多,但學會最好 >:earth_africa:推薦網站 [Mr. Opengate](https://mropengate.blogspot.com/2017/08/cc-c.html) [你所不知道的C語言](https://hackmd.io/@sysprog/c-programming?fbclid=IwAR17V5qycI9lqDswJt8HFsqLyOPy0LM53y2v9tS6vNIaKj9u3Fuq_UL2XvE) [良葛格學習筆記](https://openhome.cc/Gossip/index.html) [C語言常見誤解](https://docs.google.com/document/u/0/d/12cR0qb-kl7jB8RA_eHQu8OSmGKEOshwLeX4Mx5qBzUE/mobilebasic?fbclid=IwAR11N8I53Ur50CSRS0iw3ab4txrAlqX879AskuaJ-stAmA_rF8covkKcJHc) [C面試常考觀念筆記](https://hackmd.io/@SupremeEJ/SJcfEZSjL) [實作cstyle字串函數](https://hackmd.io/@SupremeEJ/H1xi0bMhU) #### 3-2.資料結構&演算法: 1. Array、LinkedList(重要) 2. Stack、Queue(重要) 3. Hash table(次要) 4. Tree(次要) 資料結構務必要非常精通熟練,其建構解構、插入刪除、反轉等,一定要自己實作很多遍,尤其==LinkedList==,建議多刷LeetCode >:pencil:筆記 [LinkedList](https://hackmd.io/@SupremeEJ/BypgIehoU) [Stack](https://hackmd.io/@SupremeEJ/BJjbhohiI) [Queue](https://hackmd.io/@SupremeEJ/B1IMWlTiI) 1. 六大排序 2. 動態規劃&貪婪 在韌體演算法考得不多,基本六大sort一定要會(可以現場寫出來那種),DP跟貪婪會基本應用 >:earth_africa:推薦網站 [演算法與資料結構](http://alrightchiu.github.io/SecondRound/mu-lu-yan-suan-fa-yu-zi-liao-jie-gou.html?fbclid=IwAR14duEqCyVt9W1_G9TKyWB7RdXtHeFq20yatwW9LxgKQdy_WEeRZeGUF1o) [算法到底应该怎么学?](https://www.zhihu.com/question/25693637/answer/747872819?fbclid=IwAR2ghlzWoTGLpSgZMRfhFxOfOQOL3qtXWkR0T-XUuo79oYnPL9amYDpQ6HU) [算法到底应该怎么学? (電子書檔)](https://drive.google.com/drive/folders/14an7N5NKtOfH8PNKbH51k3xTSGbb2Uql?usp=sharing) [演算法思維](https://hackmd.io/@SupremeEJ/Hk2P2dd28) [六大sort](https://hackmd.io/@SupremeEJ/Bk7lOGTs8) #### 3-3.作業系統&計算機組織 1. 恐龍本(主要考的就出自這本) 2. Linux 3. 系統程式 作業系統很重要,基本上必考,大約占比(40%),絕大部分考恐龍本內部觀念,請一定要讀!! 基本上都是使用Linux作業系統,請學會基本的操作,看"鳥哥"就很足夠,如果時間充裕的話去了解原理! 計算機組織基本考不多,時間足夠再去看。 系統程式主要介紹程式是如何在計算機中運行,將會學習Compiler、Assembler等程式,會有蠻大幫助了解一些程式的概念,我自己的小作品就是做一個編譯器。 >:earth_africa:推薦網站 [恐龍本 ppt](https://drive.google.com/drive/folders/1bfQQw35IgMpsoFPoRAr3Ky8REWjzYmoH?usp=sharing) [鳥哥的 Linux 私房菜](http://linux.vbird.org/) [羅習五 作業系統概論](https://www.dropbox.com/sh/vf200ofnzvub69f/AADkwo1gxCoPhzh_sl5yMWaya?dl=0) [宅學習 作業系統](https://sls.weco.net/CollectiveNote20/OS) [陳鍾誠 計算機結構](http://ccckmit.wikidot.com/co:hardware?fbclid=IwAR10C1EvViPu4zPhcoTMJ039LCiKWh3YuwAJeNtN8yiaY6GM5R4oi11Dsz8) [陳鍾誠 系統程式ppt](https://github.com/cccbook/sp/wiki/spbook?fbclid=IwAR1oKTnMjmBZpVte1TirYL11egBkLJk8hWTd5YoP7sfiRaMk7wh5dSYMfZU) [陳鍾誠 系統程式 code](http://sp1.wikidot.com/main) [資工考試筆記_作業系統](https://drive.google.com/file/d/1-Ed1BH9hJGhzgZkYHAy2xwBpqtEQB6vs/view?usp=sharing) [資工考試筆記_計算機結構](https://drive.google.com/file/d/16tz3Cy9DdLjq6fF2NNfJzlqPseHXvM8_/view?usp=sharing) [OS 面試考題](https://hackmd.io/@SupremeEJ/SkcsCUGh8) #### 3-4.邏輯測驗 這方面可以多上網看考古題,有許多有趣常考的題目,這方面就當作休閒時期放鬆可以去玩玩就好~ ### 4.面試技巧 我大概面試25家(有點太多XD),前期不知方向,參加面試一方面當作練習,一方面去了解產業,不要害怕面試,面試也是你去面試公司,讓他說服你他們公司值得你去工作!!所以有機會就去面試,各種都去試試,可以發現自己到底喜歡的是什麼,想要的是甚麼樣的生活,你看中的是成就、薪水、工作內容還是生活品質? 小技巧分享: 1. **行銷自己** 有一個明確的想要展現的個人特質,例如想要展現我是一個行動力強的人,那我表達和舉例中要不斷傳達此特色,一場面試大約傳達三個明確的特色即可,要成功說服面試官。 2. **展現積極性** 展現你有多想進這間公司,當然不是直球說我想進這麼簡單,透過一些問題來展現,例如:想知道部門未來的發展性、如何升遷、部門內部的職位層級等,透過傳達想更加了解公司,來讓他們知道你已經在想怎麼在裡面爬了XD 3. **賣萌** 大部分主管會喜歡乖巧有上進心的乖寶寶(限定科技業),所以適當的表現自己新鮮人的純真與憨厚是個小加分的點。 4. **誠實** 這很像屁話,但是這很重要,面試不只他們挑你,也是你在挑公司,不必要刻意討好面試官而改變自己的個性,更多的時候誠實面對自己,展現自己的個性對於未來職場更重要。 ## 二、面試過程 因為我傾向留在台北,主要都是丟大台北地區的公司,我自己將求職過程分為兩個時期,會在下面分別敘述。 1. **前期:** 這段期間準備還不是很充足,不敢丟大公司,主要丟一些小型公司,或系統廠,職缺皆為韌體工程師,而這階段的公司的考試皆偏容易,且感受到它們很缺人,然而薪資就頂多N+3,所以後來皆婉拒offer。 有拿到的職缺: - 仁寶 手機伺服器 (N+1)*15~17 - 英業達 BIOS (N+1) - 廣達 BIOS雲端伺服器 (N+3)*18 - 南亞 CIE工程師 (N+3)*15 - 禾瑞亞 韌體 (N+5) 結論: 不要去系統廠的韌體,薪水給的不高,做的事情很雜,學不到更深的技術。 2. **後期:** 發現自己的履歷和實力都丟不到更好的公司,於是先緩了一段時間,繼續準備自己,也是在這段時間完成小作品,有作品就好丟很多了! 想要突破50K的話,一定要去做IC的才有辦法,畢竟三線的韌體就有58K,二線65K、一線75K,而台北地區相比新竹IC職缺少很多,所以如果沒有特別強求留在台北的話,去新竹會好找很多喔! 有拿到的職缺: - 佳能 AIot 韌體 (N+8) - 芯鼎 影像相關IC (N+13) - 群聯 FLASH IC (N+30) - 群暉 溝通平台 (N+25) :rocket:面試分享 [群輝 軟體工程師](https://hackmd.io/@SupremeEJ/Byeo5pNnI) ## 三、心得 首先感謝有學長很無私的傳承他轉職的經驗給我,於是我也決定把這份情傳下去,給需要的人們,也希望有成功的朋友也不吝嗇自己的經驗,繼續造福後人。 1. **人脈** 通常非本科的朋友,又沒有傑出的經歷,根本連面試的機會都沒有,所以快去找看看有沒有認識的前輩,能內推就內推! 2. **氣氛對** 我個人對於公司團隊的氣氛會很看重,尤其是公司內部都是一些大叔的時候,我會無法接受,覺得這間公司是一灘死水,感覺會有很多代溝 3. **有自信** 不要害怕面試,我都是去當作聊天,當然也是在家準備很好囉,心態不要畏懼,不要覺得他們給你工作是施捨,不要不敢開價,期望薪資先加10K,再讓它們慢慢砍XD ###### tags: `面試`