---
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;
}
```