最近觀看了《前端跳槽面試必備技巧》,視頻出舉出了很多實用技巧,特在此記錄。
視頻開頭給出了面試的定義:面試是測查和評價人員能力素質的一種考試活動。具體地說,面試是一種經過組織者精心設計,在特定場景下,以考官對考生的面對面交談與觀察為主要手段,由表及里測評考生的知識、能力、經驗等有關素質的一種考試活動。
一、面試准備
在面試前,對公司的情況、技術棧、企業文化、要求的知識點等都得做足夠的了解和准備。
1)職位描述(JD)分析
對公司的分析,快速判斷這個崗位是否與自己匹配,以及自己是否能Hold住該崗位。通過這樣的分析能快速決定是否要去面這個崗位,再有針對性的做技術准備,包括知識內容、准備程度等。
以京東金融的前端招聘信息為例,通過職位描述和任職要求(如下所列)來分析要求的知識點和技術棧。
職位描述:
1、負責京東金融企業業務PC端和移動端相關的前端開發工作;
2、負責企業金融App H5開發,完成前端界面與后端交互開發;
3、負責與后端工程師溝通協作、調試數據接口;
4、負責京東金融前端組件庫的建立;
5、負責對現有系統的優化與重構。
任職要求:
1、3年以上相關工作經驗,精通HTML5特性,了解HTML5最新規范,能夠熟練運用HTML5特性構建移動端的WebApp;
2、熟悉當前流行的JavaScript類庫,熟悉JavaScript面向對象編程方法;
3、熟悉Web標准,對表現與數據分離,HTML語義化等有一定理解,至少熟悉一種前端MVC框架並且具有實際經驗(不限React、Vue、Angular等);
4、具有前端結構分析與設計能力,一貫堅持編寫易讀、易維護、高質量、高效率的代碼,習慣於OOP開發方式;
5、對用戶可用性,用戶體驗,用戶研究等相關知識有深入的了解和實踐經驗;
6、對Web前端技術有強烈興趣,能對Web前沿技術研究和新技術調研,有良好的學習能力和團隊合作精神;
7、了解CSS預編譯語言,例如Sass、Less等;
8、熟悉Web構建工具Grunt、Gulp,能夠自己搭建前端構建環境;
9、有服務端(不限語言)開發經驗者優先。
職位描述分析:
1、PC端和移動端相互交叉,說明至少負責兩塊內容,並且兩者要求的技術棧不同,在面試過程中會考察兩個方面的知識。
2、第一層是Hybrid技術棧,需要准備JSBridge知識;第二層是純H5開發,與Native客戶端沒有交互,例如專題、活動等。
3、前端對溝通要求比較高,不僅要與后端溝通,還要與UI、產品等溝通,數據Mock(即模擬數據)是最基本的技能。
4、最重要的職位描述之一,前三條是基本要求,這一條是對崗位的難度設立,並且需要點時間准備,一兩天內是無法完成的。要求具備三點要求:
(1)基本功扎實,對原生JavaScript、CSS的理解是否到位。
(2)之前是否有前端組件庫的創建經驗。
(3)是否通讀過市面上其他的組件庫源碼。
5、難度與第四條相當,是否有能力對現有公司系統進行優化,並能一一列出,要做哪些步驟,做哪些工作,效果是什么。
任職要求分析:
1、3年以上是個虛數,不是重點。移動端在該技術團隊中很重要,需要掌握HTML5的內容,並且暗含對新知識有追求。
2、要求對面向對象和原型鏈非常熟悉。
3、理解最新的Web標准,前后端數據分離,做好一兩個小項目給面試官演示,語義化切忌通篇div,熟悉框架,不僅會用還要有實戰經驗,一定會問使用過程中遇到的問題。
4、這個不是初級崗位,初級前端精力放在業務上,對系統的架構和設計能力略有欠缺。准備一個項目的架構,把公司現有項目拿過來重新設計,包括目錄結構、復用性、模塊化、自動化測試等,要想的清楚和考慮周到。克制隨意的寫代碼習慣,要易讀易維護。
5、考察的點不是技術本身,而是候選人對產品的感覺,同樣寫下拉框,考慮的不僅是完成任務,還要考慮下拉框的性能以及如何改進。
6、去GitHub上多看幾個前端項目,閱讀源碼,多看技術博客的前沿技術研究。
7、前端基本技能,需要具備。
8、一定要好好准備,面試官可能會問Gulp和Grunt的區別、如何搭建自己的構建環境、是否寫過Gulp插件等。
9、看自己實際情況。
職位描述注重工作職責,任職要求注重技術深度、工作能力。
2)技術棧准備
簡歷上體現過jQuery,需要閱讀源碼,包括核心架構、事件委托、插件機制、兼容性等。
三大框架准備一個即可,需要閱讀源碼,可在網上尋找相關資料。
准備實戰中遇到的問題,包括如何解決、思路是什么等。
前端工程包括預編譯(Sass、Less)、構建工具(Gulp、Grunt)、打包工具(webpack)、npm(場景命令、npx)等。
3)自我介紹
自我介紹分為兩塊,第一塊是簡歷,包含四個關鍵點:
1、基本信息,姓名、年齡、手機、郵箱、籍貫。
一定年齡的人理應達到一個什么樣的技術水平,如果沒有達到,那么技術或能力不符合公司要求。
2、學歷,從大到小,博士》碩士》本科》大專。
3、工作經歷,時間、公司、崗位、職責、技術棧、業績。
給公司帶來了哪些業績,攻克了哪些技術難點。如果還沒有做出這些成績,那么現在就可以開始梳理哪些工作沒做好,重新研究方案(用代碼實現),作為工作產出(即工作難點),寫在簡歷中。
4、開源項目,GitHub和說明。
開源項目不是一撮而就,現在就可以開始,參與一些開源項目,切忌不能作假。
第二塊是自我陳述,包含兩個關鍵點:
1、把握面試的溝通方向。
在校招時,學生經常會說幫實驗室導師做過什么什么項目,還有的人說我在實驗室項目中是負責人。第一個,作為面試官,關注的點是:
(1)這個項目是做什么的?
(2)和前端的結合點是什么?
(3)你的角色是什么?
(4)你在項目中承擔的責任是什么?
(5)你做出了哪些成績?
第二個,最吸睛的是負責人三個字,作為面試官,關注的點是:
(1)你這個項目有幾個人參與?
(2)你這個負責人是個什么樣的角色,是項目管理還是技術管理?
(3)你做出了什么樣的成績?
(4)項目管理上,你的項目是怎么分配的?成員之間是怎么協作的?
(5)技術管理上,你是怎么解決技術配合的?遇到了哪些技術難點,如何解決?
很多人最后都招架不住,就是因為自己說的題目太大,讓面試官問了很多自己不擅長的問題。
萬事俱備只欠東風,前面那些內容就是為了夯實基礎,知識點系統細化,這就是所謂的萬事俱備。而東風就是此處的自我陳述,要擅於把准備好的內容通過合適的話題,引入到准備好的知識點上來。舉個例子:
我平時喜歡研究一些網站,愛看背后的技術原理和好玩的點,然后自己會思考,並願意嘗試使用更好的實現方式。
點到即止,后半句留給面試官。面試官之后會問你,你平時喜歡去哪些網站?研究了哪些代碼?這時候就引導了面試官,自然而然順理成章的引到了自己准備好的知識點上。
2、豁達、自信的適度發揮。
語音洪亮,自信不要自卑,別不敢聊。當不自信的時候,氣場已經下來,處於劣勢,聊天不會順暢。適度發揮是一個很有技巧的動作,在引到自己擅長的領域后,不要驕傲,不能膨脹,不要有這種心態。你的目的是讓他欣賞你,而不是證明不如你。
面試官問的問題完全是根據簡歷和自我陳述而來,不會憑空想象,而是量身定制的問題。
關於自我陳述的實例有兩個口訣:
(1)自如談興趣、巧妙示實例、適時討疑問。
面試就是聊天溝通,要豁達自信,不能瞎談,聊與前端有關的興趣;說半句留半句,引導面試官;不懂就要問,但不要以不知道、不清楚、我不懂作為結束語,應該要思考一下,然后親切地說能否指點一下、給些建議、分享些資料等。
(2)節奏要適宜、切忌小聰明。
坦誠如實、心態平緩,不要不屑、耍小聰明。例如布局,大部分人寫了兩個就不耐煩了,這是不對的,你這叫實現,但如果寫出四個、甚至六個,面試官對你的評價就會從了解基礎變為追求技術難度、聰明,評價一下子上升了一個高度。面試題沒有標准答案,只說一個是不夠的,要表現出比別人聰明、可培養。
關於自我陳述的實戰也有兩個口訣:
(1)方向要對,過程要細。
二面和三面會問很多實戰內容,例如你是否做過技術決策。即使是做業務也會有技術決策,例如性能優化。大方向要對,即要圍繞所有的項目中跟這個優化相關的內容,要能列出優化原理。
(2)膽子要大,心態要和。
給你出再難的題目,不要心急也不要自卑,例如出算法題,准備不充分的話,很多都會放棄。但你一定要先想,放心大膽的猜,根據自己的經驗分析出方案,即使是錯的,也不要緊。
膽子要大表現的是勇於承擔責任,敢於挑戰未知。如果在這個難題前,表現出思維獨特,視角獨特,解決問題的能力獨特,不管最后結果如何,你都已經贏了。
心態要和分兩方面,當問的問題都能對答如流時,不要表露出得意,認為這里的面試很水;當問的很多問題都答不上時,不要瞬間自卑,也不要有怨氣,這很容易讓面試提前終止。
二、面試項目
1)面試技巧
1、准備要充分。重點掌握項目原理和背后的技術難點。技術負責人會問項目問題,而且是有深度的,例如項目架構、技術能力、人員組織以及技術難點攻克。
2、描述要演練。提前組織語言,描述要展示的點,並把握好時間,模擬演練。面試官特煩啰里啰嗦半小時,卻沒有說出亮點和難點。他要重點摸清你所有的項目經驗,考核項目難度,判斷你能否經得起公司業務的考驗。
3、引導找時機。如果業務負責人沒有問項目,也要想辦法找時機把准備的資料說出來,但不能太生硬。當他不想問你事情、對當前話題不感興趣或對你有些失望時,要趕緊表現自己的優勢。或者當你和面試官聊的很投機時,你為了加大他對你的認可度,也可以點出自己准備的項目優勢。
4、優勢要發揮。這時候不要謙虛,自己優秀的能力要發揮出來。
5、回答要靈活。不要把話說滿,別得意,技術沒有標准答案,都是為了解決業務,至於哪個方案是最優的呢?沒有標准說法。
2)面試模擬
考查的點包括:
1、業務能力。例如:
(1)我做過什么業務?用一兩句話簡短描述。例如獨立負責360數據彩票走勢圖開發。
(2)負責的業務有什么業績?列出用戶量、收入、性能等能量化的數據。例如歷時3周完成所有彩票開發,用戶量上漲15%。
(3)使用了什么技術方案?別人做不到的,你做到了,這就是難點。例如區別常規Canvas方案,使用vml+svg方案。
(4)突破了什么技術難點?沒有遇到問題,說明你研究的不夠深入。例如解決了走勢圖高級繪圖板的開發。
(5)遇到了什么問題?例如橡皮擦的問題、動態連線計算等。
(6)最大的收獲是什么?經驗的沉淀和積累,業務上有什么收獲,技術上有什么收獲。例如對業務的理解更加深入、對技術圖表更能把控。
2、團隊協作能力,面試官不會直接問,而是通過面試過程中的一些描述,總結你的協作能力。例如:
(1)對彩票足彩的獎金算法有深入研究,業內第一。
(2)為H5、客戶端講解算法並協助完成開發。
(3)和PHP、PM同學在幾小時內快速支持競猜活動。
(4)和leader獨立負責彩票PC站。
3、事務推動能力,跨部門或跨組,涉及效率問題。例如:
(1)對歷史算法更新換代。
(2)推動專題的CMS架構。
(3)主導客服系統的建設。
(4)完成多項專利的申請。
4、帶人能力。例如:
(1)帶一個社招生完成數字彩的開發和維護。
(2)帶一個實習生完成專題活動的開發。
(3)代碼規范、Review。
5、其它能力。
三、HR面
1)面試技巧
1、樂觀積極。
2、主動溝通。
3、邏輯順暢。
4、上進有責任心。
5、有主張,做事果斷。
2)職業競爭力
1、業務能力。可以做到行業第一。
2、思考能力。對同一件事可以從不同角度去思考,找到最優解。
3、學習能力。不斷學習新的業務和技術,沉淀、總結。下班后參加一些小型的分享會。
4、無上限的付出。對於無法解決的問題可以熬夜、加班。雖然沒人喜歡加班,但也不要明確的拒絕加班。
3)職業規划
1、宏大目標。在業務上成為專家,在技術上成為行業大牛。
2、近階段的目標。不斷的學習積累各方面的經驗,以學習為主。先清楚分配的崗位做什么,快速梳理難點和突破點,近一年時間要把它做到極致。
3、長期目標。做幾件很有價值的事情,例如開源作品、技術框架等。
4、方式方法。先完成業務上的主要問題,做到極致,然后逐步向目標靠攏。希望公司有技術分享,讓新人成長。公司提供哪些資源和平台。
5、多贊美公司,多贊美HR。說好話,誰都愛聽,但誇人要誇到點上。
PS:2019年自己整理了些面試資料,打算2020年挪窩的時候用,主要分為幾塊。
- 面試經中包括面試的技巧,簡歷的包裝,面試官點評簡歷等。
- LeetCode 算法題,按真實面試中的出現頻率降序排列。
- 和朋友一起翻譯了一本外國的面試書《101 Toughest Interview Questions》,以問答的形式總結了 101 個問題,可以拓展一下自己的面試思路。
- 手工整理了 1000+個計算機專業英語單詞,單詞來源於《計算機專業英語(第 3 版)》,分為文章中使用到的詞匯表和附錄中的專業英語詞匯表。
- 面試題目以前端的為主,包括 React、Vue、ES6、性能等,有些總結過的是有答案的,而有些則是沒有答案的,還搜集了一些 GitHub 上優秀的面試倉庫。