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有辦法嗎?
:::