resume 在 [github](https://github.com/winnie0710) ## **1. Google** ### [Firmware Engineer, Embedded Systems, Pixel Power](https://www.104.com.tw/job/8imxi?jobsource=ios_share) **In Pixel team** * 具備 2 年以上使用一種或多種程式語言的軟體開發經驗 * 熟悉資料結構與演算法 * 具備 2 年以上嵌入式作業系統工作的經驗 * 具備無障礙技術(accessible technologies)的開發經驗 ::: spoiler accessible technologies **Accessible technologies**(無障礙技術)是指針對不同背景、能力和需求的使用者設計的技術,旨在確保各類人群(包括身心障礙者)都能使用電子設備、應用程式和網絡服務。這些技術使得擁有視覺、聽覺、行動或認知障礙的使用者也能無障礙地操作數位產品。無障礙技術通常包括: 1. **螢幕閱讀器**:一種將顯示的文字轉換為語音或點字的工具,主要幫助視力障礙者使用電腦或手機,例如 VoiceOver(iOS)或 TalkBack(Android)。 2. **語音控制**:讓使用者可以透過語音指令操作設備,方便有行動障礙或手部不便的使用者。 3. **字幕和手語翻譯**:提供影音內容的字幕或手語翻譯,幫助聽力障礙者獲取音訊資訊。 4. **高對比模式與文字放大**:提高畫面的對比度或文字大小,方便弱視者使用。 5. **替代輸入設備**:例如眼球追蹤、頭部移動控制或單一開關控制等技術,幫助嚴重行動障礙的使用者操作電子設備。 6. **簡化的用戶介面**:提供更直觀、簡化的界面,適合有認知障礙或學習困難的使用者。 無障礙技術的目的是讓更多人享受到科技的便利,並提高使用者的自我效能和獨立性。 ::: ###[Software Engineer, University Graduate, 2025](https://www.104.com.tw/job/8i77q?jobsource=ios_share) ::: spoiler accessible technologies Minimum qualifications: • Bachelor's degree in Computer Science, related technical field, or equivalent practical experience. • Experience in computer science, data structures, algorithms, and software design. • Experience in Software Development and coding in a general purpose programming language. Preferred qualifications: • Master's degree or PhD in Computer Science or a related technical field. • Experience programming in C, C++, Java, or Python. • Experience with Unix/Linux or Windows environments, distributed systems, machine learning, information retrieval, and TCP/IP. ::: ## **2. NVIDIA** ### [BMC Firmware Engineer - New College Graduate](https://www.104.com.tw/job/8cavo?jobsource=ios_share) #### Job description: * OOB 管理(即伺服器未通過主作業系統而直接管理伺服器硬體)、韌體開發、伺服器架構設計 * 與全球 BMC 開發團隊合作 * 依照 DMTF 標準(MCTP、Redfish、SPDM、PLDM)進行 BMC 方案的設計 * 與安全團隊合作提升軟體的安全性 #### Preferred qualifications: * 熟悉 SBIOS、BMC 與作業系統(OS)之間的低層介面 * 具有 C/C++ 開發經驗,會使用 bash 或 Python 撰寫腳本,並且在嵌入式 Linux 環境中具備除錯技能 * 溝通與團隊合作能力 * 參與 Open Compute、IPMI、DMTF 標準和開源項目並做出貢獻 * 具有在 AMI SPX 韌體架構上為企業伺服器開發 BMC 或類似管理堆疊的成功經驗 ## **3. MediaTek 聯發科** ### 1. [韌體工程師](https://www.104.com.tw/job/8hktp?jobsource=ios_share) #### Job description: * IC功能驗證 * IC韌體撰寫(C語言) * 協助CSA(Customer SA)/客戶解決問題 #### Preferred qualifications: * 熟悉embedded system * Familiar C語言 * 溝通協調能力 * 有RTL/verilog經驗佳 * 有DRAM相關經驗佳 ### 2. [軟韌體工程師](https://www.104.com.tw/job/8di8n?jobsource=ios_share) #### Job description: * 支援客戶產品的開發 * LCD Monitor 或Retimer FW的開發與應用 * 協助產品的推廣 * LCD Monitor UI 的設計 以及訊號的處理 #### Preferred qualifications: * 用C/C++ 來做系統的應用, 或相關程式語言開發經驗 * 有Display or Retimer 相關經驗 * 溝通能力佳 ## **4. 瑞昱** ### 1. [GNSS演算法工程師](https://www.104.com.tw/job/7ckj8?jobsource=jolist_a_relevance) #### Job description: * 研發GNSS基頻信號處理演算法。 * 研發GNSS資料分析與定位演算法。 #### Preferred qualifications: * 熟悉C/Matlab語言。 * 熟悉數位訊號與數位通訊處理。 * 具嵌入式系統程式設計經驗尤佳。 ### 2. [軟體工程師](https://recruit.realtek.com/Job/JobDetail?jobid=717) (Embedded System/Machine Learning/Compiler) #### Preferred qualifications: * 熟悉C/C++、Python等程式語言 * 熟悉compiler 設計 (GCC/LLVM)及toolchain (assembler, C library, debugger) * 熟悉embedded system 開發 (如Android, embedded Linux or RTOS等) ## **5.聯詠** ### 1.[DDR 軟韌體工程師](https://www.104.com.tw/job/6scya?jobsource=ios_share) * embedded system BSP/driver 開發 * 熟悉c/c++/python語言程式開發 * 具有自動化測試開發經驗 ### 2.[TV軟韌體工程師](https://www.104.com.tw/job/6rklw?jobsource=ios_share) * 熟悉linux環境,有驅動程式/標準介面開發經驗 * 具有TV Soc驗證/開發經驗 * 具有open source code study/porting經驗 ## 檢視自身能力適配程度 ### 符合要求 * 學歷:碩士畢業 * 熟悉C/C++、python * 溝通能力佳 - 大學擔任服務性志工團團長 ### 未達要求 尚需學習 核心技能 > 嵌入式系統實作 - 碩一下修課 Linux核心設計 - jserv Linux核心實作課程 完成驅動程式之project 選擇open project 做出貢獻 - threadX 因應不同工作內容 >有RTL/verilog經驗 依照 DMTF 標準(MCTP、Redfish、SPDM、PLDM)進行 BMC 方案的設計 熟悉 SBIOS、BMC 與作業系統(OS)之間的低層介面 數位訊號與數位通訊處理 ## mock interview :blond-haired-woman: : interviewer , :girl: : interviewee :blond-haired-woman: : 說明struct and union的差別與各自的應用 :girl: : struct中的每個成員都有自己的記憶體空間,記憶體大小為所有成員之和,可以同時存取所有成員的值。union則是所有成員共用同一塊記憶體,最大成員的大小即為union記憶體大小,單一時刻只能存取一個成員,其他成員的值會被覆蓋,要小心存取但是較節省記憶體空間。 struct通常用來存具有多種屬性的用戶資訊,或是結構較複雜的linked list和tree的節點。union用於嵌入式系統可節省儲存空間,確保記憶體分配只根據最大成員的大小。 :blond-haired-woman: : 在嵌入式系統中存取union的範例有什麼 :girl: : 硬體寄存器存取,假設一個硬體寄存器為16位元,MSB和LSB可以分別代表不同的參數,MSB紀錄設備的狀態(準備就緒/中斷),LSB則是控制設備的操作(啟動/停止),韌體可以檢查 MSB 來確定設備是否就緒,然後設置 LSB 來啟動設備。 ```c union Register { uint16_t full_reg; // 整個 16 位元寄存器 struct { uint8_t lsb; // 低位元組 uint8_t msb; // 高位元組 } bytes; // 結構體表示為兩個 8 位元組 }; ``` :blond-haired-woman: : 說明deadlock、Race condition,以及實務上怎麼處理 :girl: : deadlock使指多個process(or thread)因為相互等待資源釋放而無法繼續執行的狀態,在實務上可以盡量避免多個資源的交叉請求,保持資源獲取的順序一致,或是使用可自動檢測deadlock、恢復deadlock的機制。 Race condition是多個process同時取用共享資源,其執行結果會因為process取用順序不同而改變。可使用分散式架構將資源劃分到不同的節點,最小化共享資源,搭配適當地同步機制,像是optimistic locking 或是消息隊列管理全域計數器等共享資源。 :blond-haired-woman: : 描述一下經典算法LCS怎麼做的 :girl: :LCS是尋找兩個問題的最長相同子序列,可以衡量兩個序列的相似程度。用動態規劃法將問題分解成子問題求解,假設listA長度為m,listB長度為n,要建立一個大小是(m+1)*(n+1)的dp表,元素都初始化為0,由dp表的左上方開始填,從list的第一個元素開始,判斷A[i]是否等於B[j],等於的話dp[i][j]為表格左上方的元素+1,若是不等於,dp[i][j]則 從其左側與上方的數值中,取最大值填入,最後比對完listA和listB後,dp[m][n]就是最長子序列的長度了。 實際可以應用在git的版本控制,在文本中找出相似的部分,或是在自然語言處理中分析句子結構或語意相似性。 ### 過去參與的project >你要不要描述一下你印象最深刻的project是什麼? 為什麼是這個? 那你們怎麼分工的? 這個project裡最有印象的是哪一份code?是做什麼的? 你寫過的code以來,最難debug的code是怎樣的? ## 參考資料 [2022作業範例](https://hackmd.io/@chungkee/info2022-homework3) :::spoiler 軟韌工程師面試題 軟韌工程師 1.data size 2.struct and union 3.利用c語言,將字串*str2接序在*str1後 4.解釋deadlock、Race conidtion 5.write a program :copy 4,5,6,7bits of 0x1234567 to 0x145678f 1,2,3,4 bits 6.stack point跳轉到function需要哪些暫存器 OS相關的問題: 1.process, thread的差異 2.shared memory 3.mutex, semophore 4.paging 5.dll如何運作 data structure/algorithm相關的問題: 1.(不用寫code) 給兩個set A,B. 想輸出A - B要怎麼做?複雜度呢? 2.(不用寫code) 描述一下經典算法LCS怎麼做的 3. 講一下array, linked list, tree的優缺點, 以及使用時機 Coding 題: 1.給你一個BST的struct 結構,寫出insert操作 2.給你一個N bit的數字,輸出他有幾的bit是1 3.給你一張圖,寫一個function參數是起點跟終點,找出最短路的長度 4.追加問題:那如果我想印出這條path有辦法嗎? :::