首頁  >  文章  >  web前端  >  透過練習題提升面試遊戲水平

透過練習題提升面試遊戲水平

WBOY
WBOY原創
2024-08-21 06:18:02999瀏覽

Level Up Your Interview Game with Practice Problems

介紹

對於那些不認識我的人來說,我是一名擁有10 多年經驗的前端工程師,他還創建了BigDevSoon - SaaS(下一代代碼學習平台,您可以通過從第一天開始構建東西來學習。

儘管我很喜歡在React 中建立現代UI,但多年來「前端」角色的轉變迫使我多次成為全端開發人員、創建BFF(前端的後端)、分析和思考大量的資料結構並使用資料庫。從其他方面來說,我們不再是「網站」開發者,為了跟上步伐,我們需要一直學習和適應。

在當今艱難的市場時期,我花了一個多月的時間才找到最新的工作,您可以在這裡閱讀這一歷程。透過經常進行 10 多個階段的馬拉松式面試,我了解了新模式以及我們需要如何更輕鬆地適應陸地工作。

我注意到的模式之一是溝通和軟技能,例如「錄製您的歡迎影片並向我們介紹一下您自己。」或3 次以上行為/文化訪談「在某種情況下你會做什麼,為什麼,請解釋一下。

上面我只會提到一件事,如果您還不是“影響者”,那麼值得做的就是嘗試記錄自己,甚至嘗試做您創建的演示功能、副項目或介紹您自己和您的職業(例如,最多3-5 分鐘總結您的履歷、經驗、過去的項目)。聽完這個後,您可能會發現自己的聲音太小了,或者您在鏡頭前壓力太大了。這是一個很好的練習,可以克服這種恐懼,想像一下通過 9/10 階段,卻因為沒有練習而未能與 CEO/TL/經理交談。那可惜了。

另一個主題是眾所周知的練習問題,但相信我,你不需要掌握整個 DSA,包括 Dijkstra 演算法或紅黑樹之類的東西(儘管這對你下次面試有幫助)。

所需要的只是一點點的磨練和準備,這樣你就不會措手不及,並且可以解決這些現在許多公司用來篩選候選人的“小問題”,而不是在長時間的面試上浪費時間透過投入資源(例如需要採訪的人等等)

新兵訓練營/課程後的許多“瀑布”開發人員缺乏的是解決問題的能力,這些程序經常牽著你的手,不允許你自己思考太多- 不是說這是錯的,而是要變得更好需要不同的技巧,要在壓力下順利面試,能夠快速拿出10 分鐘前承認的問題的解決方案,並且面試官希望它在不到一小時內解決,這是一個巨大的改變。

讓我們從我經歷過的一個例子中進一步了解這一點,然後我將分享一個在面試中幫助我的日常習慣,並提出一些有價值的解決問題的練習題。

回文問題

所以回文是一個從向後或向前讀取相同的值。例如。 Racecar 是回文,但 hello 不是回文,因為當你反轉該值時,它會變成 olleh。

我正在與我所申請的一家公司的招聘人員通電話,我們進行了冷靜的閒聊,因為這是該公司的第一階段之一。現在,面試的最後 10 分鐘「嘿,最後一個問題,你能為回文問題編寫一個程式碼解決方案嗎?」…我有點措手不及。

但我們得到了這個,立即跳入 https://jsfiddle.net/ 並寫道:

function isPalindrome(string) {
  return string.split('').reverse().join('') === string;
}

為自己感到驕傲,但招募人員說「請不要使用內建方法。」。

好的,沒問題,我們很快就沒有時間了,但我明白了。

花一些時間想出一個愚蠢的解決方案,如下所示:

function isPalindrome(string) {

  let isValid = true;

  for (let i = 0; i < string.length / 2; i++) {
    if (string[i] !== string[string.length - i - 1]) {
      isValid = false;
    }
  }

  return isValid;
}

當然,招募人員開始談論大 O 表示法。我們又聊了一會兒,我又崩潰了,措手不及。

假設一個可接受的解是這樣的:

function isPalindrome(string) {
    const normalizedString = string
    .toLowerCase()                    // Convert to lowercase
    .replace(/[^a-z0-9]/g, '');       // Remove non-alphanumeric characters

  for (let i = 0; i < normalizedString.length / 2; i++) {
    if (normalizedString[i] !== normalizedString[normalizedString.length - i - 1]) {
      return false;
    }
  }

  return true;
}

我們在這裡做了兩件事,首先,我們標準化了一個字串,因此對於一個男人,一個計劃,一條運河:Panama,我們得到了amanaplanacanalpanama,並且我們提前退出循環,而不是總是迭代「半通過字串值」。

這只是一個例子,但讓我們了解一下發生了什麼錯誤。

  1. 缺乏溝通,我甚至沒有問招募人員是否意味著偽代碼,想要製作像 TypeScript 這樣的嚴格類型,或者小提琴是否是正確的選擇。
  2. 我沒有驗證是否可以使用 Google/ChatGPT(嗯,這是一件超級容易解決的事情,但我幾乎沒有時間,寫完一行字後我更加心煩意亂)。
  3. 我提到我的上一個解決方案可以改進,但我們沒有時間把它寫下來。也許這是一個奇怪的面試問題最終抓住了我,但透過提出適當的問題,例如「我可以使用內建方法嗎?我應該使用循環嗎?我應該編寫偽代碼還是可行的解決方案,我可以用谷歌搜尋嗎? 」肯定會節省我很多時間。

吸取教訓,我開始了 leetcode 的磨練。每天總是1+ 個問題,但大多從簡單/中等難度中進行選擇,並嘗試專注於“人性”的問題,因為招聘人員通常會使用這些問題,例如買賣股票的最佳時機我在接下來申請的一家公司中接到了一項任務,並解決了這個問題。我喜歡向 ChatGPT 詢問我正在申請的公司,並推薦可能相關的練習問題,甚至添加招聘人員的一些資訊作為額外的背景資訊。 (是的,如果他們解釋得不太清楚,你可以透過電子郵件詢問他們在面試過程中會發生什麼)。

一段時間後,您將開始看到模式、陣列問題、字串問題、連接部分,並且會變得更好,因為即使測試案例不同或問題性質不同,您用於解決這些問題的方法也可以共享完全不同。

值得檢查的問題

隨著我們為平台添加越來越多的功能,我將在BigDevSoon 上無恥地提前插入練習題(目前有41 個),試圖讓事情變得簡單(KISS) 並策劃最相關的問題+還有一些熱身(簡單等級)。

我在下面列出了其中 10 個我認為值得解決的問題。

1. 回文

2. 找到最大值

3. 買賣股票的最佳時機

4. 盛水最多的容器

5. 數韻律

6. 組字謎

7. 字串壓縮

8. 子集

9. 最常用的 N 個單字

10. 找出數組中的所有重複項

概括

就是這樣!從這些練習題中可以學到很多東西,每一個都是激活大腦的有趣方式。

長期以來,我的目標是在社群中傳播基於專案的學習方法,並啟動並運行 BigDevSoon,這是我們在過去 3 年裡一直致力於開發的應用程式。這對我們來說是一項偉大的成就。

繼續編碼! ?‍♂️

以上是透過練習題提升面試遊戲水平的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn