--- 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; } ```