面試數十人有感
平時會接一些模擬面試的服務,幾個月下來也面試幾十個人了,來和大家聊聊面試了這些人的感想。
萬丈高樓起於壘土
基礎對於每個人都是很重要的一步。無論你做的是什麼領域的東西,電腦科學中的必修課必須是要學好的。就前端而言,OS、資料結構與演算法、網路這幾塊內容是必須要掌握的基礎的,這些基礎不紮實,你的天花板勢必不高。但是其實在面試的過程中,我發現無論是社招的還是校招的,基本上基礎都不大行。我認為,對於校招生來說,基礎不好基本和大廠絕緣了;對於社招來說,基礎不好雖然也同樣能幹活,但是天花板不高會導致你的技術成長會隨著年齡增長變得越來越低,最後結果也基本是停留於二三線公司。
所以任何一個想要在技術這條路上走的更遠的人,都應該好好學習電腦科學。如果你已經脫離學校了並且英語還行,我強烈推薦 CS61 系列,如果你能將這三門課完整的學習下來也基本有大部分科班本科的素養了。
說完計算機基礎,那麼來說說前端的基礎吧。在面試的過程中,發現大部分人問基礎知識點還是能夠說出來的,但是僅限於知道。對於如何將多個知識點串聯起來或者知識點的更深層次的問題就很少有人能夠答好。
打個比方,跨域這種問爛的問題想必大家都能答出點東西。這個也是我常會問的一個問題,當然我還會配合幾個問題去問。比如問什麼瀏覽器要引入跨域這個機制;跨域請求到底有沒有正常發出去並收到響應;是否瞭解跨域預檢。對於以上三個問題,能夠答出的人並不多,更多人只是知道我該如何去解決跨域,但是對於為什麼要有跨域反而知道的並不多。這也側面反應了大部分人並沒有深入挖掘知識的意識,只是停留於表面。
對於基礎而言,我認為所有人都應該好好夯實。如果你是轉行的,那麼首先應該把前端基礎學好,然後有空的時候去補計算機基礎;如果你是科班出來的,首先肯定是學好計算機基礎,然後才是前端基礎,這樣你才能站得高,成長得快。
框架
現在框架已經是前端繞不開的話題了。很多人會糾結於我該挑選哪個框架或者哪個框架牛逼等等,首先在學習框架前,我覺得你應該先打好基礎,而不是好高騖遠的先使用框架。再者,幾大熱門的框架底層的思想都是一致的,並沒有哪個好哪個差之分。
在面試的過程中,框架原理其實是繞不開的題目了。但是說實話,面試下來的結果卻是很少有人熟悉框架原理,只是停留於會用框架。這其實是一個不好的現象,打個比方,一個機器建造出來可以通過說明書的方式讓流水線工人去使用,就算一批工人走了,還可以再去招一批,你並沒有什麼核心競爭力。但是對於會修理機器的或者會造機器的人來說,找工作會很好找,因為這是核心技術人才。放到程式設計裡也是一樣的,單純會使用 API 的人並不會成為稀缺人才,充其量一箇中級開發。但是如果你熟悉 API 底層的原理,那麼也許你就可以晉升成為高階開發,從而提高個人的核心競爭力。並且一旦你熟悉了底層原理,你的眼界也會高於別人,不會糾結於我該選擇什麼框架,不會擔心個人的經驗是否會很大程度影響找工作。
所以,在這裡我想講的是:學習一件事物,熟練使用它是基本,在熟練使用以後,應該轉而去學習他底層的原理機制,甚至自己去實現一個類似的東西。當你這樣去做的時候,永遠不需要擔心自己是否會淘汰,因為你已經領先所有隻會用 API 的人了,這部分絕對是最多的。
最後,對於每個想在面試中獲得好的結果的人來說,都應該做到以下幾點:
- 夯實自己的基礎,基礎決定了大樓的高度
- 有深入挖掘知識的思想,對於每個知識點都應該考慮一下這玩意怎麼實現的,為什麼要有這玩意
- 不要做框架 API 的熟練工,儘量去了解框架底層的原理機制
如果你能做到以上幾點,你差不多就領先百分之 90 的人,路已經給各位指好了,就看各位走不走了。
