# 資訊科技產業專案設計課程作業 3
## 相關工作職缺項目
### [Microsoft Software Engineer](https://jobs.careers.microsoft.com/global/en/job/1783935/Software-Engineer)
::: spoiler
- Qualifications
- Basic
- Bachelor's Degree (or currently pursuing a degree) in Computer Science or related technical discipline with proven experience coding in languages including, but not limited to, C, C++, C#, Java, JavaScript, or Python.
- Preferred
- 2+ years of combination of infrastructure/back-end and UI development experience – Cloud Technology (AWS/Azure/K8S)
- React, JavaScript/Typescript, HTML 5/CSS, C# or Java, Python, SQL
- 2+ years of product lifecycle experience (from customer requirements -> functional spec -> design -> development/testing -> deployment and monitoring)
- Responsibilities
- Learn to review and break down work items into tasks with stakeholder collaboration, provide estimations, and escalate delays, while also supporting feature deployments to customers, considering user and service impacts, and adhering to best deployment practices for safety.
- Collaborate with key stakeholders to define feature requirements, integrate feedback to enhance design, and establish feedback loops for continuous improvement based on customer metrics.
- Learn and apply coding standards and best practices through code reviews, developing maintainable and extensible code with guidance. Utilize debugging tools to proactively and reactively address issues in product features, ensuring code quality and reliability.
- Support the identification of dependencies and design documentation for product features, learn about system interactions and back-end dependencies, and contribute to architectural processes under guidance. Produce code to test hypotheses for technical solutions and assist with technical validation efforts. Collaborate on quality assurance plans, augment test cases, and integrate automation into testing, while understanding the implications of security and compliance in system architecture.
- Contribute to data analysis and feedback integration for product engineering decisions, acting as a Designated Responsible Individual (DRI) for monitoring and restoring system functionality within Service Level Agreement (SLA) timeframe. Participate in live service operations, and support telemetry data integration for system behavior insights, with a focus on performance, reliability, and safety.
- Develop and apply best practices for reliable code building, understand global and local regulations, customer scaling requirements, and support communication with key partners across Microsoft for user experience enhancement and partner needs.
- Ensure compliance with security, privacy, safety, and accessibility standards, leverage developer tools for code creation and debugging, contribute to automation in production and deployment, and proactively seek knowledge to improve product availability, reliability, efficiency, and performance at scale.
:::
### [Amazon Software Development Engineer, eero](https://www.amazon.jobs/en/jobs/2832459/software-development-engineer-eero)
::: spoiler
- Qualifications
- Basic
- 3+ years developing production software for networking/internet technologies on consumer or enterprise products
- 3+ years of professional software development experience
- 3+ years writing production quality code in C/C++/Go/Python
- 3+ years of experience contributing to the architecture and design (architecture, design patterns, reliability and scaling) of new and current systems
- Deep hands-on technical expertise especially with Linux, embedded networking, and internet technologies like DNS, IPv6, DHCP, firewalls.
- Preferred
- Excellent written and verbal communication skills with the ability to present complex technical information in a clear and concise manner to a variety of audiences
- Experience working across timezones as a remote office.
- Experience designing large software systems based on embedded Linux
- Experience designing software architectures for scalability, reliability, and performance
- Experience with the Github, JIRA, Jenkins and Yocto build system
- Responsibilities
- Enhance the user experiences for eero's whole home connectivity products
- Dive deep into embedded system internals
- Design and implement embedded networking features
- Work with core operating system, mobile and cloud teams to deliver features
- Participate in architecting features and tackling intricate debugging across various teams.
- Hands-on involvement in the entire networking stack, showcasing technical expertise and problem-solving skills
- Collaborate with internal hardware and testing teams to develop and refine WiFi systems.
- Interface with external vendors to address challenges and ensure integration of their solutions
- Coordinate with global teams, adapting to different time zones and cultures to maintain project alignment
- Provide technical guidance and mentorship to junior engineers
:::
## [Amazon Cloud Support Engineer - Databases](https://www.amazon.jobs/en/jobs/2789802/cloud-support-engineer-databases)
::: spoiler
- Qualifications
- Basic
- Excellent language fluency in Mandarin
- Experience in database administration, Structured Query Language (SQL), performing basic optimization and general troubleshooting in any relational database (MySQL, PostgreSQL, Oracle, SQLServer)
- Knowledge of HA & DR topologies for databases
- Understanding of security best practices
- Linux administration and unix shell script expertise
- Prefered
- Coding/scripting ability in one of: Python, Java, C/C++, C#, Javascript, Go, Ruby, Rust, Perl, PHP
- Database migration and ETL experience
- Knowledge of OS, file system and networking related issues that affect database operation
- Experience with NoSQL technologies like DynamoDB, Redis, MongoDB
- Knowledge of AWS and Cloud Computing concepts
- Ability to lead technical discussions and engage with customers
- Bachelor's degree in a Computer Science/Technology/Engineering/Mathematics related field, or equivalent experience in a technical position
- Responsibilities
- As a Cloud Support Engineer at AWS, the world’s most comprehensive and broadly adopted cloud platform, you will use your engineering expertise and skills to provide high quality technical solutions that help customers achieve their business goals. You dive deep into complex questions to find the root cause and ensure the customer’s specific requirements are fulfilled. Customers consult you about their plans and problems through various contact channels including telephone, email, and web/live chat. You listen carefully to fully understand each customer’s concerns and requirements. You guide customers by sharing facts that are backed by your troubleshooting findings and log data.
- You will have the opportunity to deepen and broaden your technical expertise, engage with a wide range of customers from the smallest startups to the largest enterprises, and enjoy work-life balance.
- You’ll frequently co-work with Technical Account Managers, Solution Architects, and Business Development Managers to ensure solution alignment and excellent customer experience. You engage with subject matter expects and AWS service development teams across the world when needed. Every day will bring exciting challenges and include learning new skills. Mentorship and coaching are very important at AWS - Experienced Amazonians are on-hand to mentor you throughout your career at AWS. Support Engineers have the opportunity and resources to become certified subject matter experts. As you grow at AWS, there are various opportunities, including joining AWS teams abroad.
- Apart from working on a broad spectrum of technical issues, Support Engineers may also develop & host training, create technical articles, star in how-to videos, present at AWS events, participate in new hiring, write tools/scripts, or work with leadership on process improvement and strategic initiatives. At AWS, your contributions can bring significant positive impact to colleagues and customers globally.
- Your work-life balance is important. We focus on productivity and flexibility at work. We operate on a follow-the-sun model - we work in the daytime or early evening, and handover to other Support Engineering sites during the night. Some weeks are staggered, which means your working days may be either Sunday-Thursday, Monday-Friday, or Tuesday-Saturday.
- Engineers usually rotate between shift times and staggered weeks. Support Engineers have transparent work schedules, and do not need to join on-call rotations, or on-site customer meetings.
:::
## 自我評估
### 以上職缺所需能力
1. 學/碩士以上的 CS/EE 或相關科系
2. 基本程式語言能力(C/C++, Python, JavaScript)
3. Database相關的背景知識
4. 對現有或新的系統架構有開發經驗
5. 對於 Linux, embedded networking, internet technologies(DNS, IPv6, DHCP, firewalls) 有實作經驗
6. 具有產品開發經驗
### 缺乏的能力
1. 大型資料庫的開發
2. 資料庫資料轉移
3. 系統架構的開發
4. 嵌入式系統的設計
5. 實際產品生命週期的經驗
## [Resume](https://drive.google.com/file/d/1ZP0FcmYT7w-kCIacL0nikPV0KQDucULk/view?usp=sharing)
## 模擬面試
:mouse: : Interviewer
:cat: : Interviewee
### Coding
:mouse: : 給你兩個整數 n 和 k,幫我找到 n 的因數在遞增排列下的第 k 個因數為何,其中因數的定義為 n%i == 0 則 i 為 n 的因數
:cat: : 想要請問 n 和 k 的範圍各自為多少,如果 k 超過 n 的因數個數要回傳什麼 ?
:mouse: : 1 <= n, k <= 1000 ,如果超過則回傳 -1 即可
:cat: : 我需針對正整數 n 找到其第 k 個由小排至大的因數,所以我想要用一個 for 迴圈由 1 開始逐一尋找是否為 n 的因數,並且設置一個變數紀錄現在已經找到幾個因數,如果找到的數量等於 k 則回傳,若超過則回傳 -1
```clike=
int kthFactor(int n, int k) {
int res = n;
int kth = k;
int count = 0;
for(int i=1;i<=n;i++){
if(k==0){
return res;
}
if(n%i==0){
k--;
count++;
res = i;
}
}
if(count<kth){
return -1;
}else{
return res;
}
}
```
:cat: : 所以我們可以拿 n = 12, k = 3 來輸入,已知因數有 [1, 2, 3, 4, 6, 12] 所以 for 迴圈會不斷執行,當 i 遇到 1 和 2 時 count 會加一,遇到 3 也會,此時的變數 k 已經歸零表示找到第 k 個則直接回傳 res
### Behavioral Question
:mouse: : 你如何在高壓力的環境下調適 ?
:cat: : 我認為我可以在時間緊迫、工作量龐大的情況下保持投入,只要確保有固定的睡眠以及正常的飲食就沒問題。以前高中時曾經身為社團的社長管理組織中的大小事以及兼顧課業在全校前20名,每周除了上課時間之外,不是在管理社團就是在補習班繼續增進自身能力。所以我認為我有能力在一定程度的壓力下成功的解決問題並改善現況。
:mouse: : 舉出一個你失敗的經歷以及你如何處理該情況?
:cat: : 之前在與同學開發期末專案時,我們為了實現物理現象而撰寫了一隻程式,可是模擬的結果與我們預期的不相符,為了 debug 找了將近一個晚上,讓專案的進度稍微延宕,事後才發現不是其他程式的問題,是在查詢物理公式的文獻上沒有確認清楚,導致結果理所當然的不一致。於是,我從中學習到,雖然身為一個工程師,但問題並非只會出現在我們的專業領域,我應當更全面的去思考這個專案會遇到的問題,並非由我自身的角度出發。
### 參考資料
- [0到100的軟體工程師面試之路系列 第 26 篇](https://ithelp.ithome.com.tw/articles/10307128)
- [AmazonJobs](https://www.amazon.jobs/en/landing_pages/in-person-interview)
- [拿到 Google & Amazon Offer 的面試之旅](https://arthur-lin.medium.com/%E6%8B%BF%E5%88%B0-google-amazon-offer-%E7%9A%84%E9%9D%A2%E8%A9%A6%E4%B9%8B%E6%97%85-%E4%B8%80-48a8693d34f1)