---
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)以更多的討論此題的邊界行為,如序列是否大小的限制