---
# System prepended metadata

title: 2023年「資訊科技產業專案設計」作業 2

---

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