# [資訊科技產業專案設計課程作業 3](https://hackmd.io/@sysprog/info2024-homework3)
## 簡歷
### [Resume](https://drive.google.com/file/d/1p2kxozGepF3ZJrmnDrshRrGtA7VlAkJS/view?usp=sharing)
## 符合自身興趣/規劃的職務描述
### 實習
#### [Nvidia: System Software Engineering Intern - 2025](https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite/job/Taiwan-Taipei/System-Software-Engineering-Intern---2025_JR1990478)
:::spoiler
:::info
What you'll be doing:
* Cross-Team Collaboration: Work closely with various teams (software, firmware, hardware, QA, validation, and more) across different time zones.
* Tool Development: Design and implement software tools essential for ensuring the highest quality of hardware, firmware, and systems.
* Assessment: Evaluate the quality of hardware, firmware, and systems, and provide guidelines or suggestions for enhancements.
* Continuous Learning: Stay passionate about acquiring new knowledge and skills to drive efficiency in your work and deliverables.
What we need to see:
* Pursuing a Bachelor’s, Master’s, or PhD degree in Electrical Engineering, Computer Engineering, Computer Science, or a related field.
* Strong proficiency in one or two programming languages with an interest in learning additional languages.
* Knowledge of PC architecture and experience with Linux development environments.
* Experience with source control management systems such as SVN, Perforce, or Git.
* Basic understanding of hardware technologies such as PCIe, NVLink, or Infiniband is a plus.
* Enjoyment of working in dynamic environments.
:::
#### [Google: Software Engineering Intern, Summer 2025](https://www.google.com/about/careers/applications/jobs/results/134225437638173382-software-engineering-intern-summer-2025)
:::spoiler
:::info
Minimum qualifications:
* Currently pursuing a Bachelor's, Master's or PhD in Computer Science, or a related technical field.
* Experience with data structures or algorithms.
Preferred qualifications:
* Currently in your penultimate year.
* Experience with Unix/Linux, Machine Learning, Tensorflow, or embedded systems.
* Experience programming in one of the following languages: C, C++, Java, or Python.
* Ability to complete an internship program of 10-12 weeks.
Responsibilities
* Apply knowledge gained in computer science courses to real-world problems.
* Analyze information and evaluate results to choose the best solution to effectively solve problems.
* Develop scripts to automate routine tasks.
* Create and support a productive and innovative team. Work with peers, managers, and teams.
:::
#### [Amazon: Software Dev Engineer Intern](https://www.amazon.jobs/en/jobs/2813426/software-dev-engineer-intern)
:::spoiler
:::info
Key job responsibilities
* Support the development of the Ring and Blink FW and work with the SDET team to support the building up of the test framework with the QA team.
* Collaborate with experienced cross-disciplinary Amazonians to conceive, design, and bring innovative products and services to market.
* Design and build innovative technologies in a large distributed computing environment, and help lead fundamental changes in the industry.
* Create solutions to run predictions on distributed systems with exposure to innovative technologies at incredible scale and speed.
* Build distributed storage, index, and query systems that are scalable, fault-tolerant, low cost, and easy to manage/use.
* Ability to design and code the right solutions starting with broadly defined problems.
* Work in an agile environment to deliver high-quality software.
#auta-twn
About the team
* Currently enrolled in a Bachelor’s or Master’s Degree in Computer Science, Computer Engineering, or related field at time of application and will graduate between 2025/12 to 2026/08.
* Can work as an intern for minimum 3 months duration.
* Knowledge of the syntax of languages such as Python, C/C++, Java.
* Knowledge of Computer Science fundamentals such as object-oriented design, algorithm design, data structures, problem solving, and complexity analysis.
BASIC QUALIFICATIONS
- Speak, write, and read fluently in Mandarin
- Currently enrolled in Master or Bachelor Degree in Computer Science, Computer Engineering, Electrical Engineering, or related fields.
- Will graduate between 2025/12 to 2026/08.
- Can work as an intern for minimum 3 months duration.
- Proficiency in the Python programming language.
- Knowledge of Computer Science fundamentals such as algorithm design, data structures, problem solving, and complexity analysis.
PREFERRED QUALIFICATIONS
- Good English listening and speaking skills.
- Experiences with Linux or other embedded systems is a plus.
- Proficiency in Kotlin, Java, Javascript is a plus.
- Understanding in computer network and/or wireless network is a plus.
:::
### 正職
#### [Nvidia: GPU Firmware Engineer - New College Graduate](https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite/job/Taiwan-Taipei/GPU-Firmware-Engineer---New-College-Graduate_JR1985923?jobFamilyGroup=0c40f6bd1d8f10ae43ffaefd46dc7e78&jobFamilyGroup=0c40f6bd1d8f10ae43ffbd1459047e84&locationHierarchy1=2fcb99c455831013ea52ed162d4932c0)
:::spoiler
:::info
What you'll be doing:
* Be involved in the definition, architectural design, and development of security firmware for NVIDIA DGX products with an opportunity to craft its future.
* Assist with defining and making sure software development process meeting security standards.
* Perform security threat modelling for our software.
* Design and/or make recommendations for security solutions that apply to the software to satisfy DGX/GPU server security guidelines and requirements.
What we need to see:
* Bachelors or higher in electrical engineering, computer science, or computer engineering (or equivalent experience).
* Have software design, development, analysis or equivalent experiences.
* Experience in building and implementing secure software. Familiar with DMTF PLDM, MCTP, SPDM standards is a plus.
* Background in embedded software development in Linux environment. Background with FreeRTOS. Background with security technologies: Root of Trust, etc.
* Experience in threat modeling and modeling attack-vectors.
* Background with SBIOS and BMC firmware is a plus. Strong programming skills in Ada/Spark, C/C++, algorithms, and data structures.
* Strength being hands-on with development in addition to experience in software security. Deep understanding of computer architecture, operating system fundamentals.
* A strong teammate; self-motivated with positive attitude with a motivation to learn, grow and build.
Ways to stand out from the crowd:
* A successful candidate should be able to work independently and highly self-motivated. He or she should drive issues with little or no supervision.
* A key success for this position is not only a thorough understanding of system architecture, security and software, but also solid grasp of system design, use case requirements and software stacks.
* Excellent communication skills, flexible in task assignments and working under pressures are also indispensable for this candidate.
:::
#### [Google: Firmware Engineer, Pixel](https://www.google.com/about/careers/applications/jobs/results/124160202315309766-firmware-engineer-pixel)
:::spoiler
:::info
Minimum qualifications:
* Bachelor's degree in Computer Science, Electrical Engineering, Computer Engineering, a related technical field, or equivalent practical experience.
* 5 years of experience in coding with a general purpose programming language (e.g. Python/C/C++).
Preferred qualifications:
* Experience with embedded system development, real-time operating systems (RTOS), and microcontrollers.
* Ability to debug complex embedded Software (SW)/Hardware (HW) issues.
* Excellent coding skill for Python/C/C++.
* Excellent problem-solving skills.
Responsibilities
* Design and implement core software platform for embedded development on modems.
* Develop embedded software frameworks maximizing leverage and scalability across products.
* Bring up new prototype Hardware Engineer (HW) systems and design and implement factory calibration and test systems.
* Create system and developer tools for optimizing performance.
* Build automated regression test systems to validate features and measure system performance.
:::
## 職缺所需要的能力/自己在專業上匹配的程度
### 職缺分析
* 程式語言
* 必備:C, C++, Python, Java。
* 加分:Kotlin, Ada/Spark, JavaScript。
* 計算機基礎:
資料結構與演算法設計、物件導向設計、問題解決能力。
* 系統與環境
* 熟悉 Linux/Unix 環境與版本控制(Git/SVN/Perforce)。
* 分散式系統設計與實作經驗。
* 嵌入式系統 (RTOS, MCU)、硬體架構 (PCIe, NVLink, Root of Trust)。
* 工具開發與自動化: 撰寫腳本、自動化測試框架與效能優化工具。
* 軟體安全: 威脅建模、安全韌體、標準技術 (DMTF PLDM, MCTP, SPDM)。
### 個人簡歷
* 混血CS
* 研究方向: 生醫訊號處理、人機互動
* 軟韌相關實習*2
### 優勢
* 熟悉 C, C++, Python, Java
* 有嵌入式系統與硬體相關實習經驗
* 熟悉 Linux 開發環境,以及 Git、GDB 等版本控制與調試工具
### 劣勢
* 缺少分散式系統、大規模系統設計經驗
* 安全技術經驗不足
* AI技術只懂毛皮(修過課等級,沒什麼額外project)
* 刷題很少
## 面試題目問答
🧔:interviewer 👶:interviewee
### 背景詢問
🧔:請介紹你在 Asuka Autotronics 的實習內容。\
👶:在 Asuka,我主要負責開發 STM32 的嵌入式韌體,使用 UART 通信協議進行導航系統模組間資料傳遞,此外,我也用Android Studio 撰寫的導航系統的 UI 介面。另外一項負責的專案是用 Flutter 建立雷達信號的即時監控圖形化界面,增強資料可視化效果。
🧔:能描述你如何開發 eCall 系統嗎?\
👶:在啟碁科技實習時,我改善了 eCall 系統中資料傳輸的問題,透過 domain socket 建立不同app之間的通信,讓系統可以在發生緊急事故時,自動生成緊急數據 (MSD),以實現快速反應功能。
### 背景知識
#### 嵌入式與韌體相關問題
🧔:請解釋 UART 是什麼,它的工作原理是如何的?\
👶:UART 是一種串行通信協議,用於兩個模組之間的數據傳輸。它通過串行傳輸方式將數據轉換為一連串的信號,並以預設的 baud rate 進行同步。關鍵的工作原理包括起始位 (start bit)、數據位 (data bits)、校驗位 (parity bit) 和停止位 (stop bit)。
🧔:如果你需要對一個 LED 進行 PWM 控制,你會怎麼做?\
👶:在 STM32 中,我會使用 Timer 模塊,設置一個週期和占空比的 PWM 波形,然後透過 GPIO 控制 LED。需要啟用對應 Timer 的中斷,以確保 PWM 信號精確生成。
#### OS 與計算機架構問題
🧔:請解釋 Process 和 Thread 的差別。\
👶:Process 是操作系統中資源分配的基本單位,每個 Process 都有自己的記憶體空間;Thread 是執行的基本單位,Thread 是共享 Process 的資源,如記憶體和文件。多 Thread 的優勢在於資源共享效率高,但需要處理同步問題。
🧔:什麼是 Deadlock?如何避免它?\
👶:Deadlock 是當多個 Process 相互等待彼此釋放資源時產生的僵局。\
避免的方法包括:
* 資源分配次序規則。
* 餓死避免 (如等待時間限制)。
* 使用死鎖檢測與恢復機制。
#### 安全與分散式系統
🧔:什麼是 Root of Trust?\
👶:Root of Trust 是安全系統中的一個硬體或軟體模塊,它是信任鏈的起點,負責執行安全關鍵操作,如身份驗證和加密密鑰管理。
🧔:你能設計一個分散式儲存系統嗎?\
👶:可以。我會使用分片 (Sharding) 和副本 (Replication) 技術確保數據的高可用性和低延遲,並利用分佈式哈希表 (DHT) 進行數據定位。此外,實施一致性協議 (如 Raft 或 Paxos) 保持數據的一致性。
### 結尾問題
🧔:為什麼你覺得自己適合這份職缺?\
👶:我擁有扎實的程式設計技能 (C, C++, Python) 和嵌入式系統開發經驗,並在跨模組協作和系統設計上有實際案例。此外,我的研究背景讓我善於分析問題並設計解決方案,與職缺需求高度匹配。
## Reference
[軟韌體工程師面試考題](https://www.raind.blog/)\
[OS考題](https://hackmd.io/@SupremeEJ/SkcsCUGh8)