# 2023 年「[資訊科技產業專案設計](https://hackmd.io/@sysprog/info2023)」作業 1
> 貢獻者: 路易十四 KQC
> [模擬面試影片](https://youtu.be/A21qGBbCiZ0)
> [模擬面試: 漢-1](https://www.youtube.com/watch?v=q1lpbcyPIDw)
> [模擬面試: 漢-2](https://www.youtube.com/watch?v=kkulA5mKmX8)
> [模擬面試: 英](https://www.youtube.com/watch?v=dUEs4YWIrkk)
## 344. Reverse String
```python
word=input("please enter the word you want to reverse:") ##key in
s=[]
s.extend(word)
def reverse(l,r):
if l<=r:
s[l],s[r]=s[r],s[l]
reverse(l+1,r-1)
reverse(0,len(s)-1)
print(s)
```
**74. Search a 2D Matrix**
```python
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
ROWS,COLS=len(matrix),len(matrix[0])
top,bot= 0,ROWS-1
while top<=bot:
row=(top+bot)//2
if target>matrix[row][-1]:
top=row+1
elif target<matrix[row][0]:
bot=row-1
else:
break
if not (top<=bot):
return False
row=(top+bot)//2
l,r=0,COLS-1
while l<=r:
m=(l+r)//2
if target>matrix[row][m]:
l=m+1
elif target<matrix[row][m]:
r=m-1
else:
return True
return False
```
## 94. Binary Tree Inorder Traversal
```python
# Definition for a binary tree node.
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
res=[]
def inorder(root):
if not root:
return
inorder(root.left)
res.append(root.val)
inorder(root.right)
inorder(root)
return res
```
參考資料
* [Leetcode.344](https://leetcode.com/problems/reverse-string/)
* [Leetcode.74](https://leetcode.com/problems/search-a-2d-matrix/)
* [Leetcode.94](https://leetcode.com/problems/binary-tree-inorder-traversal/)
---
## 第二次作業-他評 01
### 關於 interviewer
- [ ] 優點
* 前情提要讓這次的模擬面試感覺很真實。
* 英文講得挺清楚,很棒!
- [ ] 可改進的地方
* [00:16](https://www.youtube.com/watch?v=A21qGBbCiZ0&=16): interviewer你的臉露出來了啦XD。
* 可以故事化題目敘述。
### 關於 interviewee
- [ ] 優點
* 我覺得講話速度不快不慢,很棒!
* (漢語-1)
* [04:23](https://www.youtube.com/watch?v=q1lpbcyPIDw&t=263): 幫程式碼寫註釋很棒。
> 用 list() method 也能將文字切開成陣列。
* [01:25](https://www.youtube.com/watch?v=q1lpbcyPIDw&t=85)畫圖舉例解釋程式想法的很清楚。
* (漢語-2)
* 個人覺得程式碼很簡潔,每行都短短的,挺易懂。
* (英)
* 在以例子講解程式的時候,我覺得講得很清楚。
- [ ] 可改進的地方
* 提出的方法只有一個,沒有優化的過程有些可惜。
* 如果能遵循 REACTO framwork 會更好。
* (漢語-1) [03:31](https://www.youtube.com/watch?v=q1lpbcyPIDw&t=211): 希望程式碼部份可以放大,這樣interviewer也能看得比較清楚。
* 程式的`if l<=r:`,可以拿掉等號,在當字串為奇數長度時,在左右pointer相等時,他仍然進入後續運算。
* (漢語-2)
> 在hackmd可以時,程式碼遷入可以選擇程式語言,在編輯模式時,```後面加上python=,就會呈現對應變數的顏色highlight,加上=可以讓程式區塊前面添加數字符號,在閱讀模式能增加可讀性。
* (英)
* [00:41](https://www.youtube.com/watch?v=dUEs4YWIrkk&=41)子節點大家應該會說child,不是children。
* 語助詞可能有點多XD。
* 後面的音訊有些受損。
## 第二次作業-他評 01
### 關於 interviewer
- [ ] 優點
* 有對原先的題目做出變形。
- [ ] 可以改進的地方
* 在說明題目時可以將文字放大並使用色系差異較大的顏色組合使 interviewee 可以更清楚的看到題目。
* 與 interviewee 的互動可以再增加。
### 關於 interviewee
- [ ] 優點
* 語速適中,咬字清晰。
* 用繪圖的方式說明 example,有助於面試通順。
- [ ] 可以改進的地方
* interviewer 與 interviewee 應該要有不同的畫面,這樣能讓人比較好知道當前扮演什麼角色。
* 在解釋完自己的做法與例子後,可以先與 interviewer 交流,確認 此作法合乎雙方的共識再開始 coding。
* [4:21](https://youtu.be/q1lpbcyPIDw?si=eoNAMwk6wpryzsYf&t=261): 在 coding 時應當減少話說到一半的狀況。
## 第二次作業 - 他評02
### for interviewer
- [ ] 優點
* 口齒清晰,不用字幕也能輕鬆聽懂
* 在test時有提出特例反問interviewee
- [ ] 可改進的地方
* 可適度包裝題目
* 1:23 在說明題目時,時間複雜度應該要完整說出「『Big-O』 log m乘n」而不是只講「log m乘n」
### for interviewee
- [ ] 優點
* 有自我介紹環節,很用心模擬面試情境
* [1:27](https://youtu.be/q1lpbcyPIDw?si=j5k6BfK3QD2tc3zD&t=87) 有用小黑板輔助舉例,很清楚
- [ ] 可改進的地方
* [0:50](https://youtu.be/q1lpbcyPIDw?si=D0Vh6Tpi5-gUS_vN&t=52) 「串列裡面就是倒過來的hello」並沒有達到Repeat, Examples確認題目理解的效果,若是interviewer沒有給input&output的舉例,可能會理解成回傳["olleh"]而不是['o', 'l', 'l', 'e', 'h']
* [6:43](https://youtu.be/q1lpbcyPIDw?si=CjWCE7R9GanoTyBU&t=403) 在說明或打字的時候,講話會變得含糊
* 常會有讓interviewer空等的情況,如:
- [4:20](https://youtu.be/q1lpbcyPIDw?si=Hbt-KK0bny0eTK6G&t=260)「再來就是建立一個...」到講出「陣列」間隔了17秒去打前一步讀取輸入的註解,由於讀取輸入很直觀,這一步必要性較低卻造成了多餘的等待時間,有點可惜
- [4:43](https://youtu.be/q1lpbcyPIDw?si=ksYy_QEPjw_q0zay&t=283) 「然後用...」並沒有講出要用什麼,建議可邊打字邊說明,或至少先講完再實作,至少讓interviewer知道為了什麼而等
* [7:08](https://youtu.be/q1lpbcyPIDw?si=98z6jWb8AS0svfex&t=428)~7:34 游標會在說明時迅速移動,若遇到網路品質不佳會卡頓
* [7:59](https://youtu.be/q1lpbcyPIDw?si=N9x8QZBAnkU53nZ4&t=479) 「誒對」會讓人有點問號,似乎很驚訝結果是正確的
* [8:14](https://youtu.be/q1lpbcyPIDw?si=fITopRDh7ij-EeG2&t=493) 「那我再『隨便』試另外一個字」這句裡『隨便』一詞容易給人不專業的感覺
* coding的字太小,而且畫質只有720p,在影片中看起來頗吃力
## 第二次作業 - 他評03
- [ ] 優點
* 口齒很清晰 讚
* 小黑板很讚
### for interviewer
- [ ] 可改進的地方
* 可以包裝一下題目,多引導interviewee一點內容,再讓對方打程式,==對話==可以試探interviewee的想法跟能力
* 時間允許的話,限制條件可以等interviewee打完code後再給他,看看對方會有什麼想法,也可以看看在沒有限制條件的時候對方會怎麼想。這樣有多一個機會讓雙方討論的機會。
### for interviewee
- [ ] 優點
* 打完程式後有再講解一次程式運行流程,可以蠻清楚了解你的思考過程,同時也可以debug.
- [ ] 可改進的地方
* 游標一直晃可以改用選取的方式,簡單明瞭。