如何準備前端面試?常見疑問的 Q&A
2023年3月15日
ExplainThis 曾經分享了兩篇轉職心得文:
之後陸續有滿多讀者來信詢問要如何準備前端面試、準備過程與面試細節可以直接參考面試心得文,《如何準備前端面試?》會著重在筆者是如何前端面試、時程規劃、心得和準備技巧。本篇會針對過去讀者寄信來詢問的問題,做一些簡短的 Q&A。
回答讀者來信之前,先附註一下,以下回覆是 ExplainThis 根據我自己自身經驗,以及彙整其他 ExplainThis 共筆作者經驗的分享;然而每個人情況會不一樣,所以還是推薦多方參考,再評估適合自己的選擇!
Q1: 要辭職找工作嗎?
這個問題幾乎是有來信問的朋友都會問到的問題,筆者在過去的換工作經驗中,兩種決定都選擇過。先說結論,如果不是生理健康因素或是本身經濟無虞,我自己不會選擇辭職找工作。
我剛從 bootcamp 出來找工作時,有辭職全職找一段時間,雖然很幸運地那時在一個月內找到工作,但那一個月是真的真的很煎熬。所以在實際成為軟體工程師之後,我每次換工作都是在職找新的工作,因為我不想再體驗那種沒有收入,但下一份工作不知什麼時候才有著落的未知與恐懼感。
因此,關於這個問題,我的判斷準則是:沒有收入帶給我的壓力大於工作上的壓力。所以我寧可一邊工作一邊準備面試,也不要沒有收入全職準備。當然每個人遇到的情況不同,你可能需要判斷兩種極端情況帶給你的影響,選擇比較能承受的那個。
Q2: 工作很忙怎麼安排時間在職找工作?
延伸上述問題,在職找工作難度會比較高。除了時間被壓縮、同時應付工作上的需求之外,安排面試要一直請假也是不小的困擾。先不討論本身就是大神級的人物,大部分人在準備面試都需要花不少時間準備,尤其軟體工程師類型的工作,準備範圍又很廣,很難短時間速成。
我自己在職找工作的準備要點有三點:
在平常就把自己準備好
刷題跟履歷準備這兩件事情,CP 值是最高的,平時只需要花一點時間,真的要開始面試時,少了這兩件事情壓力會小很多。
訂定目標和時間規劃
時間怎麼規劃可以參考先前經驗分享中的段落。做這件事情的好處有兩個,一來可以讓我專注在這件事情,二來我可以根據時間規劃,來安排工作和面試的時間分配,如果因為工作比較忙,我每週能準備的面試的時間很少,那我就會把準備時間拉長。
找戰友
在這三點中,這一點對我來說是效益最大的,我自己一個人的時候也會想安逸,有夥伴一起往共同目標前進,會比較有動力與督促。如果有在關注 ExplainThis 的朋友,應該會知道我們三個朋友當初會想一起經營面試共筆網站,就是一起準備面試的緣故。我們除了一直都有讀書會之外,在要找工作時,幾乎每週都會一起練習模擬擬面試。
Q3: 不同國家的面試準備有什麼不同嗎?
關於這個問題,以我自己面不同國家的公司,以及我在面試這些工作時做的功課,我的結論是前端面試有很多種,但是跟國家關係比較小,跟公司類型關係比較大。如過要區分的話,可以分成下面四種:
演算法與系統設計類
通常軟體大廠都會面這兩類,演算法基本上就是把基礎弄熟,然後 LeetCode 經典題一定要刷。
前端現場實作類
各類 JavaScript 手寫題一定要練過 (可以參考這邊的整理),以及要練習各種元件的實作 (例如 dropdown、tooltip、carousel 等等)。
前端知識問答類
這類問題不要只停留在表層,要盡可能講深入,以及講背後的原因。ExplainThis 上有整理前端知識問題的題庫,有超連結的代表我們有整理詳解,可以參考參考。
回家作業實作類
有部分新創公司會出回家作業類的題目,在寫的時候切記不要只是照著功能寫出來,請務必用最高的品質,把程式碼的簡潔度、好維護度、效能、安全性等等面向都照顧好。
特別注意,這些並非一翻兩瞪眼,多數時候可能是同一個職位的不同關卡,會有不同類型的面試。例如我先前待過的德國公司,就是有回家作業,然後通過後的下一輪是前端知識問答;我先前面 Amazon 時,則是演算法、系統設計、前端現場實作分別在不同關卡被面到。
所以我會推薦這幾類面試都要掌握,但同時可以在要面某一間前,先上網查看他們的面試偏向哪種類型,或是在前面的人資輪時,就先向人資打聽看看該公司的面試取向是哪一種 (通常人資都願意分享)。然後特別針對該公司會面的類型加強準備。
另外,如果你有想要有實作的練習,例如在線上編輯器練習常考的 debounce、curry 以及 UI 等實作題,目前我們最推薦的前端練習平台,是由前 Meta 主任工程師打造的 GreatFrontEnd。除了有最全面的問題集,也有詳細且高品質的解答。
Q4: 如何獲得更多面試機會?
以筆者的經驗,有 3 點可以分享給大家
LinkedIn
在 Linkedin 上,只要你是工程師應該會有不少獵人頭 (Headhunter) 主動加你。當有公司招募,也會主動詢問面試的意願。記得要定期更新自己在 Linkedin 上的經歷。另外也可以主動去加在自己有興趣的公司的前輩,搜集資訊。
內推
內推會是比到官網投遞更有效的方式,所以不管是 LinkedIn 上的人脈或是自己的親朋好友在心儀的公司中,就不要害羞,主動詢問是否可以內推吧!
其他方法
ExplainThis 有分享過一篇文章《除了 LinkedIn 和求職網,3 個方法幫助你找到軟體工程師工作》,裡面提到可以透過其他管道找到軟體工程師的工作機會,歡迎大家去閱讀那篇文章
Q5: 有需要做 Side Project、開源專案嗎?
我自己在投履歷的經驗中,時常看到海外新創會特別註明:如果有開源專案的經驗加分,也有一部分的公司,會提到希望可以提供自己 side project 的網址或程式碼。我自己是沒有參與過開源專案,工作之後,也幾乎沒有寫過比較技術性的 side project,因此當時看到這些是頗為擔心。
但後來有問過前輩,或從我自己的經驗來看,我認為有當然會加分,但就算沒有,在有限的時間下,也不需要特別為面試生出 side Project 或者參與開源專案,過去的工作經歷,其實會更看重。除非你個人完全沒有工作經驗,或你覺得工作經驗不足,那你可能就必須要有一項可以來證明你的技術能力的專案,這時候 side project 跟開源專案就蠻建議挑一個做。
Q6: 海外前端面試的英文程度要多少才夠?
這個問題 ExplainThis 上有一篇文章專門在談,可以參考《找海外軟體工程師,英文要多好?》