# [資訊科技產業專案設計課程作業 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)