# 軟體工程師_轉換跑道、求職心得與準備方向
## 零、背景介紹
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: `面試`