# 資訊科技產業專案設計課程作業 4 ###### tags: `資訊科技產業專案設計` 1. 自 IC 產業結構和軟體工程師的機會 列出的 IC 設計公司的官方網站中,找出較符合自身興趣/規劃的職務描述 (即 JD,至少找出二份) 2. 分析上述職缺所需要的能力,探討自己在專業上匹配的程度 3. 嘗試列出上述職缺 (或類似的職缺) 的面試題目,可以是網路搜尋整理,也可以自行改寫 4. 在不揭露自身資訊的狀況下,比照第一次和第二次作業的問答形式,對面試題目進行問答,文字紀錄即可。避免只用教科書內容回答,儘量搭配自己過去 (或近期學習到) 的程式開發經驗,進行自問自答 --- ## 1. [Back End Engineer](https://careers.google.com/jobs/results/141234893708239558-back-end-engineer-ads-ecosystem-waze/?distance=50&q=engineer%20backend) * 公司: * GOOGLE * 職位描述: * Design, develop, test, deploy, maintain, and improve software. * Manage project priorities, deadlines, and deliverables. * Mentor and guide other team members and colleagues. * Analyze functional requirements and creation of software design. * Own software components, maintain and lead improvement opportunities. * 所需專業技能 1. Programming experience in one or more of the following languages: C, C++, Java. 2. Experience in Object-Oriented Design and programming concepts. 3. Experience in building cloud (SaaS) applications. 4. Experience with one or more general purpose programming languages, including but not limited to: C#, Objective C, Python, JavaScript. 5. Demonstrated object-oriented, database design, and SQL skills. Excellent problem solving skills. ### 個人能力分析 * 撇除掉個人特質和非專業技術能力的探討,以下就上述所需專業技能進行個別分析: 1. C、C++、Java雖皆有programming experience,但我最常使用的是C,因此若面試時面試官要求以某種語言進行撰寫的話,為了避免coding的生疏,所以在刷leetcode時也要嘗試以其他語言撰寫。 2. OO的經驗也有,但也需要在平常時就保持的好習慣,因此我也會在修課coding時繼續保持手感。 3. 嚴格來說我沒有cloud application的相關經驗,網頁前後端的經歷也不多,因此還需要多多學習。 4. 有python、javascript的經驗 5. 也有database的設計經驗 ### 面試問題: ` 網路上找不太到關於google後端工程師的問題,因此就找到的後端專業上的問題來做討論 ` * **比較 SQL v.s. NoSQL 優缺點** * SQL的好處是他遵守了ACID的原則、安全且穩定,但他主要的問題是他的效能會隨著資料庫的變大而快速下降、且擴充性較低。 * 而NoSQL的好處是擴充性較高且成本低,但他的問題是可能會導致資料丟失,不過也要取決於server還有程式碼等等的因素。 [RDBMS vs. NOSQL | 關聯式資料庫 vs. 非關聯式資料庫](https://medium.com/@eric248655665/rdbms-vs-nosql-%E9%97%9C%E8%81%AF%E5%BC%8F%E8%B3%87%E6%96%99%E5%BA%AB-vs-%E9%9D%9E%E9%97%9C%E8%81%AF%E5%BC%8F%E8%B3%87%E6%96%99%E5%BA%AB-1423c9fbb91a) * **不用很多記憶體情況下,資料庫裡一個單方向linked list 要怎麼樣找出重複節點?** * 這個的解法要取決於資料是否是依照某種特定規則排序,若是的話只要比較目前節點和下個節點的資料是否一致,若一致的話則刪除下個節點;若為否的話,則須先排序好後再執行上述步驟。 * **HTTP/ WebSocket/ Socket 是什麼?之間的差別為何?** * HTTP是單向的應用層協議,只能由客戶端發起 * WebSocket和HTTP一樣是應用層的協議,不過他是雙向的 * Socket則是在應用層跟傳輸層中間的一個抽象層,TCP/IP網路的api * [Http、Socket、WebSocket之間聯繫與區別](https://kknews.cc/zh-tw/code/3vpvk9o.html) * [WebSocket介紹,與Socket的區別](https://codertw.com/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80/603007/) --- ## 2. [Software Engineer, IoT Core, Google Cloud](https://careers.google.com/jobs/results/109957646859018950-software-engineer-iot-core-google-cloud/?distance=50&q=engineer%20iot) * 公司: * **GOOGLE** * 職位描述: * `Build highly-distributed backend services with public APIs.` * `Design, develop, test, deploy, maintain, monitor, and improve software.` * `Manage projects priorities, deadlines, and deliverables.` * `Work closely with our partner teams to incorporate feedback from our industry customers to further enhance the platform.` * 所需專業技能 1. Experience programming in one of more of the following languages: C++, Java, or other object oriented languages. 2. Experience in computer science, data structures, algorithms, and software design. 3. Ability to speak and write in English fluently. * **Preferred qualifications:** 4. Experience in one or more of the following: architecting or developing large-scale distributed systems, concurrency, multithreading, and synchronization. 5. Cloud platform development experience (e.g., Google Cloud Platform or similar). 6. Familiarity with machine learning and/or edge computing. 7. Ability to think innovatively, problem solve systematically, collaborate cross-functionally, and work through to a solution to ambiguous problems. ### 個人能力分析 * 撇除掉個人特質和非專業技術能力的探討,以下就上述所需專業技能進行個別分析: 1. 有C++、Java的經驗 2. 符合 3. 我的英文還不是很好,但我仍會繼續加強speak and write ability 4. 我沒有這個的經驗 5. 這個也沒有... 6. 有修過機器學習的相關課程,但還沒有到familiar的程度 ### 面試題目 ` 網路上並未找到關於google該職位的問題,因此就找到的其他問題來做討論 ` * **在工作發現錯誤時,你會如何解決?** * 若是程式方面的錯誤,則找出錯誤的地方並進行debug,若多方嘗試後仍無果的話則向同事詢問,也許會有旁觀者清的解決之道。 * **請問你寫過最自豪的code是什麼?為什麼?** * 我寫過最自豪的code是大三專題的智能合約,因為這是我第一個自學起來的語言,同儕中沒有人學過也只能自己找出解決方法,雖然過程很崩潰但是當作品完成的那一刻是非常感動且驕傲的。 * **在過去的一年中,你有學習什麼新的技術嗎?** * 我學習的新技術就是如何用solidity撰寫智能合約,並架設私有鏈與之溝通,而這也是藉由專題這個契機學習的。 ---- https://glints.com/tw/blog/%E6%BA%96%E5%82%99%E5%A5%BD%E9%80%9915%E5%80%8B%E9%9D%A2%E8%A9%A6%E5%95%8F%E9%A1%8C%EF%BC%8C%E9%A0%86%E5%88%A9%E9%81%8E%E9%97%9C%EF%BC%81/