# 2024 資訊科技產業專案設計課程作業 3
[Resume](https://drive.google.com/file/d/1kGd-giIfr2dSlgh-9uVuvdqAYodrG5FV/view?usp=sharing)
## [Google_Software Engineer, University Graduate, 2025](https://www.google.com/about/careers/applications/jobs/results/137721392706527942-software-engineer-university-graduate-2025?q=%22Software%20Engineer%22&location=Taiwan&src=Online/House%20Ads/BKWS_LOC5&gad_source=1&gbraid=0AAAAA-TINRHMhVpqithGicLhpq9lbbtig&gclid=Cj0KCQiAi_G5BhDXARIsAN5SX7qw-1JwBhDZFeR3uXFZabahTNQq6Wu2qDZVBNb5Pb5VIEMbq94RXBIaAv2SEALw_wcB)
:::spoiler **JD**
**Minimum qualifications:**
Bachelor's degree in Computer Science, related technical field, or equivalent practical experience.
Experience in computer science, data structures, algorithms, and software design.
Experience in Software Development and coding in a general purpose programming language.
**Preferred qualifications:**
Master's degree or PhD in Computer Science or a related technical field.
Experience programming in C, C++, Java, or Python.
Experience with Unix/Linux or Windows environments, distributed systems, machine learning, information retrieval, and TCP/IP.
**About the job:**
Google's software engineers develop the next-generation technologies that change how billions of users connect, explore, and interact with information and one another. Our products need to handle information ==at massive scale==, and extend well beyond web search. We're looking for engineers who ==bring fresh ideas from all areas, including information retrieval, distributed computing, large-scale system design, networking and data storage, security, artificial intelligence, natural language processing, UI design and mobile;== the list goes on and is growing every day. As a software engineer, you will work on a specific project critical to Google’s needs with opportunities to switch teams and projects as you and our fast-paced business grow and evolve. We need our engineers to be versatile, ==display leadership qualities== and be enthusiastic to take on ==new problems across the full-stack== as we continue to push technology forward.
As a key member of a small and versatile team, you ==design, test, deploy and maintain software solutions.==
Due to business needs, we are prioritizing candidates that are available to start this position before the end of 2025. This role is eligible for visa sponsorship.
Google is an engineering company at heart. We hire people with a broad set of technical skills who are ready to take on some of technology's greatest challenges and make an impact on users around the world. At Google, engineers not only revolutionize search, they routinely work on 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:**
Build our platforms, systems, and networking infrastructure using experience with distributed systems, OS/kernel, network system design, and large-scale storage systems.
Build internal systems used by Googlers globally.
Mitigate reliability failures in a component or system.
Create and support a productive and innovative team, including working with peers, managers, and teams.
:::
### 上述職缺所需能力
1. CS學士
2. C, C++, Java, or Python任一語言
3. 分散式系統、OS/kernel、網路系統設計及大規模儲存系統經驗
### 自己在專業上匹配的程度
#### 優勢
1. 熟悉C、python
2. 具備演算法、資料結構、OS、網路等基礎專業知識
3. 修過機器學習相關的課
4. 曾參與多人共同開發專案,有後端開發(資料檢索功能)的經驗
#### 改進的地方
1. 無分散式系統、OS/kernel、大規模儲存系統、網路系統設計相關經驗
#### 相關資料
[GlassDoor_Google New Grad Software Engineer interview questions](https://www.glassdoor.com/Interview/Google-New-Grad-Software-Engineer-Interview-Questions-EI_IE9079.0,6_KO7,33.htm)
[Google resume tips and advice](https://www.youtube.com/watch?v=Y4BOxzE7fHw)
[資訊檢索導論 (Introduction to Information Retrieval) Autumn 2021](https://hackmd.io/@NCHU-CSE-111/SJNnFru7K)
## [Nvidia_System Software Engineer - GPU and SOC - Taipei](https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite/details/System-Software-Engineer---GPU-and-SOC_JR1988550?q=System%20Software%20Engineer%20-%20GPU%20and%20SOC&locations=91336993fab910af6d6f5eaae3acc14e&locationHierarchy1=2fcb99c455831013ea52ed162d4932c0)
:::spoiler **JD**
NVIDIA is searching for a highly motivated, creative engineer to join the GPU Software team. As a GPU/SOC system software engineer, you will work with a team of very talented software and hardware engineers involving a wide variety of technologies. As someone who is hardworking and passionate about their work, you will craft and debug key aspects of our production GPU and SOC kernel drivers and embedded SW, focusing on platform performance, power savings, and robustness. You should demonstrate the ability to excel in an environment with intricate system level interactions.
**What you'll be doing:**
- Design and implement software features and debug software changes in NVIDIA software stack, with ==focus on kernel-mode software==, to take the latest cutting-edge NVIDIA GPUs from design / development to production for a wide spectrum of users including scientific visualization, game enthusiasts, educational institutions, and Windows notebook users.
- You will follow the devices all the way through the development process to datacenter systems, customer desktops, notebooks, workstations, and gaming console products that are used throughout the world.
- Be heavily involved in architecture definition, emulation, bring-up, and product hardening required to create our groundbreaking products
- Multiple opportunities to collaborate and communicate effectively with teams from all around the globe
**What we need to see:**
- BS or MS degree in Computer Engineering, Computer Science, or equivalent experience
- 3+ years of meaningful software development experience
- Background in solving problems that apply to large complex systems deployed at scale.
- ==Strong C/C++ programming skills==as well as having shown initiative in pursuing independent coding projects
- Familiarity with ==computer system architecture==, microprocessor, and microcontroller fundamentals (caches, buses, memory controllers, DMA, etc.)
- Strong Operating systems fundamentals with ==Kernel experience on Windows or Linux systems==
**Ways to stand out from the crowd:**
- Background and strength with sophisticated system-level debugging is invaluable
- Windows Driver Models, with WDDM or MCDM a strong plus.
- Experience working on system level reliability and resiliency features.
- Familiarity with ==system level security concepts==
- Experience with embedded system SW concepts.
:::
### 上述職缺所需能力
1. CS學士
2. 三年以上的程式開發經驗
3. 精熟C/C++
4. 熟悉電腦系統架構、微處理器、微控制器的基礎(caches, buses, memory controllers, DMA, etc.)
5. 熟悉作業系統基礎知識,並有Kernel相關經驗(windows or Linux systems)
### 自己在專業上匹配的程度
#### 優勢
1. 具備基礎c programming能力
2. 修過微處理器及作業系統相關課程
#### 改進的地方
1. 未有多年程式開發經驗
3. 未有開發及kernel相關經驗
#### 相關資料
[Glassdoor](https://www.glassdoor.com/Interview/NVIDIA-Taipei-Interview-Questions-EI_IE7633.0,6_IL.7,13_IC3271041.htm)
[0到100的軟體工程師面試之路](https://ithelp.ithome.com.tw/articles/10307673)
## [Amazon_Software Development Engineer, eero](https://www.amazon.jobs/en/jobs/2832459/software-development-engineer-eero)
:::spoiler **JD**
**DESCRIPTION**
WiFi has become a critical component to every home worldwide. eero, an Amazon Company, is the first product to deliver a whole home WiFi experience using mesh technology to make sure you never have to worry about connectivity ever again. We believe customers' deserve the best connectivity and smart home experience possible. To find out more about eero, please checkout eero.com.
The Connectivity team at eero is looking for an experienced senior engineer for our device software team located in Taipei. This team will be ==collaborating closely with the existing device software teams located in San Francisco, California.== A Senior Systems Software Engineer architects, designs and develops features and applications on eero's operating system - eeroOS. They continually strive to innovate and raise the bar for Operational Excellence across the rapidly growing fleet of eero devices. They create customer value by developing cutting edge features working acro s cross-functional Mobile, Cloud and Data teams.
This is a fantastic opportunity to have a significant impact on all aspects of a new product while working to build a world-class company that embodies great design, attention to detail, technological innovation, and quality.
**Key job 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
**A day in the life**
eero is a small and lean team. This means you'll enjoy an outsized impact and the benefit of having many different responsibilities. All within a day you’ll architect, design and develop features and applications on eero's operating system - eeroOS. You’ll work across Engineering, Product and CX teams to architect and define new, or improve existing customer/product features. You’ll design and implement code, test, deploy and maintain these across the eero fleet of devices.
You will have flexibility on exactly what your day to day will look like. We work hard for our customers – people all around the world. You will take on the challenges and responsibilities to help deliver new products and features, continually strive to innovate and raise the bar for Operational Excellence across the rapidly growing fleet of eero devices and create customer value by developing cutting edge features working across cross-functional Mobile, Cloud and Data teams.
**About the team**
We are an energetic team that takes on any responsibility to help deliver for our customers. While we are delivering results, we are having fun.
Our mission is to deliver the best connectivity experience to customers around the world. Our team owns new products and features that get delivered to these customers.
We focus on customer satisfaction but also care about your career development. Joining us and growing up together!
**BASIC QUALIFICATIONS**
- 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 QUALIFICATIONS**
- 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
:::
### 上述職缺所需能力
1. 具有三年以上開發及程式設計經驗(C/C++/Go/Python)
2. 具有基於embedded Linux的大型軟體系統設計能力
3. 具有三年以上針對消費者或企業產品,開發網路技術相關軟體的經驗
4. 具備設計軟體架構以實現擴展性、可靠性和性能最佳化的經驗
5. 熟悉專案管理工具(Github, JIRA, Jenkins and Yocto)
### 自己在專業上匹配的程度
#### 優勢
1. 具備C/Python開發經驗
3. 有多人專案協作經驗,熟悉Git/Github
#### 改進的地方
1. 程式開發經驗不足
2. 未有大型系統設計經驗
#### 面試資訊
[Amazon_Prepare for your interview](https://www.amazon.jobs/en/landing_pages/in-person-interview)
## 面試模擬
### coding interview
[98. Validate Binary Search Tree](https://leetcode.com/problems/validate-binary-search-tree/description/?envType=study-plan-v2&envId=top-interview-150)
:::spoiler **題目敘述**
Given the root of a binary tree, determine if it is a valid binary search tree (BST).
A valid BST is defined as follows:
The left subtree of a node contains only nodes with keys less than the node's key.
The right subtree of a node contains only nodes with keys greater than the node's key.
Both the left and right subtrees must also be binary search trees.
:::
#### 模擬面試
>👨 interviewer
>🗣️ interviewee
👨 在電腦系統中,許多資源是具有層級關係的。所以今天要請你設計一個function,用來檢測這些資料是否符合正確的對應關係,你需要確保每個節點負責的範圍互不重疊且按序排列,結構中每個子樹都滿足關係:k的左節點 < 節點k < k的右節點
🗣️ 好,所以我會需要檢查一個樹的結構是否符合要求,條件是每個子樹都要符合左子樹<父節點<右子樹的要求。
舉例來說:
Input: root = [5,1,4,null,null,3,6]
Output: false
因為1<5但4小於5,所以不符合要求,要回傳false,請問這樣正確嗎?
👨 沒錯。
🗣️ 但在開始之前,我想先請問資料量以及單筆資料的範圍
👨 節點數量會低於10^4^,且至少有一個節點,大小會在正負2^31內
🗣️ 那我想會用recursive的方式來檢查所有結構,每次遞迴會檢查是否符合條件
```c=
bool judge(struct TreeNode* root,long min,long max) {
if(!root){
return true;
}
if((root->val>=max)||(root->val<=min)){
return false;
}
return judge(root->left,min,root->val)&&judge(root->right,root->val,max);
}
bool isValid(struct TreeNode* root) {
return judge(root,LONG_MIN,LONG_MAX);
}
```
假設我們今天的輸入會是[5,1,4,null,null,3,6],因為root->val在右遞迴中會符合root->val>=max,所以會return false,所以最後會回傳false
### behavial question
👨 請你分享一個曾經與人意見不同/分歧的經驗?說說看你當時遇到的問題,以及你的做法和結果?
🗣️ 大二時,我參與社群活動,並在一次宣傳工作時,針對拍攝方案和隊友產生了分歧,為此,雙方進行了多次的溝通與協調,各自分析了雙方的優缺點,並且最終選擇了最終選擇了折衷的方案。
這件事讓我了解到傾聽的重要性,透過聆聽不同的想法,了解不同角色各自的困難點和顧慮,充足的討論不僅能促進團隊的凝聚力,也能提升彼此間的信任和理解,讓未來的合作更加順暢。
👨 請分享一個你參與團隊的經驗,這樣的經驗帶給你怎樣的成長和啟發?
🗣️ 第一次參加黑客松的活動經驗讓我印象深刻,活動最後我們隊伍並沒有成功的完成作品。
首先是時間規劃上的問題,因為我們花了一半以上的時間在發想,所以規劃了很多可以實現的功能,最後卻沒有足夠的時間完成,其次是我自己在實作的過程中遇到瓶頸,當功能不符合預期的時候,我沒有選擇跟隊友一起討論,而是自己卡了很久很久,導致專案進度延宕,最後經過隊友提醒才發現,其實有其他方法可以達成目標,那次的經驗讓我了解到時間規劃對於專案進行的重要性,以及在團隊合作中,懂得適時的求助才能真正發揮合作的力量。