# 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. - [ ] 可改進的地方 * 游標一直晃可以改用選取的方式,簡單明瞭。