2024年3月14日 星期四

一對一LeetCode家教後,寫程式的執行效率提升,也順利面試進入心儀的大型美商公司

 在研究所畢業後,我已經工作了一年多。但由於工作、待遇和產業等因素,我希望能夠進入其他外商公司。然而,外商公司對於程式技術的要求較高,因此我一直在努力練習LeetCode上的題目,有時也會參加LeetCode相關比賽,以增強我的演算法和資料結構能力。雖然我已經對這些基礎知識有了初步的掌握,但對於一些難度較高的題目,例如Hard類型或DP類型的題目,我仍然感到有些困難,即使參考別人的答案也一知半解。因此,我想尋找線上刷題課程來提升自己。當時我發現了Candice先生的課程,老師是一位知名Google公司的工程師,並擁有面試官的經驗。這個課程是以一對一家教的形式進行,非常適合我的需求。唯一的問題是課程費用偏高。

最初的試聽課:

在最初的試聽課上,老師出了一個關於樹狀結構的題目,要求找出所有節點上數字之和等於sum的可能情況。當我完成這個題目後,老師進一步探討了邏輯是否有問題、寫法優化和時間複雜度等方面。對於後兩個問題,我之前在解題時比較容易忽略,但在老師的指導下,我逐漸意識到這是非常重要的問題。以前只要寫出答案就滿足了,但現在我的目標是寫出高效的程式,這也是我從老師那裡學到的最多的部分。另外,我也開始注意到程式風格的問題。這讓我覺得很特別,因為每個人寫的程式都有所不同,同樣的解法可能有不同的寫法。例如,對於DFS和BFS,有些人更喜歡使用其中一種方法;而對於二分法,有的人會將索引值放在內部,有的人則會將其放在外部。這些差異讓我在上課後更加體會到寫程式的樂趣。還記得在上DFS章節課程時,老師用了一個很特別的方法來示範DFS題目,他用了while迴圈來實現遞迴,這讓我驚訝,因為我以前從未見過這種寫法,這也是寫程式最有趣的地方之一。最後,每當一個章節結束時,老師都會準備相應主題的作業,讓我們運用所學的技巧來完成,從而加深對該章節內容的熟悉度。如果遇到問題可以提出來,老師會在下次上課時一併解答。

面試中各種類型的題目:

我自己每個月上一堂課,總共完成了七次課程。因為有新的工作機會,所以我也陸續參加了面試。在面試中,我遇到了各種類型的題目,例如雙指針、字串、二分、排序和DFS等。我發現許多面試官注重效率和邏輯問題,即使程式完成後也不一定是正確的。有時候還需要自己跑Test case,逐行分析變數的行為以確保程式沒問題。這與上課時老師探討優化的部分有極大的相符。經過這些實際面試經驗的累積,最後也有成功進入了我心儀的大型EDA美商公司。對於想參加課程的同學,我建議有一定的程式基礎和演算法知識會比較適合。這樣在程式對談時能更加順暢,降低認知上的隔閡。祝大家在未來的職業生涯中繼續取得成功,不斷進步!

沒有留言:

張貼留言