---
# System prepended metadata

title: 2022 年「資訊科技產業專案設計」第 2 次作業
tags: [資訊科技產業專案設計]

---

---
title: 2022 年「資訊科技產業專案設計」第 2 次作業
tags: 資訊科技產業專案設計
---

# 2022 年「[資訊科技產業專案設計](https://hackmd.io/@sysprog/info2022/https%3A%2F%2Fhackmd.io%2F%40sysprog%2FBJLSJ3ggi)」第 2 次作業

> 貢獻者：瓈文琳 Lorian

## 同儕面試檢討
>[作業區](https://hackmd.io/@sysprog/rklKOg2bo)

### [1.霸佛羅｜Buffalo](https://hackmd.io/@sysprog/H1wOcKlzo)
#### 整體
- 應該使用google doc這種文字編輯器
- 講話很清晰、語速也很好

#### 針對 interviewer
- 都用了「我是你今天的面試官」這個句子，可以改成「今天由我來主持這場面試」
- 說希望對方用更好的做法但卻沒有說明是哪個部分不好需要改，用較少空間？還是時間？等等
- 第二部影片用了圖片當輔助，讓講解更清楚
- 當面試者沒講很清楚要怎麼寫的時候應該多問一點

#### 針對 interviewee
- 能夠立刻提出針對題目的問題很好
- 在講做法的可以再講清楚一點，例如直接說要用兩個for迴圈等等，目前講法比較像把題目要求講一遍
- 第二部漢語影片有自已說明空間和時間複雜度很好

### [2.一瓶水｜Buttle water](https://hackmd.io/IqH9arNaSxGgQbFe91BXLA?both)
#### 整體
- 應該要用goole doc而不是visual studio
- 講話清晰

#### 針對 interviewer
- 會說首先第一題、這是第二題，這樣可能會讓面試的人問說那可不可以先看下一題
- 英文的部分說了「I’m your interviewer」，應該說「I’m the host of this interview」


#### 針對 interviewee
- 在code上註解蠻清楚的不錯
- 有自己提到時間複雜度的問題
- 考慮到例子在比較上面的地方，把他往下移解釋就不用一直滑動視窗很棒
- interviewer沒有講題目長度等等的限制時，應主動提問
- 英文有說法上的錯誤，n-1講成「n plus 1」



### [3.訪客｜visitor](https://hackmd.io/@sysprog/B1dkQ5efs)
#### 整體
- 講話清晰流暢
- 用goole直接切換濾鏡的方式區分兩個身分感覺很方便快速
#### 針對 interviewer
- 一樣兩種語言都用了面試官這個詞，不太好
- 一樣用了第一題，而且其實沒有第二題
- 有提到希望面試者做更快算法的原因很棒
- 在英語題只說想知道「complexity」但沒有明確指出是什麼的complexity；且在改寫法後才問兩個的時間複雜度，但前面的code已經被面試者刪掉了，可以在前面先問
#### 針對 interviewee
- 可先不要急著把原本的寫法刪掉，像後面面試者又問到前面的時間複雜度時，才比較有東西對照
- 英語題時應確認interviewer想問的是什麼complexity，而不是直接認為是time complexity

### [4.碼加密｜MAJAJA](https://hackmd.io/@sysprog/rk0IRzbzi)
#### 整體
- 用亮暗視窗的方式區分身分蠻特別的
- 講話清晰流暢
- 漢語錄製似乎有點小聲，開最大還是有點小，但無傷大雅；英語錄製聲音就沒問題
#### 針對 interviewer
- 一樣用了面試官這個詞，應改為由我來主持這場面試
- 作為interviewer卻說了「大致上看起來是沒有問題」，很像沒有專心在看對方實作，或剛剛在發呆剛回神

#### 針對 interviewee
- 和interviewer請教限制的時候直接在螢幕上邊打上想確定的項目，並在對方回答時直接補上是個很好的做法
- 有時會大力晃動滑鼠，不太好

### [5.本丸｜RiceBall](https://hackmd.io/Ld5ZOFgcTQWiskt-vjPLNQ?both)
#### 整體
- 錄製的聲音稍微有點爆音
- 語速適中
#### 針對 interviewer
- 一樣中英文都會用面試官這個詞，應改為由我來主持這場面試
- 有地方忘記換說話者的頭像了

#### 針對 interviewee
- 舉例時直接將指標也打在下面而不是用滑鼠晃來晃去很棒
- 漢語影片在打while迴圈的時候，最好馬上把上下括號打出來再打中間的程式碼，否則容易忘記且會讓人覺得像在偷看答案
- 英語影片的function拼錯了下面call的時候卻拼對，應該再仔細檢查

## LeetCode 模擬面試練習
>[影片](https://www.youtube.com/watch?v=aYtaKQjYL74) 

😎：interviewer　🤔：interviewee

### 參考題目：[66. Plus One](https://leetcode.com/problems/plus-one/)


😎：瓈文琳你好，感謝你的時間，接下來由我主持這場面試，希望你在google document上面作答

🤔：你好，好的

😎：給你一個整數，請你回傳＋１後的值

🤔：想請問這個整數最大可能會是多大最小會是多小呢？

😎：小於１０的３０次方，大於等於１

🤔：那這樣的話我想是個大數運算，long long int沒辦法存這麼多位數的，需要先以字串方式讀進來，再將字元變為數字做運算

😎：沒錯，那接下來呢？

🤔：接下來先取得整數的長度後，在最後一個數也就是個位數的地方加上１，就像是１２的話，個位數字加１等於３，這樣就可以回傳了


🤔：但如果這裡是９是的話，這邊變成０，需要進位，就會變２０

🤔：很多位數的話就是一直跑for迴圈加下去，如果不用再進位了就可以即時停止，這麼做的話時間複雜度上界為Ｏ（ｎ）下界為Ω（１）

😎：沒問題，那若是改成不只加１呢？就是給另一個數字做相加，另一個數也是小於１０的３０次方、大於等於１

🤔：那這樣的話想請問這兩個數字長度會不一樣嗎？

😎：可能會

🤔：好的，那我想我需要先找到兩個數字比較小的長度作為迴圈最多需要跑的次數，然後也是從兩個的最後一位開始相加，得到的值除以１０的商數為進位的數，餘數為該位置的答案，迴圈跑完之後若還有需要進位的數，再繼續和比較大的數做相加，直到沒有需要進位的數為止

😎：好那請你實作看看


```cpp
string Number(string n,string m){
	
	int ln = n.length()-1;
	int lm = m.length()-1;
	int carry = 0;
	
	if(ln<lm){
		while(ln>=0){
			m[lm] = ((n[ln]-'0') + (m[lm]-'0') + carry)+'0';
			carry = (m[lm]-'0') / 10;
			m[lm] = ((m[lm]-'0') % 10)+'0';
			
			lm--;
			ln--;
		}
		
		while(carry!=0&&lm>=0){
			m[lm] = (m[lm]-'0' + carry)+'0';
			carry = (m[lm]-'0') / 10;
			m[lm] = ((m[lm]-'0') % 10)+'0';
			
			lm--;
		}
		if(carry>0){
			m.insert(m.begin(),carry+'0');
		}
		
		return m;
	}else{
		while(lm>=0){
			n[ln] = ((n[ln]-'0') + (m[lm]-'0') + carry)+'0';
			carry = (n[ln]-'0') / 10;
			n[ln] = ((n[ln]-'0') % 10)+'0';
			
			lm--;
			ln--;
		}
		
		while(carry!=0&&ln>=0){
			n[ln] = (n[ln]-'0' + carry)+'0';
			carry = (n[ln]-'0') / 10;
			n[ln] = ((n[ln]-'0') % 10)+'0';
			
			ln--;
		}
		if(carry>0){
			n.insert(n.begin(),carry+'0');
		}
		
		return n;
	}
}
```

## 檢討

* 模擬面試的部分一開始使用原題，可以將題目加以包裝，再設定題目的範圍，使面試者去想到要用大數運算
* 面試官和面試者都只針對題目在做討論而已，應該與過往經歷、公司需求做結合，如什麼時候需要用到這樣大規模的精度運算