--- title: 資訊科技產業專案設計課程作業 3 tags: INFO2022 --- # 資訊科技產業專案設計課程作業 3 ## [Software Engineer, Pixel Wearable Experience](https://careers.google.com/jobs/results/91911861860999878-software-engineer-pixel-wearable-experience/?company=Google&company=YouTube&employment_type=FULL_TIME&gclid=Cj0KCQiApb2bBhDYARIsAChHC9vYIgwYp65yalbIQVJeele6oLhtmUb41_WMAopEP_QCIO0ICwj4DwMaAgm4EALw_wcB&gclsrc=aw.ds&hl=en_US&jlo=en_US&location=Taiwan&page=2&q=&sort_by=relevance&src=Online%2FHouse%20Ads%2FBKWS_Cloud_APAC) ### JD - Minimum qualifications: - Bachelor's degree in Computer Science, a related technical field, or equivalent practical experience. - 3 years of experience in Android application development. - Experience in Java coding. - Preferred qualifications: - Knowledge of mobile software architecture and deployment. - Knowledge of Bluetooth communication or wireless connectivity development. - Ability to effectively collaborate partner teams and across regions. - Responsibilities - Building the companion app for the Pixel peripheral devices on Android platform, including device communication, common android app architecture, dependencies management and the user interface. - Create innovative software experience and system infrastructure for nearby and cross-devices on Android and other platforms. - Communicate and effectively collaborate with partner teams across Google. ### 分析 目前不符合工作Minimum qualifications中的Android開發經驗,熟悉語言也不是Java。 但選這項職缺的原因是對於消費產品的使用體驗有興趣,加上覺得自己的觀察力算敏銳,應該能夠朝向這方面前進。 ## [SW Engineer 2- Windows Silicon and Systems integration](https://careers.microsoft.com/us/en/job/1272330/SW-Engineer-2-Windows-Silicon-and-Systems-integration) ### JD - Qualifications - A Bachelor’s degree in Computer Science, Computer Engineering or other relevant field of study combined with similar relevant work experience. - A minimum of 4 years of experience in software and/or product development. - Familiarity with the System on Chip (SOC) Hardware architecture and software for SOC. - Practical demonstrated experience working with and debugging hardware/firmware interaction during board bring-up and component upgrade. - Excellent C/C++ design and coding skills - Strong communication skills required, including the ability to clearly express technical and team leadership related concepts in verbal and written forms. - Preferred Qualifications - Ability to quickly ramp-up on complex and unfamiliar code - Experience with Windows driver and Unified Extensible Firmware Interfaces (UEFI) and FW system optimization for Systems on a Chip (SoCs) is a plus - Proven track record of shipping high volume consumer devices. - Familiarity with one or more of the following Windows sub-systems: modem, RF, audio, graphics, display, camera, sensors, Kernel debugging, OS debugging, or kernel mode drivers. - Experience with new hardware bring-up and factory manufacturing ### 分析 雖然熟悉C++但同樣沒有條件所要求的SOC相關經驗。 選擇這項職缺的原因是,認為雖然手機等行動裝置已經趨於飽和,但行動運算的SOC應該還會持續發展,所以會想要朝這方向努力。 ## [Software Development Engineer Intern, IOT Lab, AWS](https://www.amazon.jobs/en/jobs/2285564/software-development-engineer-intern-iot-lab-aws) ### JD - Responsibilities : - Ability to design and code right solutions starting with broadly defined problems. - Drive best practices and engineering excellence. - Work with other team members to develop the architecture and design of new and current systems. - Work in an agile environment to deliver high quality software. - Basic qualifications - Candidates pursuing Bachelors/ Masters in Computer Science or Engineering or related field. - Graduation in 2023 and 2024 and can work at least 3 month full time. - Excellent problem solving skills. - Possess an extremely sound understanding of areas in the basic areas of Computer Science such as Algorithms, Data Structures, Object Oriented Design, Databases. - Be able to write Amazon quality code in an object oriented language - preferably in C/C++/Java in a Linux environment. - Candidate must have good written and oral communication skills, be a fast learner and have the ability to adapt quickly to a fast-paced development environment. - Preferred qualifications - Strong, object-oriented design and coding skills (C/C++ and/or Java preferably on a UNIX or Linux platform) - Knowledge of Perl or other scripting languages a plus - Experience with distributed (multi-tiered) systems, algorithms, and relational databases - Experience in optimization mathematics (linear programming, nonlinear optimization) - Ability to effectively articulate technical challenges and solutions - Deal well with ambiguous/undefined problems; ability to think abstractly - Previous technical internship(s) preferred ### 分析 因為自身沒有什麼相關經驗,會希望做intern來累積經驗,加上此職缺是AWS的IOT,覺得應該可以學到滿多東西。 ## 面試題目 ### Software Engineer, Pixel Wearable Experience 這個沒有找到職位對應的面試題目,所以找了[Google的面試題目](https://placewit.medium.com/order-of-people-heights-2a7c93dbc618)。 >🐱:interviewer 🐶:interviewee 🐱:你好,我是今天的interviewer,想要請你解一個題目,題目會給你兩個陣列,第一個陣列的第幾項代表第幾個人的身高,第二個陣列的第幾項代表這個人重新排列過後,他身前站了幾個比他高的人。我想要讓你從兩個陣列,得到最後這幾個人的排列順序。 🐶:請問身高會有相同的情況,或是身高等於零的情況嗎? 🐱:皆沒有。 🐶:好的,我打算用C++實現。我觀察到,可以從最矮的開始排,因為所有人身高皆不相同,所以如果最矮的前面有n個比他高,代表他最後會在第n+1個位置,那第二矮的就會看到一個已經有少一個空位的陣列,但因為最矮的已經排掉,所以剩下所有人都會比他高,因此如果他有m個比他高,則他需要找到第m+1個空位。 那我首先會建立一個map,對應身高與更高的人數。那這邊我是用sort從小排到大,也可以建立min heap。那我這邊使用array的架構建立一個空陣列。 那接下來就是每次取出最小值,然後用map找到他對應的更高的人數,然後等於零來判斷,找到了幾個空格,找到了位置後就可以break。那這樣陣列就建立完了,最後我讓他回傳的資料型態轉為vector。 ```cpp vector<int> findOrder(vector<int> & A, vector<int> & B) { map <int,int> search_map; for (int i = 0; i < A.size(); i++){ search_map[A[i]] = B[i]; } sort(A.begin(),A.end()); int *answer = (int *) calloc(A.size(), sizeof(int)); for (int i = 0; i < A.size(); i++){ int cur_min = A[i]; int taller_num = search_map[cur_min]; int cur_taller_num = 0; for (int j = 0; j < A.size(); j++){ if (answer[j] == 0){ if (cur_taller_num == taller_num){ answer[j] = cur_min; break; } else{ cur_taller_num++; } } } } vector<int> answer_vec(answer, answer + A.size()); free(answer); return answer_vec; } ```