--- title: 2023年「資訊科技產業專案設計」作業 2 --- # 2023年「資訊科技產業專案設計」作業 2 ## 第二次作業-他評簡介 > 簡介對其他五位同學的建議與評論 ## [video1 --- 風清揚-Wind](https://youtu.be/jJTtHZZQsy4) ### 關於 interviewer - [ ] 優點 * [20:50](https://youtu.be/jJTtHZZQsy4?t=1250): 不會只提出一個問題點,一次提出兩個問題讓面試者去思考。 - [ ] 可改進的地方 * 講話太像照稿唸,雖然可能真的是在照稿唸,但可以有感情一點點。 * 題目可以換句話說,避免直接把想問的問題問出來,可以轉換成生活情境來問。 ### 關於 interviewee - [ ] 優點 * 打code流暢,邊講話邊打code不會卡詞。 - [ ] 可改進的地方 * 講中文時流暢但換成英文時速度明顯變慢了。 * [0:49](https://youtu.be/jJTtHZZQsy4?t=49): 通常面試應會在文字編輯器或是空白文件上打code,所以在開始打程式前應不會有打好任何程式在畫面上,也不會有自動縮排的功能。 * [10:51](https://youtu.be/jJTtHZZQsy4?t=651): 講話講到一半被卡掉了。 * [12:26](https://youtu.be/jJTtHZZQsy4?t=746): 在REACTO中,repeat,example和approach完皆沒有等面試人員給回覆就直接開始下面的流程,應留時間給面試人員提問。 * [21:35](https://youtu.be/jJTtHZZQsy4?t=1295): 盡量不要說"面試官" 。 * [30:35](https://youtu.be/jJTtHZZQsy4?t=1835): 打的code已經到螢幕的最下面了,應調整一下畫面讓面試人員可以看清楚完整的code。 ## [video2 --- 芋頭-Taro(中)](https://youtu.be/xh6T2_fcBDM) > [芋頭-Taro(英)](https://youtu.be/Ita8aTVwWPQ) ### 關於 interviewer - [ ] 優點 * [4:03](https://youtu.be/xh6T2_fcBDM?t=220): 有上字幕讓觀賞影篇的人清楚知道題目內容,不錯。 * [4:03](https://youtu.be/xh6T2_fcBDM?t=220): 題目有轉換過問問題的方式而不是只照著leetcode原本題目來問。 - [ ] 可改進的地方 * [0:02](https://youtu.be/xh6T2_fcBDM?t=2): 避免說自己是"資深"的軟體工程師,因為我們不知道來面試的人未來位階是否比自己還大。 * [3:40](https://youtu.be/xh6T2_fcBDM?t=220): 此時提問的人應該可以再追問一些相關的問題,例如時間的優化等等。 ### 關於 interviewee - [ ] 優點 * 有適度的用手勢以及肢體去做動作。 * REACTO的部分都有cover到 * [1:00](https://youtu.be/xh6T2_fcBDM?t=60): 把腦海中在思考的內心話用剪片技巧顯現出來,很用心。 - [ ] 可改進的地方 * 講話可以再流暢一些。 * 螢幕上的code可以放大一點,看不清楚。 * [1:50](https://youtu.be/xh6T2_fcBDM?t=110): 通常面試應會在文字編輯器或是空白文件上打code,所以在開始打程式前應不會有打好任何程式在畫面上,也不會有自動縮排的功能。 * [0:15](https://youtu.be/Ita8aTVwWPQ?t=15): 麥克風有怪聲音。 ## [video3 --- 拉鍊-Zipper(中1)](https://youtu.be/MDoIdWNAIGs) > [芋頭-Taro(中2)](https://youtu.be/RlAbvRqnAEg) > [芋頭-Taro(英)](https://youtu.be/pIuzlTD1irM) ### 關於 interviewer - [ ] 優點 * 語速一致。 - [ ] 可改進的地方 * 英文部分再加強。 * 題目可以轉換成生活化一點的方式來問而不是只照著leetcode原本題目問。 * [18:32](https://youtu.be/pIuzlTD1irM?t=1112): interviewee完成coding後可以再追問問題而不是直接下一題。 ### 關於 interviewee - [ ] 優點 * 打code時都有邊講解清楚。 - [ ] 可改進的地方 * 有時候會卡詞或講錯話,太緊張的話語速可以放慢些。 * code應可以更精簡一些,太冗長。 * [0:40](https://youtu.be/MDoIdWNAIGs?t=40): 在Repeat完沒有做REACTO中Examples的流程。 * [4:00](https://youtu.be/MDoIdWNAIGs?t=240): 通常面試應會在文字編輯器或是空白文件上打code比較好。 * [4:37](https://youtu.be/RlAbvRqnAEg?t=277): 字太小又模糊,看不太到。 * [11:30](https://youtu.be/RlAbvRqnAEg?t=690): 結束得太突然,沒有Testing也沒有Optimize。 ## [video4 --- 奧黛麗-Audrey(中)](https://youtu.be/ieTxOdyBK4s) > [奧黛麗-Audrey(英)](https://youtu.be/Yp8JG4YaO4E) ### 關於 interviewer - [ ] 優點 * 有重複確認面試者有無問題,問答過程舒服會讓人沒那麼有壓力。 * 英文好好聽! * [9:00](https://youtu.be/ieTxOdyBK4s?t=540): 有帶入情境題來問問題。 - [ ] 可改進的地方 * 第一題可以用情境帶入的方式來提問。 * [3:58](https://youtu.be/Yp8JG4YaO4E?t=238): 除了時間複雜度,面試官可以請面試者用除了hash table之外的方式解此題。 ### 關於 interviewee - [ ] 優點 * 畫面清晰明瞭。 * 講解時語速也不會忽快忽慢的。 - [ ] 可改進的地方 * 沒有做REACTO中的testing部分。 ## [video5 --- 迪奧-Dior](https://youtu.be/QWrjL0TQtRI) ### 關於 interviewer - [ ] 優點 * 有適度的用手勢以及肢體去做動作。 * 對話過程舒適不會給面試者很有壓力的感覺。 - [ ] 可改進的地方 * 提問可以改為情境題。 * [4:53](https://youtu.be/QWrjL0TQtRI?t=293): 這邊說的"更好的做法"有點抽象,可以改說想要時間或空間的優化,或是程式更精簡等等。 * [5:31](https://youtu.be/QWrjL0TQtRI?t=331): 避免直接講 "用heap的方式實作" 這種關鍵字,可以改為用別種方式引導interviewer來想出如何改善程式碼。 ### 關於 interviewee - [ ] 優點 * 打code時都有邊講解清楚。 - [ ] 可改進的地方 * 通常面試時不要用會有提示字元出來的編譯器打code比較好。 * 沒有做到Testing的流程 * [2:34](https://youtu.be/QWrjL0TQtRI?t=154): 沒有做到REACTO中Examples跟Approach的部分就開始打程式。 * [2:12](https://youtu.be/QWrjL0TQtRI?t=132): 發音的部分聽起來很容易混淆,像是"row"跟"弱"避免在同一句話裡面講出來,聽得有點吃力。 ## 第四次作業-他評簡介 > 簡介對其他兩位同學的建議與評論 ## [video6 --- 天兵-TianBing(中)](https://youtu.be/XjD2g7JtPkQ) > [天兵-TianBing(英)](https://youtu.be/JeqPg_DiaDo) ### 關於 interviewer - [ ] 優點 * 對話過程舒適不會給面試者很有壓力的感覺。 - [ ] 可改進的地方 * [0:45](https://youtu.be/XjD2g7JtPkQ?t=45): 身體建議不要一直莫名晃來晃去的。 * 提問改用情境題會比較好 * [0:20](https://youtu.be/JeqPg_DiaDo?t=20): 就算是看稿念題目,也不要太明顯是看著搞念,感覺對面試官來說不太專業。 ### 關於 interviewee - [ ] 可改進的地方 * 沒有做到Testing的流程 * [1:35](https://youtu.be/XjD2g7JtPkQ?t=95): 很突然的開始寫code,也沒有邊寫邊講解,會讓人不知道你現在在幹嘛。 * [4:50](https://youtu.be/XjD2g7JtPkQ?t=290): 面試時手機應該關靜音。 * [6:41](https://youtu.be/XjD2g7JtPkQ?t=401): 講話可以自信一點。 * [4:34](https://youtu.be/JeqPg_DiaDo?t=274): NG片段,這是忘記剪掉嗎? ## [video7 --- 梅治玄-Marlin(中)](https://youtu.be/e26UBgzbv3A) > [梅治玄-Marlin(英)](https://youtu.be/_MDo9wR-2hI) ### 關於 interviewer - [ ] 優點 * 慢慢引導面試者優化code,不會讓人有太大壓力。 - [ ] 可改進的地方 * [0:50](https://youtu.be/e26UBgzbv3A?t=50): 在面試時,手機聲音應該要關掉。 * [20:00](https://youtu.be/e26UBgzbv3A?t=1200): 提問時盡量不要使用leetcode原題目問,也不要讓面試者開leetcode答題,容易有背答案的嫌疑。 * [0:02](https://youtu.be/_MDo9wR-2hI?t=2): 馬賽克沒有打好,直接看到你是誰了。 ### 關於 interviewee - [ ] 優點 * [10:12](https://youtu.be/e26UBgzbv3A?t=612): 有邊講解邊打code,清晰易懂。 - [ ] 可改進的地方 * [1:33](https://youtu.be/e26UBgzbv3A?t=93): 字幕有時會打錯字,加"總"。 * [2:12](https://youtu.be/e26UBgzbv3A?t=132): 打code時建議在另外的空白文件或文字編輯器上打比較合適,通常不會在leetcode上打。 * [5:52](https://youtu.be/e26UBgzbv3A?t=352): 用官網跑程式他會告訴你錯誤在哪裡,這步驟應該是要由面試官來告訴面試者。 ## 第二次作業-模擬面試影片錄製紀錄 > 貢獻者: 竹間-Maggie > video: [模擬面試影片](https://youtu.be/SIfTY8qjPgM) > 👨‍⚖️ : interviewer > 👩 : interviewee ## [35. Search Insert Position](https://leetcode.com/problems/search-insert-position/) 👨‍⚖️ : 你好歡迎來到今天的面試,待會會有幾題的程式題想和你交流一下,想看一下你的想法這樣子,待會你就把你的想法寫在google文件上就可以了。好那如果沒問題的話我們就開始這次的面試,我這邊有一個問題,內容是這樣的,由於我們team上的主管很在意同事間互評的分數,所以每隔一段時間就會請工讀生來幫忙整理這些互評表,並將分數由低到高排名,若是主管想知道某位同事的排名,工讀生就可以馬上回報出來,請你幫忙這位工讀生解決這個問題可以嗎? 👩 : ***Repeat :*** 好的,依照題目的敘述,我會拿到一個已經排序過而且由低到高的數列,然後主管會告知我一個隨機的數字,如果這個數字在此數列中,就回傳此數字的位置,請問我這樣理解是對的嗎? 👨‍⚖️ : 大致上是正確的,另外補充一下,這個數列裡的每個數字都是不相同的,而且,如果主管給的數字不在數列中,請你回傳此數應該要存在在數列中的位址。 👩 : ***Repeat :*** 好的那為了確認我對題目的了解沒有錯,想再確認一下,所以是我會拿到一個陣列裡面存有升冪的數,另外還有一個目標數,我必須先確認此目標數有沒有在這個已知的數列中,若有,就回傳此數所在的陣列位置,若沒有,則回傳他應該安插在此數列的陣列位置,對嗎? 👨‍⚖️ : 是的聽起來沒有錯。 👩 : ***Examples :*** 那我來舉個例子,假如我拿到 ``` input: nums = [1,3,5,6], target = 5 Output: 2 ``` 若是target改成2,因為2介於1~3之間,所以要安插在1後面的位置,output就會是1,請問這樣理解是正確的嗎? 👨‍⚖️ : 是的。 👩 : ***Approach :*** 好的,我目前比較直覺的作法是用count這個變數去計算位置,然後用一個for迴圈去把數列中每個數字都去跟目標數做比較,若是比對到一樣的數字就更新count並且離開迴圈,否則count+1,最後回傳count就會是我們的所求。 👨‍⚖️ : 好我了解你的想法了,那就請你把你的想法實做出來。 👩 : ***Code :*** ```cpp int searchInsert(vector<int>& nums, int target){ int count=0; for(int i=0;i<nums.size();i++) { if(nums[i]<target){ count++; } if(nums[i]==target){ count=i; break; } } return count; } ``` 👩 : ***Test :*** 目前程式到這邊就完成了,那為了驗證這個程式的正確性,我想舉個例子來說明,舉例來說,若我今天有一個陣列是 ``` 1,3,5,6,8 target = 9 ``` 則我會需要跑完整個陣列才能得知target要放在最後一個位置,因為nums[4] < 9 ,所以count+1後變為5,而此時for也完全跑完跳出迴圈,得出所求為5。 👨‍⚖️ : 恩...看起來是沒什麼問題,但很明顯現在的做法對時間複雜度而言不是最有效率的,針對這點你有什麼想法嗎? 👩 : ***Optimize :*** 如果是想要降低時間複雜度的話,我這邊想到的是可以用binary search 的方法去搜尋,這樣用樹的結構來看的話,時間複雜度即會等同於樹的高度,就可以把時間降到*O(log n)*,這樣一來就會比原本的時間複雜度 *O(n)* 來的快。 👨‍⚖️ : 確實有比較好,那現在你可以開始實作了。 👩 : ***Code :*** ```cpp int searchInsert(vector<int>& nums, int target) { int low=0,mid; int high=nums.size(); if(target>nums[high-1]){ return high; } while(low<=high) { mid=(low+high)/2; if(nums[mid]==target){ return mid; } if(target<nums[mid]){ high=mid-1; } else{ low=mid+1; } } return low; } ``` 👩 : 以上為我的演算法實作後的code,請問這樣有符合你的要求嗎 ? 👨‍⚖️ : 看起來是可以,那我們這個問題的討論就到這邊,今天非常高興認識你,如果之後有任何消息會再通知你的,謝謝。 ## 第二次作業-心得感想 > 經過HW1及HW2他評後學習到了什麼? 透過這兩次的作業,在自製影片的時候其實有很多自己沒發現的問題,這些問題在第二次作業找尋他人的優缺點時很神奇地很多都看到了,也看到了一些同學真的很優秀,呈現出很多我沒能想到的interview方式,沒想到透過作業還能學習到那麼多東西。還有leetcode刷題的部分,之前我都沒有這方面的經驗,透過第一次的作業也讓我養成了每周刷題的習慣,一方面為了完成作業,另一方面也是為了之後就業提前作準備,很感謝我上了這堂課老師讓我知道刷題的重要性,也讓我明白不只是要認真刷題,理解題目背後的解題方法及邏輯推導更是重要。 ## 第四次作業-他人評論-01 ### Interviewer - [ ] 可改進的地方 [0:10](https://youtu.be/c4BNt40b6kw?t=10) 在說明面試題目時,應該像妳自己在hackmd上面打的一樣,題目是經過包裝修飾過的 ### Interviewee - [ ] 可改進的地方 [1:54](https://youtu.be/c4BNt40b6kw?t=114) 進行approach時,可以簡單的用程式碼進行表示,能讓interviewer更容易理解 ## 第四次作業-他人評論-02 ### Interviewer - [ ] 可改進的地方 ### Interviewee - [ ] 可改進的地方 [2:49](https://youtu.be/SIfTY8qjPgM?si=wADfQJqZABLiNVsm&t=169)以更多的討論此題的邊界行為,如序列是否大小的限制