---
# System prepended metadata

title: 資訊科技產業專案設計課程 作業3
tags: [資訊科技產業專案設計]

---

---
###### tags: `資訊科技產業專案設計`
---
# 資訊科技產業專案設計課程 作業3
> 貢獻者: 霸佛羅 Buffalo


## 工作職缺
### Google: [Software Engineering Intern, Summer 2023](https://careers.google.com/jobs/results/116520572231262918/)
> #### **Qualification**
> Minimum qualifications:
>
>- Currently pursuing a Bachelor's, Master's, or PhD in Computer Science or a related technical field.
>- Experience with Data Structures or Algorithms.
>
> Preferred qualifications:
>
>- Currently enrolled in a full-time degree program, and returning to the program after the completion of the internship.
>- Experience with Unix/Linux, Machine Learning, Tensorflow, or embedded systems.
>- Experience programming in one of the following language: C, C++, Java, Python, etc.

> #### **Job Description**
> We encourage applicants to apply as soon as possible as, we might close the application in advance according to application and hiring status, so we encourage applicants to apply earlier. Our team will review applications on a rolling basis and it’s in your best interests to apply early. Thank you for your patience while we consider your application.
> > Apply ASAP.
>
>Software Engineering Interns at Google are researchers and developers who create and implement complex computer science solutions. Our engineers develop scalable, distributed software systems and also collaborate on multitudes of smaller projects that have universal appeal - this requires research, awareness, interactivity, and the ability to ask the right questions.
>
>You'll develop effective competencies in data structures and algorithms, along with a technical fascination for how stuff fits together. We focus on being a collaborative, global organization consisting of engineers with the technical depth, programming skills, and attention to detail. In this role, you will work on our core products and services as well as those which support critical functions of our engineering operations.
>> This is a really good opportunity.
>
>Depending on your background and experience, you will be working in one of the following areas:
>
>==Product and Systems Development==: Whether it's finding innovative ways to advance search quality, building computing platforms and networking technologies, automating the indexing of videos, or continuing to refine and scale complex auction systems, you will be developing solutions to challenging technical problems out there. You will research, conceive, and develop software applications to extend and improve on Google's product offerings and collaborate on scalability issues involving access to data and information.
>> 【Product and Systems Development】
>> 
>> What
>> - find innovative ways to advance search quality
>> - build computing platforms and networking technologies
>> - automate the indexing of videos
>> - countinue to refine and scale complex auction systems
>> 
>> How
>> - research, conceive, and develop software applications to extend and improve on Google’s product offerings
>> - collaborate on scalability issues involving access to data and information
>
>As a Software Engineer in the ==Engineering Productivity organization==, you'll use your software design, analysis, and programming skills to create innovative automated test systems. The test team undertakes a broad range of challenges on a daily basis, designing and building intelligent systems that can explore various use cases and scenarios for distributed computing infrastructure.
>> [【Engineering Productivity organization】](https://landing.google.com/engprod/)
>>
>> What
>> - create innovative automated test systems
>> 
>> How
>> - by using software design, analysis, and programming skills
>
>Google is and always will be an engineering company. We hire people with a broad set of technical skills who are ready to address some of technology's greatest challenges and make an impact on millions, if not billions, of users. At Google, engineers not only revolutionize search, they routinely work on massive scalability and storage solutions, large-scale applications and entirely new platforms for developers around the world. From Google Ads to Chrome, Android to YouTube, Social to Local, Google engineers are changing the world one technological achievement after another.

> #### **Responsibilities**
>Apply knowledge gained in computer science courses to real-world problems.
Analyze information and evaluate results to choose the best solution to effectively solve problems.
Develop scripts to automate routine tasks.
Create and support a productive and innovative team, including working with peers, managers, and teams.

### Google: [Software Engineering Intern, MS, Summer 2023(USA)](https://careers.google.com/jobs/results/112466529246683846-software-engineering-intern-ms-summer-2023/?distance=50&location=San%20Francisco,%20CA,%20USA&q=Software%20Engineer%20intern)
:::spoiler Qualifications
Minimum qualifications:

Pursuing a Master's degree program or post secondary or training experience with a focus on subjects in software development or other technical related field.
Experience in Software Development and coding in a general purpose programming language.
 Experience coding in two or more of the following: C, C++, Java, JavaScript, Python, or etc.
 
Preferred qualifications:
Currently attending a degree program in the US and available to work full time for a minimum of 12 weeks outside of university term time.
Anticipated graduation by December 2023 or returning to a degree program after completion of the internship.
Experience with data structures or algorithms.
Experience with web application development, Unix/Linux environments, mobile application development, distributed and parallel systems, machine learning, information retrieval, natural language processing, networking, developing large software systems, or security software development.
Experience programming in three or more of C, C++, C#, Java, JavaScript, Go, Python, or similar.
Ability to speak and write in English fluently.
:::

:::spoiler About the job

Join us for a 12-14 week paid internship that offers personal and professional development, an executive speaker series, and community-building. The Software Engineering Internship program will give you an opportunity to work on complex computer science solutions, develop scalable, distributed software systems, and also collaborate on multitudes of smaller projects that have universal appeal.

We offer a range of internships in either Software Engineering or Site-Reliability Engineering across North America, including the US and Canada. Our recruitment team will determine where you fit best based on your resume.

Software Engineering Intern:
As a key member of a versatile team, you will work on a specific project critical to Google’s needs. We need our engineers to be versatile in addressing new problems as we continue to push technology forward. You will design, test, deploy and maintain software solutions as you grow and evolve during your internship.

Site Reliability Intern:
Our engineers create, fix, extend and scale the code to keep it working and to harden it against all the bad actors of the internet. We drive reliability and performance on a massive scale. You will work on software development projects to keep important business growth-critical systems up and running, from code-level troubleshooting of traffic anomalies to maintenance of our services, from monitoring and alerts to building automation infrastructure.

Google is and always will be an engineering company. We hire people with a broad set of technical skills who are ready to address some of technology's greatest challenges and make an impact on millions, if not billions, of users. At Google, engineers not only revolutionize search, they routinely work on massive scalability and storage solutions, large-scale applications and entirely new platforms for developers around the world. From Google Ads to Chrome, Android to YouTube, Social to Local, Google engineers are changing the world one technological achievement after another.


The US base salary range for this full-time position is $95,000-$113,000. Our salary ranges are determined by role, level, and location. The range displayed on each job posting reflects the minimum and maximum target for new hire salaries for the position across all US locations. Within the range, individual pay is determined by work location and additional factors, including job-related skills, experience, and relevant education or training. Your recruiter can share more about the specific salary range for your preferred location during the hiring process.

Please note that the compensation details listed in US role postings reflect the base salary only, and do not include bonus, equity, or benefits.
:::

:::spoiler Responsibilities
Create and support a productive and innovative team, including working with peers, managers, and teams.
Develop scripts to automate routine tasks.
Analyze information and evaluate results to choose the best solution to effectively solve problems.
Apply knowledge gained in computer science courses to real world problems.
:::


### Amazon: [Software Development Engineer Intern, IOT Lab, AWS](https://www.amazon.jobs/en/jobs/2285564/software-development-engineer-intern-iot-lab-aws)
:::spoiler Description

Job summary
We are looking for a passionate, hard-working, and talented Software Development Engineer who can build innovative & mission critical system software applications & tools. You will have an enormous opportunity to make a large impact on the design, architecture, and development of consumer products. You will be responsible for delivery and support of large-scale, multi-tiered, distributed software applications and tools.
:::
:::spoiler 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.
:::

:::spoiler Qualification

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
:::


## 考量自身能力與其職缺相符的程度
現階段相符的程度：
- 撰寫過 C, C++, python
- 有 machine Learning 相關經驗
    - 具有實作 ML/DL 相關經驗(VGG19, SIFT)
    - 具有實作 CV 相關經驗 (Image smoothing, Edge detection, Image transformation)
- **[Confuse]** "returning to the program after the completion" 如果剛畢業計畫於年底申請國外研究所，須為此延畢一學期嗎

不足的地方：
- Leetcode 準備 <50 題。(優先練熟 [Blind 75](https://neetcode.io/practice))
- 無 Unix/Linux 經驗。(下學期欲修)
- OOD 尚須複習。
(資源: [Grokking the Object Oriented Design Interview](https://www.educative.io/courses/grokking-the-object-oriented-design-interview?aff=BYPD))



## 面試階段(以Google、Amazon為主)
1. Phone Screen (15~30 min):聊過去經歷、外來追求的職涯發展 match 想申請的 role
2. Online Assessment (60~90 min)
- 基本程式語言的掌握度
- 解決問題的思路
- Coding Style
- 掌握 Corner Case
3. 電話面試 (45~60 min): 老師上課模擬的東西
4. On-site (一整天，以Google為例: 早上下午各兩場會議+午餐面試)

## 面試題目

> 😈：interviewer 🤓：interviewee 


😈：你好，我是今天面試的面試官，請先你簡短的簡介一下你嗎?
🤓：你好我是XXX，目前就讀成功大學物理雙主資工四年級，於求學過程中，發現自己很享受在解決問題、團隊合作、與和不同的人交流。目前在做關於 DL/CV 的專題，正在學習這方面的知識與累積相關經驗，並想藉由此專題與生活結合。關於未來，有計畫想去美國讀 CS MS，希望能挑戰自己並創造出更多可能性。

😈：那請你簡單說明一下，為何會想選擇我們及為甚麼這份工作呢
🤓：主要有三個原因： 第一，由於Google是一個具有深度技術的並且多元公司，很期待在裡面跟各式不同的夥伴一起面對挑戰，並且快速成長與學習; 第二，除了本身的學習經歷外，覺得軟體是 high impact, scalable, 跟 accessible 的科技，希望藉由自身所學解決現實中的問題，因此也很期待能在這份工作中迎接不同的挑戰; 第三，有跟幾位曾待在 Google 的同學及老師聊過，發現他們都很期待每天的工作，很嚮往這樣的工作文化、及氣氛

😈：有看到你履歷上面有電腦視覺的專題，可以請你介紹一下嗎?
🤓：這個專題是從我自身的痛點出發，希望藉由這個專題能輔助足球員射門訓練。此專題主要用到兩個技術，一個是 Yolo V7，負責追蹤球，能記錄球的落點，另一個是 Openpose，負責追蹤身體骨架，用來紀錄姿勢並且嘗試加以修正

😈：那在這個專題中你遇到最大的困難是甚麼呢?
🤓：追蹤球的部分如果球速過快，太模糊以至於會偵測不到，因此我們就要自己 train 自己的 model，用自己影片將模糊的球做 label

😈：那在訓練模型的時候怎麼確認訓練出來的模型是有效的?
🤓：會把Dataset分成三個部分training set, validation set, testing set，只有Training set會參與訓練，validation set用來觀察模型是否overfitting，testing set用來測試模型的準確度，前兩者要能一起收斂，才會讓testing set的部分測試模型的準度，大致上就是遵循上述流程


😈： 你對 AI 的理解是甚麼呢? 可以列舉一下在生活上的例子嗎?
🤓： AI 目的是創造可以模仿人類行為以解決複雜問題、或是自動化日常工作。生活應用的部分像是 google 的搜尋引擎、影像辨識、語音處理、電子郵件分類為垃圾郵件、Google Home Specker 等等

😈： AI、ML、DL有甚麼區別嗎?
🤓：機器學習是人工智慧的子集合，簡單說就是從資料中學習模型，ML的結構是：資料→特徵擷取→模型→答案，而深度學習是捨去人類知識作的特徵萃取，從大量的資料中讓多層結構的神經網路自己從資料中學習這組資料可以做什麼樣的特徵擷取，DL的結構是：資料→模型(特徵擷取自學)→答案



#### 相關準備資源:
- [Google software engineer interview: the only post you'll need to read](https://igotanoffer.com/blogs/tech/google-software-engineer-interview)
- [Google Online Assessment Questions](https://leetcode.com/discuss/interview-question/352460/Google-Online-Assessment-Questions)
- [Google Interview Tips + FAQs Answered + Resources](https://leetcode.com/discuss/career/449744/Google-Interview-Tips-%2B-FAQs-Answered-%2B-Resources)
- [C/C++ - 常見 C 語言觀念題目總整理（適合考試和面試）](https://mropengate.blogspot.com/2017/08/cc-c.html)
- [What Is Googleyness & How to Show It in Interviews](https://www.cakeresume.com/resources/all-about-googleyness)
- [Top 50 Google ML kit interview questions and answers](https://www.devopsschool.com/blog/top-50-google-ml-kit-questions-and-answers/)

