程序員求職時,在準備階段都要“背誦”大量的技術面試題,以應對各路精明面試官的百般折磨。
這里我把“背誦”一詞加上了引號,意指此處的“背誦”可不是一般的背誦。如果你以為我要教你過目不忘記的背誦技巧,那可能會讓你失望了。
請允許我先自賣自夸一波。作為程序員老兵,混跡江湖多年,被面試官們無情地傷害過,也作為面試官無情地“傷害”過很多人(一陣奸笑聲飄過)。
現在,我將總結出一套無敵的面試題“背誦”方法論,分享給在座的各位。幫助大家早日脫離茫茫題海、抵達成功的彼岸。
小板凳坐好了,小本本快鋪開,我要開講了。先上圖,建議收藏。
面試題的三定法則
如此高大上的高效“背誦”面試題的三定法則,沒錯,就是我的原創,請允許我“高調”地逐一解讀給大家聽。
一、確定題目類型
把海量的技術面試題,進行分類。你會驚奇地發現,這些面試題無非就是這三大類,分別是有
· 固定答案的封閉式問題
· 考你理解深度的開放式問題
· 考你編程能力的邏輯算法題
舉例說明:
· 題目1:Vue 的生命周期有哪些?
· 題目2:請談一談你對 MVVM / MVC / MVP 的理解。
· 題目3:請用 js 計算 1 ~ 10000 中出現的 0 的次數。
不難發現:
· 題目1是有固定答案的封閉式面試題;
· 題目2開放式題目,側重考你的理解深度;
· 題目3就是典型的邏輯算法題了。
因此,在你“背誦”面試題的第一步,你首先要搞清楚的就是題目類型。不同類型的題目,預示著你需要搭建不同結構的知識體系,你需要提取不同深度的知識重點。
二、制定答題框架
當確定了面試題題目類型以后,就可以開始制定“背誦”框架了,下面舉例說明。
以 題目1 為例:
題目1是一道有固定答案的封閉式題目,你可以使用并列式結構來提取面試題中的知識要點。
舉例:在初始化階段有 beforeCreate、created,在掛載階段有 beforeMount、mounted,在更新階段有 beforeUpdate、updated,等。
你還可以使用遞進式結構來提取面試題中的知識要點。
舉例:Vue生命周期總共有 11 個,常用的有 8 個,分為初始化、掛載、更新和銷毀這 4個階段。工作中我常用的有 created、mounted、beforeDestroy 這三個,created里我常用來觸發調api 接口,mounted 中我常用來執行 DOM 更新后的相關邏輯操作,比如開啟定時器等,beforeDestroy 中,我常用來清除定時器、清除Vuex中緩存等。良好地理解生命周期,可以幫助我們高效地解決工作中的若干bug,比如……
當你有了這種 框架結構式的答題思維 以后,我們在準備面試題、背誦面試題時,就可以刻意地從大段大段的答案中提取出重點知識,而不是像背課文一般死記硬背。這種結構化的背題方式,不僅效率高,而且記憶更持久。
事實上,用人單位和面試官需要的是一個有邏輯的程序員,而不只是一個“能背誦”的“記憶力大師”。
以 題目2 為例:
題目2是一道開放式題目,你采用 并列式結構 來準備面試題,那么你只用分條說明白 MVVM、MVC 和 MVP 即可。
如果你采用 遞進式結構 來準備,你可以先從前端框架發展史的角度講一講 3 種架構模式的各自特點,再講一講彼此的優勢和劣勢,最后談一談你對 MVVM 的深入理解。
以 題目3 為例:
題目3是一道邏輯算法題,你可以采用 順承式結構 來準備。要完成這道算法題,你該怎樣寫代碼,你的思路是怎樣的。第1步干什么,第2步干什么,第3步干什么……這有點“面向過程編程”的味道了。即使你無法在白紙上手寫出正確代碼,你仍然可以借助偽代碼來展示你的解題思路和詳細步驟。
你還可以采用 并列式結構 來準備這道題,即你有 N 種解題思路,逐一把它們說清楚。如果采用 遞進式結構 來準備,你除了要逐一說出解題思路,還要對這 N 種解題方案進行優劣分析,最后指出你的終極選擇、并解釋為什么。
從上面三個例子可以發現,只要你清楚了題目類型,你就可以靈活地選擇 3 種不同的答題框架來準備面試題。
· 并列式結構:強調對重點知識的提取與羅列,
· 遞進式結構:要求你能夠由淺入深、層層升級,
· 順承式結構:要求你有較強的過程化思維、知道先做什么再做什么。
你學會了嗎?
三、淡定應對追問
在技術面試過程中,有經驗的面試官都會不斷地追問。
比如,當你回答了“Vue常用生命周期”后,面試官可能會追問——“請問在 beforeMount 和 mounted 之間,Vue在后臺做了哪些工作?”。
舉個例子:
我可以采用 順承式結構 來回答這個問題。我說:“beforeMount 和 mounted 之間,Vue在后臺做了 3 件事。
第1步,當聲明式 data 發生變化時,Vue先是生成一個新的虛擬DOM副本。
第2步,Vue將對內存中的這兩個虛擬DOM執行 diff 運算,找出 data變化前后的最小差異。
第3步,Vue使用真實的DOM操作,把上一步中找到的最小差異更新到頁面中去,視圖完成更新。”
聰明的你又發現了,在回答這個被追問的問題時,我是不是提到了很多可能被繼續追問的新知識點啊,比如“虛擬DOM”、“Diff運算”等。沒錯,面試官很有可能繼續追問——“什么是虛擬DOM?”、“Diff 運算是怎么實現的?”等。
這就是“追問”的藝術,有經驗的面試官一定會把你問到“絕境”,把你問倒為止。追問的問題也會越來越深、越來越難,如此才能確定出你的真實 Level ——你值多少錢,你是否符合我公司的用人需求。
如果你有時間和精力,你仍然可以使用“制定答題框架”中學習到的 3 種答題框架,來應對一切可能被追問的問題。本小節的重點,是教你另外 3 個技巧原則,助你從容應對被追問。
不挖坑原則
指的是,當你在回答面試問題時,盡量不要提那些自己不懂的、或者一知半解的知識點。比如,如果你對 Diff 運算不太理解,為了避免被追問,你在回答“beforeMount 和 mounted 之間 Vue做了什么”這一問題時,應該避免提到“Diff 運算”一詞,或者別過度提到它。
這就是“不挖坑原則”,請確保你說出來的關鍵詞和知識點,都是你已經做過功課的。
不吹牛原則
這個原則很容易理解,就是你在回答問題,不要說大話。比如說,“我精通JavaScript”,“我是一個高級全棧開發工程師”等,這都屬于“吹牛”。對大多數人來講,可以說“熟練使用”,但說“精通”就有點夸張了。
一旦你說了大話,這很容易遭到面試官的追問。萬一你答不上來,會給面試官留下“不誠實”的印象,那么你的面試成功率必將大大降低。
擅引導原則
這個原則和“不挖坑原則”有異曲同工之妙。“不挖坑原則”是避免提到自己陌生的領域,而“擅引導原則”是鼓勵你多提自己熟悉的領域、多提自己做過功課的領域,通過語言強調等技巧,把面試過程向有利于自己的方向引導。
有經驗的求職者,要有這樣的自信,要敢于引導面試過程,讓自己占據溝通的主動立場。
在這個3 個原則的指導下,相信你一定可以更好地準備面試。在面試準備階段,用正確的方法、有目的地“背”題,有邏輯地答題,講自己擅長的話題,效果肯定會更好。
寫在最后
我經常和同學交流,面試不等于工作,面試不過是一場“表演”。擅長面試的人,未必就一定能成為開發高手;而不會面試的人,必將郁郁不得志、空有一身本領。
面試,是我們進入理想公司的第一道門檻。毫不夸張地講,面試過程中七分靠“演技”、三分靠實力。作為求職者,你必須清楚,你需要做大量的前期準備,才有可能淘汰其它的面試競爭者。打鐵還需自身硬,你準備好了嗎?
更多關于html5培訓的問題,歡迎咨詢千鋒教育在線名師,如果想要了解我們的師資、課程、項目實操的話可以點擊咨詢課程顧問,獲取試聽資格來試聽我們的課程,在線零距離接觸千鋒教育大咖名師,讓你輕松從入門到精通。