# 資訊科技產業專案設計課程作業3 ### [Google Silicon Engineer, University Graduate, 2024](https://www.google.com/about/careers/applications/jobs/results/118684907669988038-silicon-engineer-university-graduate-2024?location=Taiwan&q=2024) :::spoiler **Minimum qualifications:** * Bachelor's degree in Engineering or equivalent practical experience. * Academic coursework in computer architecture (e.g., core, cache, memory, etc.). * Experience with C/C++ or RTL. **Preferred qualifications:** * Advanced degree in Computer Science, Electrical Engineering, or related field. * Experience designing/implementing or validating RTL design (e.g., core, cache, fabric, memory, codec, etc.). * Knowledge of OS, Firmware, or software stack. * Knowledge of performance or power architecture, power estimation, modeling, or optimization of processor or ASIC. * Excellent scripting language, C/C++ programming, and software design skills. ::: #### 自身評估 * 優勢 * 有C/C++長期撰寫的經驗。 * 修過一整學期的RTL verliog碩班課程。 * 基礎學科的部分幾乎都有修習過。 * 有過暑期的軟韌體intern經驗。 * 不足 * 沒有進階的硬體架構實作經驗。 * 對於ASIC不熟悉。 * 並沒有進一步的去完善底層軟韌體設計的技能樹。 ### [Nvidia System Software Engineer](https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite/job/Taiwan-Taipei/Embedded-Security-System-Software-Engineer_JR1969065?locationHierarchy1=2fcb99c455831013ea52ed162d4932c0&locationHierarchy2=0c3f5f117e9a0101f6422f0fe79d0000&locationHierarchy2=0c3f5f117e9a0101f63dc469c3010000) :::spoiler **What you will be doing:** * Design/implement security and system software solutions for Tegra Automotive, Embedded and Data Center platforms. * Develop bare metal software and applications for various security use cases. * You will be working on Safety(ISO 26262) & Security(ISO 21434) certification of the Software. * Develop ROT (Root of Trust) SW in the cryptographic security system. * Develop/enable Trusted Firmware projects such as ATF, Hafnium, other opensource projects, etc. * Take an active role in the new silicon lifecycle, from pre-silicon simulation/emulation, test validation to power-on bring up phases. * Specify and implement test cases while actively seeking improvements to test automation and software quality. * Work closely with the architecture and different software and hardware design teams to improve the next generation of NVIDIA System-on-Chips. **What we need to see:** * B.S. or M.S. (or equivalent experience) in Computer Science, Computer Engineering, Electrical Engineering, or related field. * New Graduates are welcome. * Strong system software engineering skills combined with a drive to solve hard problems. * Strong programming and debugging skills in C and C++. * Good understanding of operating system internals and embedded systems. * Problem-solving skills to identify complex security issues with software and hardware. * Strong English written and oral communication skills to collaborate with other engineers (worldwide). * A great teammate; self-motivated and the ability to work independently with minimal direction. **Ways to stand out from the crowd:** * Proficient in advanced and next generation CPU architectures for ARM or RISC_V. * Good understanding of common cryptographic algorithms and techniques. * Defensive security programming skills and penetration testing experience. * Proven interests and attitude to strive for the most secure, reliable and quality firmware/software. * Background with developing ATF (ARM Trusted Firmware) or ROT (Root of Trust) SW. * Experience with ISO26262 & ISO21434 certification processes. ::: #### 自身評估 * 優勢 * 有長達4年的C/C++開發經驗。 * 修習過微算機等嵌入式課程。 * 合作開發過大型軟體系統。 * 不足 * 對於CPU架構如ARM、RISC_V不熟悉。 * 對於圖像加密演算法不夠了解。 * 對於ISO26262 & ISO21434等標準沒有接觸過。 ### [Synology Product Developer (網路系統軟體開發)](https://career.synology.com/zh-tw/HQ/position/181) :::spoiler **You are expected to have:** * Proficiency in C/C++ * Familiarity with Unix/Linux environments * Familiarity with standard network protocols: TCP/UDP/IPv4/IPv6/Ethernet * Experience in Linux kernel communication between kernel and user space **We're targeting candidates with:** * Familiarity with Linux network stack * Familiarity with wireless networks * Prior experience in developing web-based user interfaces * Prior experience in tuning network performance ::: #### 自身評估 * 優勢 * 對於C/C++的使用時間很長,寫起來得心應手。 * 有在Linux環境開發過系統的經驗。 * 曾經在OS課程的作業裡撰寫過kernel space與user space溝通的程式。 * 不足 * 對於網路協定如:TCP/UDP那類非常不熟悉。 * 沒有開發過web-based UI的經驗。 * 並沒有了解過網路效能類型的問題。 ### 模擬面試問答 > interviewer : :smile_cat: > interviewee : :clown_face: :smile_cat::你好,今天由我來替公司跟您進行一場面試,在這之前請您先介紹一下自己吧。 :clown_face::好的沒問題,我的名字是ZZZ,目前就讀於成大資訊系大四,近期希望能夠於畢業以前找一份正職工作。我熟悉的語言有C/C++,有產學合作經驗以及軟韌體工程的實習經驗。 :smile_cat::你能夠說明一下你的產學合作經驗是什麼嗎? :clown_face::沒問題,我的產學合作經驗是與XX光電公司所合作的產線排程最佳化案,在這個案子裡面我們需要解決瓶頸效能機台的利用率問題,主要由C/C++語言實作基因演算法為主的排程系統,並透過python輸出圖像化排程結果。 :smile_cat::想請問你在這個案子中你主要負責什麼部分?以及這份案子主要由多少人共同進行? :clown_face::這份案子的合作人員有四人,其中主要撰寫程式的工程師則只有兩人其中一位是我。而我在這裡面主要負責程式記憶體使用亮的管理,以及演算法複雜度的最佳化,因為案子初期的時候程式碼的架構不佳問題,導致我們後期需要重建整個專案,所以我在這之中學到很多。 :smile_cat::那你是如何發現程式的記憶體使用量過高的呢?你又是如何解決這個問題的呢? :clown_face::在開發過程中某次,碩士班學長以及同組的組員說程式跑到一半會被OS殺掉,他們問我能不能想辦法解決。於是我就在程式執行的時候打開工作管理員,後來一查才發現windows系統會在程式使用超過2GB的RAM的時候把它殺掉,所以我才下手去監控程式的記憶體使用問題。而後我也發現了由於前面撰寫程式碼的人員,並沒有在基因演算法迭代的過程中把前一代的資料刪除,造成每一代的舊資料都持續保存,這是其一,其二呢是我發現C++的stl裡面sort這個函式可以讓我們自定義compare的函式,但由於我們當初所撰寫的compare函示是使用pass by value,所以他會把我們所設計的龐大資料結構的資料都複製一次,而我觀察我們並不會更動到他的值,所以我選擇使用pass by reference的方法,如使我就解決了問題。 :smile_cat::看來你對C++的程式撰寫具有一定的經驗,恭喜妳通過了這場面試。