0:05: 說"直接開始面試題目" 會讓人覺得今天是來考試的,建議可以改成"公司請我來了解你/妳的情況並協助你/妳更認識公司"
0:08: 如果是經典的題目,可能會需要包裝成另一情境,否則會出現背答案導致鑑別度不足,也可以考驗interviewee的理解能力和應變能力
1:33: 當interviee 講完自己的做法時,interviewer 應給予適當的討論或提出一些可能會出錯的情況,而不是讓interviwee自顧自地開始寫code
3:29: interviewer說:"這個程式不完整",但沒有提出哪裡不完整,要是interviewee不知道自己哪裡漏寫,自然無法做出修改,建議interviewer可以用例子去讓interviewee帶入,使他自己發現哪裡有缺漏。
12:13: 在interviewee完成程式後,建議可以進行討論及優化,或是用實際example test過,若是寫完程式就結束會更像是程式設計的上機考。
4:38: interviwer 應該可以在interviewee 解釋方法時就可以發現用了variable extra space,可以即時與interviewee討論
8:10 建議可以與intervievee討論過時間複雜度再請他改進,否則也不確定對方是否會分析 時間複雜度
1.邊寫code邊講解的很清楚
2.闡述解法的時候很清楚
3.有合適的肢體語言顯得不死板
1:30:建議可以停頓觀察interviewer的反應,也許對方會提出質疑或是不同的看法
1:10: interviewee 應當向interviewer確認題目的條件,否則可能不會知道所謂constraint
1.很清楚的闡述interviwee的作法有什麼缺點(例如使用太大的記憶體或linked list 長度可能不一致),而不是單純評論"好"或"不好",也可以讓interviwee知道哪裡可以改
2.語速適中,英文發音也很清楚
3.有提出更進一步的問題要求interviewee現場解決(第二題)
1:31,1:07: 建議interviewer可以要求interviwee 先提出預計的作法或是構想,若是直接讓interviwee寫code ,interviwee不見得有想法或是不一定是正確的作法
10:29,10:46: interviewee完成後,interviewer可以給一些評論或是討論,讓interviewee做ˇ哦是否正確或是有可以需要改進的地方。
0:26: 如果直白地把題目闡述出來,加上有關鍵字"linked list","加法",建議可以包裝成另一情境,避免出現背答案導致鑑別度不足,也可以考驗interviewee的理解能力和應變能力
1.對於針對題目的repeat 和 example很清楚詳細
2.完成程式後有做test來驗證程式碼是對的
3:12: 這一段停頓得比較久,可能可以說點什麼來避免對方失去興趣和專注
1.對題目的闡述都很清楚,儘管沒有舉例也能讓人立刻理解
2.15:51有針對作法提出改善的可能方案,而不是簡單的說"請降低時間複雜度"
3:53:"聽起來沒什麼問題"可能會有給人一種好像沒什麼在聽的感覺,建議可以對interviewee的想法提一些問題或是討論
12:42,0:33:建議可以把題目包裝成另一情境,避免出現背答案導致鑑別度不足,也可以考驗interviewee的理解能力和應變能力
1.對於針對題目的repeat 和 example很清楚詳細
2.主動分析與討論時間複雜度和空間複雜度
3:51: 所闡述的做法較為複雜且抽象,建議可以搭配一個實際例子來做講解
6:00,11:15(每一段打code):在打code的時候建議搭配講解,否則interviewer要會一直盯著code 容易不耐煩且無法進入狀況,也可以嘗試以寫一兩句講解一次開始
*比較缺乏REACTO 的test 部分(漢語)
1.有提點interviewee應注意的細節
2.有提問兩種做法的相異處,可以測試到interviewee對程式的了解,而不是死背。
7:42,5:21: 感覺可以先對interviewee目前寫好的code做評論或提問,再請他優化,可能會比請他直接提供另外一種做法要更好
0:08:建議可以把題目包裝成另一情境,避免聽到關鍵字就開始背答案導致鑑別度不足,也可以考驗interviewee的理解能力和應變能力
1.邊打code邊講解的很順暢
2.2:33:將所舉的例子key出來很清楚詳細,讓人一看就明白
可以增加一些肢體動作或停頓(加強)來讓自己的整段對話重點更加突出。
較為缺乏REACTO的 Test部分(英)
1.有直接根據code 給出公司的要求,要求interviewee做進一步優化討論
2.問題闡述詳細
14:06: 如果只問"你有其他辦法嗎",若是在撰寫過程中沒有發現或想到其他辦法的話,此時還是一頭霧水,所以interviewer可能可以指出特定的點,要interviewee做出優化
0:08:開頭有點太像主持一個show,會給人一種不太認真(嚴肅)的感覺
在英語口說的時候,一句話中"強調"的字通常是關鍵字,但同學"強調"的字眼卻可能是連接詞或語助詞,會比較無助於抓重點。
1.分析時間複雜度時的分析很清楚詳細,不會只吐出一個答案
2.有主動做Test
3:45:建議可以停頓觀察interviewer的反應,也許對方會提出質疑或是不同的看法
在邊打code 邊解釋的時候可以更有自信一些,避免一些思考時的贅字,會顯得對自己的東西不太確定,以及與其卡在一個詞,不如放慢語速想好再講完。
在打code 的時候,有時候會變成喃喃自語
🧔 : 你好,歡迎你來到我們公司,公司請我今天來與你進行面試,接下來我會提出一些問題,希望你可以依照你的經驗來提出解決方案和我一起討論。
今天,公司拿到兩串產品型號的清單,個別已經由小排到大了,想請你提出一個將按照大小將兩個清單整理在一起的方法。
這兩個清單會以linked list的資料型態存在。
👶 : 請讓我整理一下問題,我會拿到兩個已經排序過的list,接著我要由小到大合併這兩個list嗎
🧔 : 沒錯。你的理解是對的。
👶 :舉例來說:
list1: [4 ,8 ,9]
list2: [1 ,4 ,7]
––> [1,4,4,7,8,9]
另外我需要考慮會有空的list 的情況嗎
🧔 :你舉的例子正確無誤,並且需要考慮會有空list 的情況。
接下來請你提出你會用什麼策略進行
👶 : 直觀的方式我會想用迭代的方法。會使用 while 迴圈走遍兩個LIST並比較兩個目前節點的值,然後決定將哪個節點新增到合併後的list中。
🧔 : 這會是最直觀的方式,請你用程式實作。
👶 :
🧔 : 是的這樣做可以解決這個問題的好方法
但想請你提出不使用迭代另外一種方式,並討論兩個方法的差異
👶 :那我會改用遞迴的方式,我們比較兩個list的第一個節點的值,假設list1的值比較小,將該節點添加到合併的list中,然後以遞歸方式呼叫相同的函數,傳入該list1的下一個節點和list2的當前節點。直到其中一個list跑到最後。
🧔 :請你用實作出來並討論兩個方法的差異
👶 :
在過往經驗來看,通常遞迴的方法通常是把問題拆解成子問題去解決,會比起迭代這種把每種可能性都列舉出來的方式要有效率。但在今天這個情況中,因為只有兩個list,而且都會從第一個節點走到最後一個節點,或是其中一個list 用盡。所以在程式效率上是幾乎相同的。但在空間複雜度上,遞歸方法的空間複雜度為 O(n+m),而迭代方法的空間複雜度為 O(1),因為使用了常數空間來儲存合併的list。