範例:
於 https://leetcode.com/problems/two-sum 中複製 1. Two Sum
字串
sh .\create_leetcode.sh 1. Two Sum
是否在練習了許多題目後,卻仍在面試時感覺不到進步?
能想出解答,但想不出最佳解?
總是無法在時限內想出答案?
總是解不出難題?
作者身為前 Google SWE 告訴我們,以上這些問題的原因並不是因為我們不夠聰明或是努力不足,而很可能是因為練習的方法錯誤
真實的技術面試和獨自一人刷題有很大的差異:
- 技術面試是一個與面試官協作的過程
- 需要與真人對談而非獨自思考
- 題目中重要的細節很可能需要透過對話才能得出,並不會在一開始主動提供
- 可能需要自己想出 examples 和 test cases
-
不要依賴 IDE
要習慣寫在紙上或白板等等沒有過多輔助或提示的地方
因為真實面試環境中很可能也不會有這些輔助 -
找個模擬面試官
如果能找到同為軟體工程師的對象是最適當的
但只要是能給予 feedback 的對象(例如台風、表達能力),即使沒有程式背景也可以 -
計時
大多的面試介於 45~60 分鐘之間
訓練自己習慣在時限內解出題目很重要 -
確保有正確接收題目的資訊
面試時會由面試官口述題目,因此在過程中作筆記很重要,以免問重複的問題
為了確保有正確理解題意,用自己的話再將題目複述給面試官,若有任何遺漏或錯誤,面試官有義務讓你知道
如果是自己一個人練習的話,先將題目唸出一遍,再遮住題目後,用自己的話描述一遍,就像是和真人在對話一樣 -
問問題
即使已經自認很瞭解題目,或是過去已經解過這題- input 的 data type 和 range
- memory 的 size 是否足以容納 input
- 是否需考慮無效的 input
- input 是如何被提供的
- input 是否已排序
獨自練習時,列出自己的提問和假設後,才去查看 LeetCode constraints,再記錄下答案
-
思考出 input/output example
-
開始解題前,說出自己的想法,再開始解題
讓面試官能瞭解和跟上你的思路 -
完成之後不要直接提交,而是用肉眼進行檢查