知識(shí)體系與面試世界觀
大家好,我叫修言,《前端性能優(yōu)化原理與實(shí)踐》、《JavaScript 設(shè)計(jì)模式核心原理與應(yīng)用實(shí)踐》等書作者,目前供職于某大型電商互聯(lián)網(wǎng)公司。
在進(jìn)入前端世界的這幾年里,筆者歷任創(chuàng)業(yè)團(tuán)隊(duì) TL 、滴滴出行前端工程師,到現(xiàn)在成長(zhǎng)為大型互聯(lián)網(wǎng)公司的業(yè)務(wù)線 Owner;從五人小組、十人團(tuán)隊(duì)、千人公司到萬人集團(tuán);從作為面試官去面別人,到創(chuàng)業(yè)失敗排著隊(duì)被別人面、再到重新成長(zhǎng)起來后去面別人 —— 這一路折騰下來,沒少和面試這回事兒打交道。前后接觸了大量形形色色的前端團(tuán)隊(duì),也沉淀了太多與面試有關(guān)的思緒,最終形成了一套簡(jiǎn)單直接、可復(fù)用性較強(qiáng)的面試思路和解決方案。
在此基礎(chǔ)上,經(jīng)過反復(fù)的打磨、實(shí)踐的驗(yàn)證和表達(dá)層面的梳理,便有了你手里這套專欄。
面試官看面試
應(yīng)試教育體制下成長(zhǎng)起來的孩子(包括我自己),我們都有一個(gè)共同的特點(diǎn):容易被考試激發(fā)學(xué)習(xí)熱情。
這點(diǎn)多年來一直被人詬病,不過在我看來,它不是一件完全的壞事。
具體到面試這個(gè)場(chǎng)景下,它甚至是一件好事 —— 很多工程師平時(shí)可能埋頭工作(在校的同學(xué)可能是埋頭理論課程的學(xué)習(xí)),每天都在為了解決具體的眼前的業(yè)務(wù)問題而想破腦袋,其實(shí)很少有機(jī)會(huì)向內(nèi)反思、反思自己的知識(shí)體系、嘗試去修繕或者重塑它 —— 畢竟眼前的問題已經(jīng)夠多了,先把活干完才是最要緊的。而 “干活” 往往意味著重復(fù),意味著被消耗,它善于把開發(fā)者推進(jìn)一個(gè)尷尬的 “吃老本” 的境地里去,難以脫身。可能唯有在面試這場(chǎng) “大考” 來臨前,大家才有機(jī)會(huì)留出相對(duì)完整的時(shí)間給自己,嘗試去做一次大規(guī)模的知識(shí)掃盲和生涯復(fù)盤。
在撰寫面試專欄之前,為了能盡可能地了解讀者,筆者花了大量的時(shí)間面向不同層次的前端同學(xué)進(jìn)行了面試方面的調(diào)研。這個(gè)過程中,對(duì)一個(gè)現(xiàn)象非常在意:很多同學(xué)的收藏夾里有大量的面經(jīng)、真題甚至成套的面試教程,但是他們的知識(shí)體系仍然處于一個(gè)非常脆弱、一碰就碎的狀態(tài),完全扛不住我們作為面試官日常非常喜歡的 “一問再問,追問到底” 這種考查模式。
這也正常 —— 擁有一把錘子,不意味著你會(huì)立刻變成一個(gè)木匠。同理,手握大量的面經(jīng)、真題、大部頭,也不意味著就可以從小白搖身一變成 offer 收割機(jī)。這中間的跨越,第一步,也是最大的一個(gè)前提,就是需要你真正把基礎(chǔ)給砸實(shí),建立起一套在你腦子里扎下根兒、怎么甩都甩不丟的知識(shí)體系。
知識(shí)體系規(guī)劃
我們整個(gè)專欄的知識(shí)體系規(guī)劃如下:
如果你是我的老讀者,相信你早已見過一份類似的思維導(dǎo)圖。最原始的思維導(dǎo)圖比上圖內(nèi)容復(fù)雜很多,那還是我在 2019 年下半年小范圍給大家分享過的一張 “私貨”,供有面試需求、卻沒有備考思路的同學(xué)面試參考用。隨后,漸漸有不少同學(xué)找到我,反饋說不夠具體,“看了修大這圖,卻還是過不好這一生” 是我在那段時(shí)間聽過最多的吐槽。
去年年中我立了個(gè) Flag,打算把關(guān)于面試的思考和沉淀給具象化。半年來,一邊 996 一邊研究自己做過的題、研究別人做過的題、研究自己出過的題和別人出過的題,現(xiàn)在,是我交作業(yè)的時(shí)候了。
關(guān)于方法論的思考
怎么建立面向面試的知識(shí)體系?似乎不管你去問誰,對(duì)方都只會(huì)告訴你:刷題!看書!
然而現(xiàn)實(shí)中,就算每個(gè)備戰(zhàn)面試的同學(xué)都在玩命地刷、反復(fù)地看,但最終的結(jié)果仍是大相徑庭的 —— 這是因?yàn)椴煌娜藢?duì)學(xué)習(xí)材料的選擇和運(yùn)用不同。
有的同學(xué)比較幸運(yùn),能夠幾乎不走什么彎路、在有限的備戰(zhàn)時(shí)間中迅速地搭建起自己的前端知識(shí)體系。但更多的人做不到、或者說沒法一下就做到,此時(shí)你要做的不是一味地死磕和問責(zé)自己,而是向外去尋求一些幫助、嘗試切換自己的作戰(zhàn)模式 —— 一下不行,我們就兩下、三下、四下去搞定它。
前端知識(shí)體系本身是龐大、瑣碎的,在這樣的前提下,又存在技術(shù)點(diǎn)迭代飛快、信息碎片化的特征。種種因素綜合起來,使得前端面試的知識(shí)構(gòu)建過程變成了一個(gè)漫長(zhǎng)的、內(nèi)耗極大的過程 —— 學(xué)習(xí)者不得不拉開一個(gè)相當(dāng)長(zhǎng)的戰(zhàn)線,閱讀大量的紙質(zhì)書、電子書、面經(jīng)和真題之后,篩除其中錯(cuò)誤、無用的部分(新手或許還未必能夠很好地完成這個(gè)過濾的過程),再像拼拼圖一樣把零散的知識(shí)塊組裝到一起,才能漸漸切入到面試這個(gè) “局” 里來 —— 不容易,我現(xiàn)在想起來也覺得,真 tm 難啊。
跟上節(jié)奏,保持樂觀
技術(shù)類內(nèi)容是難啃的,如此海量的技術(shù)內(nèi)容更是在挑戰(zhàn)每一個(gè)同學(xué)的耐心和意志品質(zhì)。有人說,“學(xué)習(xí)本身就不是一件容易事”,這話不假。但當(dāng)一塊知識(shí)的學(xué)習(xí)成本變得這么高、高到令人望而卻步的時(shí)候,就意味著問題已經(jīng)產(chǎn)生了,它需要被解決。正因?yàn)槿绱?,筆者希望能創(chuàng)作一個(gè)大家能看得懂、看得下去的專欄,希望它能成為各位求職路上的一個(gè)親切的伙伴,而不是一塊讓各位一想起就頭大、可望而不可及的 “心病”。
“以面試為契機(jī)、幫助大家完成知識(shí)體系的搭建”,是這個(gè)專欄要帶大家做的第一件事,也是最重要的一件事。做完了這份 “作業(yè)”,相信搞定一個(gè) offer 對(duì)各位來說已經(jīng)不成問題了。
做工程師,不做答題機(jī)器
話說回來,如果你的目標(biāo)不僅僅是 “有一個(gè) offer” 這么簡(jiǎn)單,而是想要挑戰(zhàn)一份好工作、挑戰(zhàn)大廠,那么各位還需要做一道 “附加題”—— 建立一套面向面試的思維方式。很多同學(xué)存在一個(gè)誤區(qū),認(rèn)為我只要能記住那些繁復(fù)的知識(shí)點(diǎn),比如閉包、上下文、某個(gè)輪子的特性之類的,我大概就 “無敵” 了。至于思維方式,這玩意兒聽上去太虛了,不是我們做技術(shù)的需要關(guān)心的東西。
誠然,基本功確實(shí)每一個(gè)人都避不開的,但是在面試過程中,對(duì)面試官來說,他期望看到的并非一個(gè)沒有感情的答題機(jī)器,而是一個(gè)具備強(qiáng)大思維能力的工程師 —— 一個(gè)能出活、能扛事兒、能解決問題的戰(zhàn)斗伙伴。
“面向面試的思維方式”,如何定義、如何考察?如何將這種能力內(nèi)化為自己的一套思維工具?
這就是我們專欄要解決的第二個(gè)問題。
這塊知識(shí),學(xué)起來比硬的技術(shù)點(diǎn)要費(fèi)力多了 —— 它涉及到你對(duì)自己認(rèn)知能力、認(rèn)知水平的改造。我知道有的同學(xué)打開一份像這樣的專欄,你可能就直奔著知識(shí)點(diǎn)就去了,迫切地想要解決一些相對(duì)具體的問題,從而刻意地忽略了這些更高層次、抽象的能力的學(xué)習(xí)。
不過沒有關(guān)系,讀就完了 —— 這部分知識(shí)會(huì)被我規(guī)劃在專欄的最末尾處。習(xí)慣一個(gè)人說話,需要時(shí)間。相信在專欄的結(jié)尾、在跟我一起打了那么多大怪小怪之后,學(xué)習(xí)區(qū)區(qū)一個(gè)章節(jié)的 “面試思維課” 對(duì)你來說不會(huì)是什么難事。
此外,在搭建知識(shí)體系的過程中,我也會(huì)引導(dǎo)各位去思考 —— 這個(gè)題,為啥這樣出?出這道題的時(shí)候,面試官在想什么?慢慢你就會(huì)領(lǐng)悟到,一道題之所以成為高頻考題、或者說面試官之所以抓著某個(gè)點(diǎn)不放,一定有其背后的原因。如果能夠理解面試官的腦回路,相信你在觸及自己知識(shí)邊界的題目面前,也能夠巧妙地化險(xiǎn)為夷、把握面試的主動(dòng)權(quán)。