--- title: 2021 年「資訊科技產業專案設計」課程第 1,2 次作業 tags: INFO2021 --- # 2021 年「[資訊科技產業專案設計](https://hackmd.io/@sysprog/info2021)」課程第 1,2 次作業: > 貢獻者: 布惠寫, koala ## 影片 * [布惠寫: Homework1 (漢)](https://youtu.be/wZUmdsvBQks) * [Koala: Homework1 (英)](https://youtu.be/FmiQGwGBInY) * [布惠寫: Homework2 (漢)](https://youtu.be/VgwI4-UZ2Ss) * [Koala: Homework2 (英)](https://youtu.be/WYozB8-JnFE) ## 題目挑選 光從題目挑選就碰到了不少問題,原則上要挑選的題目都要做過一遍 而且最好能夠有改進方法,否則錄製起來影片會只有簡單的一個段落. 不過最後來是選了自己有做過但是沒有更近一步改進的題目(之後再做改進) 目前挑選以下三題 1. [268. Missing Number](https://leetcode.com/problems/missing-number/) 2. [104. Maximum Depth of Binary Tree](https://leetcode.com/problems/maximum-depth-of-binary-tree/) 3. [Combination Sum](https://leetcode.com/problems/combination-sum/) ## 檢討 ### 當面試官的問題 1. 對於能掌握的題目太少所以無法提出很好的問題 2. 因為如果面試者答不出來就沒辦法錄製,所以也沒辦法問太深入的問題 ### 面試者的問題 #### 準備期 1. 題目寫的太少 -> 能夠錄影的題型很少 -> 面試時能夠處理的題目也不夠 2. 錄影寫程式碼,如果寫的很慢會變得很難錄製,其實也可以說如果寫的很慢會導致面試不順暢,所以要在錄製前花很多時間去練習. 3. 如果用 recursive 的方式解決,也有可能會被問 loop 的解法 (ex: Tree) * 用 stack 去紀錄 recursive 的經過 #### 面試過程 1. 太急著去寫程式碼,應該要跟考官確認方案,並且指出時間還有空間複雜度 2. 寫一寫會忘記看是否有 syntax error 3. 英文的部分很常用 We,但是要改成 I 會比較好。因為是自己在解題 4. 需考慮完全寫不出來的時候 #### 面試後感想 一個 interview 剪完大概有 16 分鐘,包含額外問題的部分. 但是真實面試解題時間可能會更長,所以一個面試可能會被問個 2 ~ 3 個額外題目. ## 268. Missing Number :face_with_cowboy_hat: : 解釋題目 :disappointed_relieved: : 舉例確認是否有誤 :face_with_cowboy_hat: : 確認舉例無誤 :disappointed_relieved: : 解釋解法 :face_with_cowboy_hat: : 提出 sort 問題 : 因為 1. 這邊無法使用 python default 的 lib 重新寫一份時間會太長,是否有辦法有快速寫一個複雜度相等的 sort ? 這題目其實是有不用 sort 的解法的 :disappointed_relieved: : 提出解法 -> 帶入例子驗證 :face_with_cowboy_hat: : 確認解法可行 :disappointed_relieved: : 實際實作 :face_with_cowboy_hat: : 提出延伸題目 single number :disappointed_relieved: : 提出是否會有沒有 sigle one 的狀況 ? :face_with_cowboy_hat: : 既然題目都有說會有一個數字是 single num, 先不考慮這樣的情形 :disappointed_relieved: : 提出 xor 解 :face_with_cowboy_hat: : 聽起來可行,可否嘗試撰寫程式碼 :disappointed_relieved: : 撰寫程式並且驗證 :face_with_cowboy_hat: : 目前看起來沒有太大的問題,那時間也差不多了感謝參加這次的面試,我們會另行通知結果 ## 104. Maximum Depth of Binary Tree :face_with_cowboy_hat: : 解釋題目 :disappointed_relieved: : 解釋解法 :face_with_cowboy_hat: : 確認解法是否有誤 :disappointed_relieved: : 撰寫程式 :face_with_cowboy_hat: : 提出問題 -> 如果改搜尋 mimum depth 呢 ? :disappointed_relieved: : 提出解法 :face_with_cowboy_hat: : 確認解法是否有誤 :disappointed_relieved: : 解釋問題並改進 -> 帶入例子驗證 :face_with_cowboy_hat: : 有沒有辦法讓他更快呢 ? :disappointed_relieved: : 因為是 min 和 binary 的關係,不用執行整棵樹就可以知道結果,當跑完左子樹時就可以得到一個高度,然後當跑右子樹發現高到大於左子樹,就可以直接 return 答案 :face_with_cowboy_hat: : 聽起來可行,可以改進程式碼或驗證呢 ? :disappointed_relieved: : 改進程式碼或者驗證細節 :face_with_cowboy_hat: : 目前看起來沒有太大的問題,那時間也差不多了感謝參加這次的面試,我們會另行通知結果 ### 第三週影片重點 1. 延伸題可以考慮選 medium 的題目來增加難度 2. 練習時可以思考 leetcode 上面的限制,然後在面試時問出來,如果 interviewer 沒有表示細節 * 因為補習班的關係,interviewer 沒辦法直接照唸題目,否則補習班訓練的 interviewee 會馬上想到解法 3. 可以評估 REACTO 每個步驟的時間 (reac 在 8 分鐘內解決),看看是否有辦法最佳化 4. 怎麼短時間去驗證程式 5. 有可能會碰到眼睛有問題的 interviewer, 可以用聽看看影片是否能夠聽得懂解說 6. 再延伸題的時候只需要把 approach 說出來就可以,避免花太長的時間 7. 關鍵在互動!互動!互動! ### Reference * [2021 年「資訊科技產業專案設計」課程](https://hackmd.io/@sysprog/info2021/https%3A%2F%2Fhackmd.io%2F%40sysprog%2FSJ3QpJJNY?fbclid=IwAR16IOcx6EWDQ_Jf4cDH56QMh5MjcNBJNfMPFQBQ30y5hAJ_hsbxRBnKFw0)