# 2024 年 「[資訊科技產業專案設計](https://hackmd.io/@sysprog/info2024/https%3A%2F%2Fhackmd.io%2F%40sysprog%2FH1-4KbanC)」課程作業 3
## 履歷
[檔案](https://drive.google.com/file/d/10oRsxVfsg5_dotwlac4jP19otqHqWTF0/view?usp=drive_link)
## 符合自身興趣/規劃的職務描述
### [MediaTek 軟韌體開發 Embedded System software](https://careers.mediatek.com/eREC/JobSearch/JobDetail/MTK120240902008?returnUrl=%2FeREC%2FJobSearch%3FsortBy%3DWorkExp%26order%3Ddescending%26page%3D4%26searchKey%3Dsystem%26category%3D%26workExp%3D%26branch%3D%26program%3D)
#### Description
- 資工/資管/電子/電機/電信/通訊/電控相關研究所背景
- 對行動通訊、無線及寛頻連結、家庭娛樂晶片解決方案有濃厚興趣的2025年應屆畢業生
#### Requirement
- 資工/資管/電機/電子/通訊相關研究所畢
- 嵌入式系統 (Embedded System)
- Computer Organization & Architecture (計算機組織 & 結構)
- 作業系統 (Operating System)
- 資料結構 (Data Structure)
- 程式語言 (Programming Language)
- RTOS (Real-time Operating System)
- Linux
- Android
---
### [顯示平台軟韌體開發工程師](https://www.104.com.tw/job/8gwgt?jobsource=google)
#### Description
- 負責新興顯示器及車載顯示器平台系統軟韌體驗證規劃與開發
- 平台軟體管控
- 除錯工具開發
#### Requirement
- 碩士以上,電子、電機、資工、控制相關科系畢業
- 思路清晰、條理分明,對工程研究有熱忱
- 熟悉C/C++/Git
- 具備研究新技術熱忱,態度積極樂觀,溝通能力佳
---
### [Bluetooth/ZigBee/Thread firmware engineer](https://careers.mediatek.com/eREC/JobSearch/JobDetail/MTK120241018000?returnUrl=%2FeREC%2FJobSearch%3FsortBy%3D%26order%3D%26page%3D2%26searchKey%3DFIRMWARE%26category%3D%26workExp%3D%26branch%3D%26program%3D)
#### Description
- Develop Bluetooth/ZigBee/Thread firmware with latest specification.
- Develop coexistence features between Bluetooth, WiFi, ZigBee/Thread, LTE, 5GNR.
- Develop Bluetooth/ZigBee/Thread system architecture with software and hardware.
- Optimize performance and resolve problems with mobile and CE customers.
#### Requirement
- Familiar with C programming and embedded system.
- Experience Bluetooth, ZigBee, Thread, or WiFi wireless protocol would be a plus.
- Experience UART, USB, SDIO, SPI, PCIe interface would be a plus.
---
### 自我評估
#### 以上職缺所需能力
1. 學/碩士以上的 CS/EE 或相關科系
2. 基本程式語言能力(C/C++)
3. 嵌入式相關的背景知識
5. 對於 Linux, embedded system 有實作經驗
6. 具有產品開發經驗
#### 相關能力
1. 有嵌入式實作經驗 (使用 LoRa)
2. 基本程式語言能力 C、C++ (但缺乏實際專案經驗,需補強)
3. 有 Android app 的開發經驗 (Java、Kotlin)
4. 修過 OS、計算機結構(細節部分需複習)
5. 會使用 git
#### 需補的能力
1. 提升 C 語言熟悉度
2. 提升 Linux 熟悉
3. USB interface 的相關經驗
4. 嵌入式 RTOS 的實作經驗
---
### 面試題目
#### Q:關鍵字static的作用是什麼?
A: 在函數區間內,被宣告為靜態的變數,在函數被呼叫的過程中其值維持不變。被宣告為靜態的函數,只可以被這一個block內的其他函數呼叫。也就是這個函數被限制在宣告它的Block的範圍內使用。
#### Q:儘管不像非嵌入式計算機那麼常見,嵌入式系統還是有從堆積(heap)中動態分發內存的過程的。那麼嵌入式系統中,動態分發記憶體可能發生的問題是什麼?
A:會發生的問題像是記憶體碎片,碎片收集(垃圾回收)的問題,變量的生命週期(變數的執行時間)等等。
#### Q:預處理指令#error的目的是什麼?
#error就是生成編譯錯誤的訊息,然後會停止編譯,可以用在檢查程式是否是照自己所預想的執行。
#### Q:C語言允許一些令人驚訝的結構。這個結構合法嗎?如果合法的話這段程式碼會做什麼?
```
int a = 5, b = 7, c;
c = a+++b;
```
應該是合法的,可以理解成 c = a++ + b。
運行完後 a=6, b=8, c=12。因為 a++ 在執行加 b 的動作時 a=5, 後來 a 才會加 1 變成 6。
---
### 參考資料
- [0到100的軟體工程師面試之路系列](https://ithelp.ithome.com.tw/users/20152262/ironman/5615)
- [韌體工程師的0x10個問題](https://hackmd.io/@Chienyu/S1loEqCuo#%E9%9F%8C%E9%AB%94%E5%B7%A5%E7%A8%8B%E5%B8%AB%E7%9A%840x10%E5%80%8B%E5%95%8F%E9%A1%8C)
- [面試心得](https://www.ptt.cc/bbs/Trans-nctu/M.1556858016.A.B1A.html)
- [23年碩畢新鮮人軟韌求職心得分享](https://www.dcard.tw/f/tech_job/p/255938962)