---
tags: 資訊科技產業專案設計作業
titles: 資訊科技產業專案設計課程作業3
---
# 資訊科技產業專案設計課程作業3
#### [(5G)無線區域網路(WLAN/Wi-Fi)軟/韌體工程師](https://careers.mediatek.com/eREC/JobSearch/JobDetail/MTK120190326000)
* 職缺說明
1. Wi-Fi 驅動程式/韌體開發設計及驗證
2. Wi-Fi 等無線晶片之跨層架構介面設計
3. 協助研發軟體新技術與新工具
4. 產品量產問題分析與解決
5. 無線網路(802.11) 演算法和系統效能探索
6. 無線網路新規格前期定義,架構設計及軟硬體分工
* 職缺需求
1. 碩士以上;電子電機相關、通訊/電信、資訊科學、資訊工程相關科系畢業為主
2. 熟悉嵌入式系統、C/C++ programming
3. 具嵌入式系統程式開發經驗
4. 具Linux/Unix 環境程式開發經驗
5. 具WLAN/Wi-Fi 802.11通訊協定、MAC/PHY/CoEx/LP、射頻相關經驗
* Self-assessment
* 本身是通訊相關科系
* 嵌入式系統有操作過 Raspberry Pi
* 有 C/C++ 程式經驗
* 缺乏嵌入式系統程式開發經驗
* 具有 Linux/Unix 程式開發經驗
* 缺乏 WLAN/Wi-Fi 802.11通訊協定、MAC/PHY/CoEx/LP、射頻相關經驗
* 題目
* 詢問與 wifi protocol 相關知識的問題
* OS 基本概念(thread,process,同步,deadlock,interrupt,etc)
* C 語言程式能力測驗
> [參考](https://www.ptt.cc/man/Tech_Job/DB04/D72B/DA3E/D98E/D7EE/M.1502079930.A.A76.html)
#### [Linux系統及裝置驅動工程師(新竹/台北)](https://careers.mediatek.com/eREC/JobSearch/JobDetail/MTK120211122003)
* 職缺說明
1. 開發Linux 系統及驅動程式包含 : audio, GPU, graphics, display, camera, peripheral, sensors, USB, HDMI, storage, power..等
2. 開發 UEFI BIOS, ACPI
3. 該職缺可任職於新竹/台北
* 職缺需求,至少需熟悉且具備以下一個的能力,越多則尤佳:
* 熟悉Linux OS及驅動裝置開發
* 熟悉Linux驅動架構
* 熟悉Linux 開機程序及流程
* 熟悉Linux除錯機制
* 熟悉 UEFI/ACPI/SMBIOS/coreboot
* 熟悉Linux軟體架構, 在以下領域:GPU/Multi-Media/TPM/Power/Peripherals
* 熟悉Windows/UEFI 或Linux或Chromebook的安全架構
* 熟悉Ubuntu 或Chrome OS的整合
* Self-assessment
* 有基礎 OS 知識但不熟 Linux OS 及驅動裝置的開發
* 不熟悉 Linux驅動架構
* 對於 Linux 開機程序及流程有基本認知
* 不熟悉 Linux除錯機制
* 不熟悉 UEFI/ACPI/SMBIOS/coreboot
* 不熟悉Linux軟體架構, 在以下領域:GPU/Multi-Media/TPM/Power/Peripheral
* 有用過 ubuntu,但缺乏Ubuntu 或Chrome OS的整合經驗
* 問題
* OS 基本概念(thread,process,同步,deadlock,interrupt,etc)
* 計組方面問 pipeline
* C 語言程式能力測驗
#### [4/5G 軟韌體開發工程師](https://careers.mediatek.com/eREC/JobSearch/JobDetail/MTK120210518006?langKey=zh-TW)
* 職缺說明
* 4G/5G Modem IMS and non-3GPP access network 相關解決方案與協定軟軔體開發. 需研讀規範, 制定與設計實作功能模塊許系統整合, 並完成 FT/IOT/LE/Certification 使之達量產品質並協助客戶解決問題
* 開發4/5G專案所需的軟體,提供IC開發所需要的軟體支援,包含系統軟體、網路通訊、應用程式,進行軟體整合驗證與正式發行
* 職缺需求
1. 熟悉C語言、作業系統與網路通訊概念
2. 具TCP/IP網路通訊經驗者佳
3. 具嵌入式系統或RTOS開發經驗者佳或具備系統效能評估與優化能力
4. 具驅動程式開發經驗佳
5. 具備良好團隊合作與溝通協調能力
* Self-assessment
* 熟悉 C 語言、作業系統以及對於網路通訊有基本概念
* 寫過 socket 小程式開發
* 缺乏嵌入式系統或RTOS開發經驗者佳或具備系統效能評估與優化能力
* 缺乏 device driver 開發經驗
* 具備與團隊溝通和合作的能力
* 問題
* C 語言基本能力測驗
* OS 基本問題
> [參考](https://www.ptt.cc/bbs/Tech_Job/M.1561454617.A.A4F.html)
#### 模擬面試
* 🧔:interviewer 👶:interviewee
* 🧔:你好,可以簡單自我介紹,以及說明一下為什麼會投我們 5G(WIFI) 這個部門嗎?
* 👶:好的,首先我先自我介紹一下,主要是因為現在的教授主要的研究領域是網路相關的,而且之前也有修過類似的課,另外我本身對於韌體開發也比較有興趣,所以我才會想來應徵這個部門
* 🧔:好的,那我想先請問你對於 IEEE 802.11 protocal 的認知
* 👶:Wifi 採用的 protocal 屬於 IEEE 802,主要分為 基本服務集合(BSS)、分送系統(DS)、延伸服務集合(ESS)、無線存取點(AP)這四個部分,其中
* BSS 在一個基本服務區域中,所有移動元件的集合,
* DS 負責將封包轉送至目的端,因此分送系統又可視為骨幹網路 ( backbone network ),*
* 一個或多個以上的 BSS,即可被定義成一個 extended service set( ESS ),使用者可於 ESS 上 Roaming 及存取 BSS 中的任何資料
* AP 用來連結基本服務區域與分散式系統的裝置。除了可以提供移動元件擷取位於分散式系統上有線網路的資源外,亦可以利用無線傳輸電線與移動的節點作溝通聯繫。
* 🧔:好的,那可以再問一下對於 OSI 的認知嗎
* 👶:OSI模型共切分成7個不同的層級,由下到上分別是實體層、資料連結層、網路層、傳輸層、會議層、展示層及應用層
* 實體層是OSI模型的最底層,它用來定義網路裝置之間的位元資料傳輸,
* 資料連結層介於實體層與網路層之間,主要是在網路之間建立邏輯連結,並且在傳輸過程中處理流量控制及錯誤偵測,讓資料傳送與接收更穩定。
* 網路層定義網路路由及定址功能,讓資料能夠在網路間傳遞。這一層中最主要的通訊協定是網際網路協定(Internet Protocol,IP)
* 傳輸層主要負責電腦整體的資料傳輸及控制
* 會議層負責建立網路連線,等到資料傳輸結束時,再將連線中斷
* 展示層可轉換表達方式,例如資料格式的轉換的操作
* 應用層主要功能是處理應用程式,進而提供使用者網路應用服務
* 🧔:好的,那麼接下來會一題白板題,題目如下主字串是 abcabcabcabe、子字串是 abcabe,找出字串之間哪裡有pattern?
* 👶:可以用 KMP 來解(詳細寫出虛擬碼以及驗證) [參考](https://www.geeksforgeeks.org/kmp-algorithm-for-pattern-searching/)
```c=
int* computeLPS(char* needle)
{
int size = strlen(needle);
int* LPS = malloc(sizeof(int)*size);
LPS[0] = 0;
int len = 0;
for (int i = 1; i < size;) {
if (needle[i] == needle[len]) {
++len;
LPS[i] = len;
++i;
}
else if (len > 0) {
len = LPS[len-1];
}
else if (len == 0) {
LPS[i] = 0;
++i;
}
}
return LPS;
}
int strStr(char * haystack, char * needle)
{
int m = strlen(haystack);
int n = strlen(needle);
int* LPS = computeLPS(needle);
int i = 0, j = 0;
while (i < m) {
if (haystack[i] == needle[j]) {
++i;
++j;
}
else if (j == n) {
return i-j;
j = LPS[j-1];
}
else if (haystack[i] != needle[j]) {
if (j != 0) j = LPS[j-1];
else ++i;
}
}
if (j == n) return i-j;
else return -1;
}
```