天天看點

一位經驗豐富的前端開發人員因未能通過算法面試題而受人嘲笑

一位經驗豐富的前端開發人員因未能通過算法面試題而受人嘲笑

英文 | https://medium.com/frontend-canteen/an-experienced-frontend-developer-gets-ridiculed-by-an-interviewer-for-failing-to-complete-an-dccd790feea4

翻譯 | 楊小愛

我有一個朋友,他是一位經驗豐富的前端開發人員,他曾參與過多個複雜的前端項目,最近,他正在尋找一份新工作并接受了幾次面試,但其中有次不愉快的面試經曆,他跟我分享了這次不愉快的經曆。

事情就是這樣,他去某公司面試的時候順利通過了前兩輪面試,但是在第三輪面試中,面試官問了一個關于圖論的算法問題。

我的朋友擅長前端技術棧,但他不擅長算法。他是一名自學成才的開發人員,沒有計算機學位,也沒有系統地學習算法。

想了想,還是答不上算法題,于是坦白告訴面試官:我不知道這個問題。

但面試官用不同的眼神看着我的朋友:這隻是 Leetcodes 上的一個簡單級别的問題。

我的朋友尴尬地笑了笑,沒有回答。

然後就沒有後續了,這次面試就結束了。

當我的朋友與我分享這段經曆時,我的心情很複雜。事實上,我和他一樣,都是自學成才的,從來沒有系統地學習過算法。

他是一位出色的前端開發人員,他熟悉 JavaScript,甚至為 Reactjs 的源代碼做出過貢獻。他知道如何優化前端項目和維護複雜項目。但他隻是不擅長算法,是以他沒有得到那份工作。

面試問題本身不再重要。

現在,我想讨論一個問題:算法對前端開發人員重要嗎?

一些人認為資料結構和算法對前端開發人員也很重要。他們認為算法是程式的靈魂,每個程式員都應該掌握算法。而前端開發者也是程式員,當然也不例外。

是以,這些人主張前端開發者也應該像後端程式員一樣學習算法。

我認為,這一切都是一種權衡,根據自己的情況進行權衡。

你喜歡大房子、旅行、汽車和各種收藏品,這些都是好東西,但是你的錢是有限的,你隻能選擇其中的一部分。

前端開發人員也是如此,Html、Css、JavaScript、TypeScript、React、Vue、性能優化、網絡、浏覽器、算法、設計模式等都是重要的知識。

但是我們的時間是有限的,我們每個人一天隻有24小時,除了休息和工作,剩下的空閑時間不多了,你不可能在每個領域都很強。

将算法視為靈丹妙藥是一種嚴重的誤解。對于前端工程師來說,最重要的是什麼?在我看來,最重要的是工程能力。所謂工程能力,本質上就是“解決問題的能力”。無論是程式設計技能還是架構思維,其本質都是服務于解決問題的最終目标。

算法訓練肯定會在一定程度上幫助你提升你的工程能力(比如提高你的代碼的嚴謹性,開發解決問題的思路等等)。盡管如此,它絕對沒有直接做工程那麼快。

對于前端開發者來說,程式設計技能可以從實際項目中積累。而一些複雜的算法往往被前人封裝,我們可以直接導入相關庫。算法往往不是業務發展和個人職業發展的瓶頸。

在成熟的團隊中,複雜的算法問題都由專門的算法工程師處理。對于前端開發者來說,很少需要獨立解決特别複雜的算法問題。

是以我認為,如果你不擅長算法,你仍然可以成為一名優秀的前端開發人員。

不過不要誤會,算法對前端開發者來說并不是不重要,而是我們還是需要了解一些基本的算法。

比如一些基本的資料結構:包括數組、連結清單、棧和隊列,還有一些基本的算法:排序算法、遞歸思想等也經常用到。

最後,感謝你的閱讀,同時也歡迎你在留言區跟我分享你的想法。

一位經驗豐富的前端開發人員因未能通過算法面試題而受人嘲笑

繼續閱讀