練習不同的資料結構與演算法的 LeetCode 題目
「編碼面試」一般會詢問一個需要實作的問題,如:
給定一個整數數組(nums)和一個目標值(target),
請在數組中找出相加等於目標值的兩個元素,並返回它們的索引。
學習演算法跟資料結構
準備編碼面試不外乎就是上 LeetCode 刷題。但最好不要光隨機選題,而是把主要的資料結構和演算法做過一輪。
資料結構 (Data Structures)
- 陣列 (Array)
- 鏈結串列 (Linked List)
- 堆疊 (Stack)
- 佇列 (Queue)
- 雜湊表/哈希表 (Hash Table)
- 堆積 (Heap)
- 樹 (Tree)
- ...
演算法 (Algorithms)
- 排序 (Sorting)
- 搜尋 (Search)
- 滑動視窗 (Sliding Window)
- 雙指標/雙指針 (Two Pointers)
- 最短路徑演算法 (Shortest Path Algorithm)
- 動態規劃 (Dynamic Programming, DP)
- ...
編碼面試的類型
線上測試(Machine Coding)
線上測試是讓受試者直接在網站上進行線上測驗。平台會針對正確性(correctness) 與效能(efficiency) 來核算分數。由於通過後可能還會有人工驗證,因此仍需要考慮程式碼的可讀性。
真人面試(In Person)
另一種類型是在面試官前即時作答,這種類型不要埋頭寫 code,多跟面試官討論。實作前最好先寫 psudo code 說明想法。
為什麼明明可以用機器考,卻要浪費錢安排一個人看著你寫程式?
除了避免作弊外,很重要的一點是能評估求職者是否為理想的合作對象。因此,若能在面試過程中展現出好的溝通能力,像是提出好的問題、清楚的表達自己的想法等,都能夠提高面試的通過機率。