# 資訊科技產業專案設計課程作業 4 ###### tags: `資訊產業專案設計` > 作者:就豪曉-Nonsense 目前的研究領域為自駕車,主要研究方向是提升車輛在自動駕駛時的定位精度 ## 職缺 ### [NVIDIA-Autonomous Vehicle Engineer](https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite/job/US-CA-Santa-Clara/Autonomous-Vehicle-Engineer-_JR1947077) keyword: Autonomous Driving :::spoiler **Job Description** - Lead and support vehicle platform builds - Collaborate with multi-functional teams, including system engineering, software engineering, mechanical/thermal engineering, operations, external vendors, and other partners to successfully bring-up prototype and development vehicles - Lead debug and resolve issues reported during build, deployment and/or field operations - Implement containment and corrective actions as needed to ensure timely delivery of project schedules - Work closely with Automotive Fleet Program Management and NVIDIA engineers to provide in a timely manner status / progress reports, risks / issues and schedule updates - Drive initiatives on program activities for process improvements and turn-around time reduction **Requirement** - [x] Experience in building and integrating automotive/robotic systems with cutting edge technology components - [ ] 2+ years of work experience in embedded/automotive/robotics, system architecture - [ ] Proven automotive industry experiences with vehicle ECUs, CAN, LIN, Flexray, power distribution, etc. - [x] Ability to quickly learn, understand, communicate, and integrate technical concepts and solutions - [x] Outstanding interpersonal & communication skills - [ ] Utmost passion towards attention to details and high focus on quality and operation efficiency - [x] You have a BS or MSEE or related/meaningful engineering field in Electronics/Electrical, Robotics, Mechatronics (or equivalent experience) **Ways to stand out of the crowd** - [x] Hand on experience on Linux. Python and Linux shell script programming skill is a plus. - [x] Proven work experience with autonomous vehicles and/or robotics system building - [ ] Deep understanding of vehicle system architecture - [x] Prior experience working in the following areas: Autonomous Vehicles, Robotics, Embedded system, or Manufacturing (e.g., prototype to contract manufacturing), and shop operations ::: #### 職缺分析 公司正在尋找自駕車專長的工程師,協助NVIDIA開發他們的自動駕駛系統。 應徵者最好有自駕車相關的開發經驗,熟悉Linux作業系統與python,對車輛架構有一定了解。因為要跟各個不同單位的人合作共同開發,善於溝通者佳。 #### 匹配程度 - 碩士班的實驗室研究方向就是自駕車,每兩周至少都會做一次實驗,具豐富實作經驗 - 長期使用Ubuntu底下的Autoware框架進行開發,熟悉系統操作 - 曾參與多項活動,有很多與人互動的經驗 #### 上機考 [1528. Shuffle String](https://leetcode.com/problems/shuffle-string/) :sunglasses::interviewer :smile::interviewee :sunglasses::同學你好,歡迎來到本公司的面試。可以請你說明為甚麼來應徵這個職缺,順便說明一下你對我們公司的的了解嗎? :smile::NVIDIA對我來說是一間很有前瞻性的公司,貴公司總是能跟隨目前產業的趨勢進行延發,同時提前擬定未來的發展方向,是一間很有發展性的公司。我研究所的研究方向以自駕車為主,並整合其他感測器像是影像資料,高精地圖等等來提升車輛在各種環境下的定位精度。 :sunglasses::感覺相當不錯,現在要找到實際操作經驗的人還不多。可以請你大致說明目前使用的平台架構跟使用的程式語言嗎? :smile::好的,目前我們的自駕車是使用ROS框架底下的Autoware進行開發。這個平台能處理所有跟車輛與感測器有關的動作,像是匯入點雲圖與感測器資料、加入自己撰寫的演算法或是協助車輛進行自動駕駛等等,而以上的程式碼多以C++和python撰寫。 :sunglasses::既然你提到有開發演算法的經驗,那接下來的考題對你來說應該不難。我們都知道在要讓車輛實現自動駕駛需要大量的資料傳遞,所以資料處理是在工作上一定會遇到的問題。我會給你一組字串和存有亂數的vector,而這兩者是互像對應的。請你返回當我的vector由數字0排序到最大值時,對應的字串輸出結果為何? :smile:: ```=c++ class Solution { public: string restoreString(string s, vector<int>& indices) { map<int,char> m; string output = ""; for(int i = 0;i < indices.size();i++){ m[indices[i]] = s[i]; } sort(indices.begin(), indices.end()); for(int i = 0;i < indices.size();i++){ output = output + m[indices[i]]; } return output; } }; ``` :sunglasses::這是一個很有系統的寫法,如果資料量很大表現應該也會很穩定,不過花費的記憶體跟執行時間應該也不少,能不能想辦法提升一下程式效率? :smile:: ```=c++ class Solution { public: string restoreString(string s, vector<int>& indices) { string output = s; for(int i = 0;i < indices.size();i++){ output[indices[i]] = s[i]; } return output; } }; ``` ### [MediaTek-GNSS (GPS, BeiDou, Galileo, GLONASS) Positioning Algorithm & Software Engineer](https://careers.mediatek.com/eREC/JobSearch/JobDetail/MTK120210407003?langKey=en-US) keyword: GNSS :::spoiler **Job Description** - Explore the problems to be solved for enhancing the positioning performance for the GNSS chip. - Develop the mathematical model and simulation software for proof of concept. - Collect the raw data of GNSS and sensors on the smart phone in the field trials. - Implement your design into a real time running embedded software library on the SoC - Test your work, debug, improve it and iterate the process to optimize your solution to meet the customer’s requirements. **Requirement** - [x] No Work Experiance & Master's Degree - [ ] Strong knowledge in inertial measurements, calibration, attitude estimation, and navigation - [ ] Strong knowledge in GNSS positioning algorithms - [x] Strong theoretical and practical understanding of Kalman filter and sensor fusion - [x] Strong software developer with high proficiency in C or C++, and Python - [x] A passion for solving field trial issues and for optimizing the user experience - [x] A proven record designing GNSS/INS navigation system for vehicle or pedestrian applications ::: #### 職缺分析 此職缺應該是想找能優化聯發科GNSS晶片的工程師。 此人對GNSS要有一定程度的認識,能獨自開發演算法和驗證效果,同時會寫程式將演算法實際應用至晶片上,如果有寫過單晶片的經驗應該會加分。工作過程需要與客戶溝通,善溝通者佳。 #### 匹配程度 - 雖然沒有開發定位演算法的經驗,不過我的研究需要長期使用GNSS/RTK結合其他感測器(如:光達、雷達、影像資料等等)來協助車輛進行定位,所以對這些訊號的應用與分析有一定程度的了解 - 相關產品使用經驗,曾在過往比賽中曾使用聯發科開發的linkit 7697晶片進行開發 - 了解Kalman filter的基本架構與原理 #### 上機考 [912. Sort an Array](https://leetcode.com/problems/sort-an-array/) :sunglasses::interviewer :smile::interviewee :sunglasses::同學你好,可以稍微說明一下你的研究方向跟應徵的動機嗎? :smile::面試官好,我的研究方向以自駕車為主,並整合其他感測器像是GPS/RTK,影像資料,高精地圖等等來提升車輛在各種環境下的定位精度。雖然我沒有開發過定位演算法的經驗,不過在我的研究中,需要大量使用GPS訊號並使用RTK協助車輛進行定位,所以在GNSS資料的應用算是有點經驗,所以前來應徵這個職位。 :sunglasses::沒有開發演算法的經驗倒是還好,倒是我們要將這些演算法應用到公司的GNSS晶片上,請問你在這方面有相關的經驗嗎。 :smile::我有使用過貴公司開發的Linkit 7696開發版,並用它接收感測器資料,再把資料透過物聯網和深度學習架構傳輸至雲端。雖然是比較基本的應用,但對晶片也算是略知一二。 :sunglasses::既然這個職缺是定位演算法工程師,想必對演算法要有一定的認知。我會給你一個vector數列,請你想辦法用C++寫一個排序演算法,再把排序後的結果輸出。 :smile:: ```=c++ class Solution { public: vector<int> sortArray(vector<int>& nums) { bool a = true; while(a){ int i = 0; for(int j = 0;j < nums.size()-1;j++){ if(nums[j] > nums[j+1]){ swap(nums[j], nums[j+1]); i++; break; } } if(i == 0) a = false; } return nums; } }; ``` :sunglasses::這個方法雖然可行,不過我們的產品在應用時一定要實現real time,是否能提升這個演算法的速度? :smile:: ```=c++ class Solution { public: vector<int> sortArray(vector<int>& nums) { quickSort(nums, 0, (int)nums.size() - 1); return nums; } void quickSort(vector<int>& nums, int start, int end) { if (start >= end) return; int pivot = nums[start], i = start + 1, j = end; while (i <= j) { if (nums[i] > pivot && nums[j] < pivot) { swap(nums[i++], nums[j--]); } if (nums[i] <= pivot) i++; if (nums[j] >= pivot) j--; } swap(nums[start], nums[j]); quickSort(nums, start, j - 1); quickSort(nums, j + 1, end); } }; ``` <!-- ### NVIDIA - [Senior Validation Test Engineer - Autonomous Driving](https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite/job/China-Shanghai/Senior-Validation-Test-Engineer---Autonomous-Driving_JR1946283) ### Qualcomm keyword: Autonomous Driving - [Autonomous Driving Systems Integration Engineer in Philadelphia, Pennsylvania](https://qualcomm.dejobs.org/philadelphia-pa/autonomous-driving-systems-integration-engineer/B67609E805E3470BA4D72DA960A2984D/job/) -->