# 2024 年「資訊科技產業專案設計」作業3
## 工作職缺
[Realtek:114年度研發替代役&預聘_應屆畢業人才-系統設計工程師
](https://recruit.realtek.com/Job/JobDetail?jobid=1980)
:::spoiler
工作地點 : 新竹科學園區
工作經驗 : 0 年
學歷要求 : 碩士
應徵條件:
1. 瑞昱強力招募(1)114年度研發替代役及(2)預聘114年應屆畢業之碩士、博士生。
2. 碩士以上之電子、電機、電信、通訊、電控、資工、資科等相關科系,並具下列任一條件者佳:
a. 熟C、C++、Linux、Assembly,具DSP及audio/video processing相關經驗或興趣者。
b. 多媒體影音系統開發經驗或興趣者。
c. 具網路embedded system開發經驗。
d. 熟網路基本概念。
e. 對RF、Microwave, AD/DA, FPGA硬體設計有興趣者。
f. 具實體層數位信號處理設計有興趣,並熟DMT、OFDM或ASIC邏輯線路設計者尤佳。
g. 對通訊網路、聯網多媒體、多媒體、電腦週邊、智慧互聯或車用電子產品之系統韌體或程式設計有濃厚興趣者。
:::
[軟韌體開發_ 5G 行動通訊](https://careers.mediatek.com/eREC/JobSearch/JobDetail/MTK120240902005?returnUrl=%2FeREC%2FJobSearch%3FsortBy%3D%26order%3D%26page%3D1%26searchKey%3D%25E9%259F%258C%25E9%25AB%2594%26category%3D%26workExp%3D%26branch%3D%26program%3D)
:::spoiler
職缺需求
歡迎具備以下經驗及專長的你: 資訊/資管/電機/電子/通訊相關研究所畢,對於行動通訊產業有濃厚興趣;熟悉通訊原理、數位訊號處理、電腦網路、計算機組織、作業系統
:::
[Novatek:軟韌體開發工程師](https://recruit.realtek.com/Job/JobDetail?jobid=1412)
:::spoiler
工作內容:
1. TV平台開發/系統整合、Video/ Audio/ System 平台架構與整合
2. IP Camera 產品軟/韌體功能開發、嵌入式系統單晶片開發、規格製定及驅動撰寫
3. 影像畫質調校、3A演算法開發及維護、SDK軟韌體開發及維護
4. FPGA及IC驗證
軟韌體開發工程師 職務條件:
歡迎碩士以上電子、電機、電信、電控、資工等相關系所,具備以下經驗及專長:
1. C/C++/JAVA/ARM/MIPS/Matlab
2. Device Driver/Embedded RTOS Kernel
3. Linux/Android平台應用程式開發
4. OpenGL/EGL
5. Python/Tensorflow
:::
---
## 職缺分析
* 熟悉網路相關知識會較有利
* RF、 AD/DA, FPGA硬體設計建議擇一學習
* 最好使用過Linux
* 通訊相關知識也曾在面試中被提問
* 嵌入式系統的概念非常重要
* C語言的熟練度仍是最重要的
## 自我評估
### 可能優勢
* 就讀通訊所,曾學習過DSP、OFDM、BPSK等通訊相關知識。
* 專題是自組織網路及Raspberry Pi的應用,具備Linux系統的使用經驗
* 有 TCP/IP 網絡(DNS、DHCP)的使用經驗。
* 承上有python的實際應用及開發相關經驗
* 一篇IEEE會議論文的第一作者
### 可能劣勢
* 在程式開發能力上仍非常不足
* 資訊相關的重要課程仍未修全(演算法、作業系統)
* 上述有提及知識及經驗都不夠深入容易被問倒,在實際面試前要把優勢的部分都弄熟,沒弄熟的不如不要放
* 幾乎沒有作品集
* 嵌入式相關的經驗非常重要,但只碰過esp32
### 未來規劃
* 多修習相關課程,目前規劃課程:嵌入式系統、作業系統、工業物聯網(做project)、必要的通訊課程
* 尋找暑假實習機會累積經驗
* 多累積點side project,讓github看起來豐富一點
* 養成固定刷leetcode的習慣,目前是使用C++
* 嵌入式可以自己買個板子來練習
---
## 模擬面試
### 可能被問的問題需要留意的東西
1.自介,細節及之前的作品的細節都有可能被問
2.選擇公司的理由,自己的優劣勢分析,為何公司要選你
3.對公司、職務的提問
4.部分部門需要大量溝通會特別注重軟實力:舉辦活動、專題分工......
5.技術相關問題集:
* 簡述 TCP 和 UDP 的差別並舉例應用
* dubug都怎麼做的,是否有使用過GDB
* 不同開發版的組合語言編譯後可能會不同,有追過組合語言嗎,或是使用compiler的經驗
* race condition 跟 OSI 網路模型
* 用C語言寫 Linked List 裡面 node 的 struct
* Linked List 實現 MergeSort
* Binary search tree
### 面試
🧔:妳好,歡迎妳來我們公司參加面試,可以介紹一下你在校時期的專題嗎?
👶:你好,我的專題名稱是自組織網路及影像辨識應用於山區救援,目的是讓需要幫忙的人可以在沒有訊號的山區透過此架構進行求援。主要功能是透過MQTT在Raspberry Pi之間傳遞求助訊息及座標,等待無人機巡航後將訊息帶到有外網的地方,並且我們架設了一個網站負責展示訊息以及在地圖上標註求救座標。
🧔: 想請問一下你中間遇到的困難以及你負責的項目
👶:因為是進行實體的應用,我們針對整體的架構及可行性進行了多次調整,也有去拜訪中壢消防局的救難隊進行實體訪問,來確認作品是否不合理的部分,而在這之中我主要負責的項目是完成Raspberry Pi之間的聯繫如MQTT訊息的接收及轉發、透過RTMP進行影片推拉流及轉推流。
🧔:你有提到你對網路相關知識有興趣,那請問妳什麼是 TCP/UDP?
👶:他們是在網際網路上的公開基本傳輸協定。
🧔:好,那再請妳說明兩者的區別,最好有實際應用的例子
👶:TCP 是可靠性傳輸,它可以確保資料傳輸的完整性,但這就會造成傳輸速率相較 UDP 較為低下,應用在需要確保完整性的資料傳輸,例如文件或電子郵件;那 UDP 就是不可靠性傳輸,雖然傳輸效率比較高,但不能保證確保資料傳輸的完整性,以速率為第一優先,例如直播影片傳輸。
🧔:再來我想幫同事們了解一下你的程式開發風格及能力,麻煩完成一個程式,給你一組羅馬數字如IV、XL、IX,將其轉為十進制的數字。
👶:
```
class Solution {
public:
int romanToInt(string s) {
unordered_map<char, int> romanMap = {
{'I', 1}, {'V', 5}, {'X', 10},
{'L', 50}, {'C', 100}, {'D', 500}, {'M', 1000}
};
int total = 0;
for (int i = 0; i < s.length(); ++i) {
if (i < s.length() - 1 && romanMap[s[i]] < romanMap[s[i + 1]]) {
total -= romanMap[s[i]];
} else {
total += romanMap[s[i]];
}
}
return total;
}
};
```
🧔:好,我們今天的面試就到此為止,感謝妳的參與。
👶:非常謝謝您。
## 參考資料
* https://www.dcard.tw/f/tech_job/p/255721024
* https://www.dcard.tw/f/tech_job/p/257124987
* https://www.dcard.tw/f/tech_job/p/254929546
* https://www.ptt.cc/bbs/Tech_Job/M.1624807427.A.A08.html
* https://www.ptt.cc/bbs/Tech_Job/M.1631153176.A.E2D.html
* https://www.ptt.cc/bbs/Tech_Job/M.1602254062.A.C2C.html