# 「資訊科技產業專案設計」課程第3次作業
## 職缺探索
### [Google Software Engineer](https://www.google.com/about/careers/applications/jobs/results/137721392706527942-software-engineer-university-graduate-2025)
:::spoiler JD
- Minimum qualifications:
1. Bachelor's degree in Computer Science, related technical field, or equivalent practical experience.
2. Experience in computer science, data structures, algorithms, and software design.
3. Experience in Software Development and coding in a general purpose programming language.
- Preferred qualifications:
1. Master's degree or PhD in Computer Science or a related technical field.
2. Experience programming in C, C++, Java, or Python.
3. Experience with Unix/Linux or Windows environments, distributed systems, machine learning, information retrieval, and TCP/IP.
:::
#### 自身評估
:::success
- 具有分散式系統相關知識與經驗
:::
:::danger
- TCP/IP 僅有理論知識,無開發經驗
- 無大型系統開發經驗
:::
### [瑞昱 資訊系統研發工程師](https://recruit.realtek.com/Job/JobDetail?jobid=1545)
:::spoiler JD
- 工作經驗 : 0 年
- 學歷要求 : 碩士
- 工作項目:
1. Develop and maintain IT systems(e.g. PLM, SCM and MES).
2. Execute projects to realize user and IT requests.
3. Survey and introduce new IT solutions.
- 應徵條件:
1. Master degree majoring in IT, CE, CS or related major.
2. Familiar with Python/C#/JAVA programming and SQL skill.
3. Familiar with web application development.
4. Experience with PLM, SCM and MES is a plus.
5. Good accountability and communication.
:::
#### 自身評估
:::success
- 具有後端開發與SQL使用能力
- 具有網站開發經驗
:::
:::danger
- 對於 PLM, SCM 等無實際經驗
:::
### [群暉 Software Developer](https://career.synology.com/zh-tw/HQ/position/45)
:::spoiler JD
### 部門介紹
資訊管理部門的系統開發小組以開發各式各樣的 Web Application 為主要任務,對外達到增加營收及產品曝光度,對內則增加同仁工作效率為目標
我們重視並希望透過這些系統提供給使用者流暢的體驗,使我們能在市場中脫穎而出
### 職務說明
此職務為公司各類服務面向開發系統,包含但不限於以下這些項目:客戶關係管理系統、內容管理系統、金流付費串接、人力資源系統、生產管理與訂單物流系統等。需與 PM、前端工程師、設計師及需求單位進行跨部門溝通合作
您將與我們共同開發出高可用性、高擴展性且易於維護的服務,同時確保系統和資料的安全性
我們正在尋找能夠從不同領域引入新想法的工程師,擴大我們的開發團隊以打造更完善的系統服務
你將協助我們:
- 以 OOP 和 MVC 概念來設計和開發與使用者互動的響應式網站服務
- 獨立使用後端框架開發系統,並規劃及實作 Database Schema 和 RESTful APIs
- 與 DevOps 討論系統架構,並協助佈署和上線系統
- 與 QA 合作系統 debug 並修復問題
- 開發和維護能重複利用的開發模組
### 職務需求
我們期待你具備:
- 熟悉 PHP 或至少一種 OO 語言
- 熟悉 MySQL 或至少一種資料庫
- 獨立開發網站的能力, 會使用 MVC 架構或相關 framework
- 與前端工程師討論 API 串接格式之實作經驗
- Git 版本控制系統使用經驗
- 個性認真、配合度高、溝通能力佳、企圖心強,並有強烈學習意願
### 加分條件
- 熟悉 PHP (Laravel)
- 熟悉 PostgreSQL
- 有雲端服務 AWS/Azure/GCP 佈署系統經驗
- 有網站前端的開發知識
- 熟悉前端框架及 SPA 開發流程等
- 熟悉串接金流功能者 (E.g. Stripe, Paypal)
:::
#### 自身評估
:::success
- 有 RESTful API 開發經驗
- 具有 DB 使用能力
:::
:::danger
- 無 SPA 開發經驗
- 無串接金流經驗
:::
## 面試問答
> 🤴🏻 : interviewer
> 👳🏻♀️ : interviewee
🤴🏻 : 請解釋一下 OO language 中,inherit 與 interface 的區別
👳🏻♀️ : inherit 指的是物件之間的關係。例如說 `Dog` 是一種 `Animal`,`Cat` 也是一種 `Animal`。兩種動物雖然不同,但都需要 `Animal.age` 這個屬性,所以兩者會 inherit `Animal`,讓他們擁有相同的屬性,而不需要 `Dog` 與 `Cat` 都重寫 `age` 在各自的 object 中。
interface 指的則是物件的行為。例如說 `Bird` is `Flyable`,`Dog` is not `Flyable`,所以 `Bird` 就會 implement `Flyable`。而 interface 只會定義需要 implement 的 method,而不會實作,換句話說,`Bird` 會在自己的 object 內實作 `Flyable` 所定義的相關 method。
🤴🏻 : 請簡單解釋一下分散式系統中的 CAP theorem
👳🏻♀️ : CAP 分別對應了「一致性(**C**onsistency)」、「可用性(**A**vailability)」、「分區容錯性(**P**artition tolerance)」,而這三個特性已被[證明](https://mwhittaker.github.io/blog/an_illustrated_proof_of_the_cap_theorem/)無法同時達成,所以需要作出 trade-off,但是我們不能保證網路永遠不會斷,所以 **P** 是無法被捨棄的。若是系統選擇 **CP**,則使用者發出請求時可能會因為資料沒有同步的關係導致請求**失敗**;若是系統選擇 **AP**,則使用者的請求總是可以取得資料,但不見得是最新的資料,犧牲了資料的**一致性**。
## [Resume](https://drive.google.com/file/d/1e5Zeic6okoO9eKtbsEXmzQ3O4W25prAe/view?usp=sharing)