聊聊前端面試

最近 Zoom 國內又開放招聘了,咱們組有了前端的 HC,因此我也參加了幾場面試。合肥總體的前端氛圍很通常,厲害的人比較少,來參加面試的偏初階的比較多,不過咱們面試也不卷,不多出一些複雜的算法題,面試難度並不高。咱們對候選人的要求也沒有那麼高,基本上你能達到 p6 的水平,就能經過個人面試。固然,若是你是工做年限較久(六年以上)的老玩家,我對你的指望和要求也會相應的提升。前端

在面試的過程當中我也發現了不少問題,所以做爲一個 9 年工做經驗和 7 年面試經驗的老兵,我想分享一些經驗給你,但願看完後對你有所幫助。程序員

面試的目的

先想一想看,爲啥要面試?面試

首先,面試是一個雙向選擇的過程,在這個過程當中,面試官經過一些提問和交流來判斷候選人是否合適這個工做崗位,他是一個怎樣的人,你將來想不想和他一同共事;那麼候選人也能夠經過面試的過程來感覺到面試官是否專業,是不是本身心儀的公司或者是團隊。算法

其次,對於候選人來講,面試的過程也能夠發現本身的不足之處,經過一些專業性的技術交流能夠了解本身對於某些知識點的理解和掌握的狀況,以便以後查漏補缺。此外,經過對本身經歷和項目的描述,也能夠鍛鍊本身的表達和溝通的能力,若是在面試中發現本身並無發揮好,那麼則能夠增強這方面的練習。編程

最後,對於用人單位來講,面試除了幫助本身招到合適靠譜的人才以外,也是豎立本身公司形象的機會,對於整個面試流程安排夠不夠專業,面試官的資歷夠不夠深,能不能讓候選人有個不錯的面試體驗,都多多少少會影響公司在業內的口碑。所以,不少大廠都會對面試官的級別要求比較高,並會給予必定的面試培訓(我在百度的時候就有幸被培訓過)。小程序

寫給候選人

對於候選人,我主要想從簡歷和麪試準備這兩個方面給你一些指導。瀏覽器

簡歷

寫簡歷的目的,就是讓面試官和 HR 能從幾頁紙中對你的過往經歷有個大體的認識。首先,你得保證簡歷的真實性,不能有半點造假,由於這涉及到一我的的誠信問題。有些人爲了讓本身簡歷能被篩選經過,在學歷和工做經歷上做假,有些人爲了讓本身能多談一點薪資在流水上做假。對於知名企業,對這些造假行爲是零容忍的,由於不少企業都會對候選人作專業的背調,一旦查出來有做假行爲,不只 offer 沒了,也可能會有永不錄用的風險。性能優化

那麼有些人可能會問:我學歷不行,又沒啥工做經驗,不造假,簡歷都通不過呀。markdown

很差意思,若是你的資歷不夠,那麼你暫時就是進不了一些名企,能夠先進一些小公司鍛鍊,而後有必定工做經驗,且技術能力提高後,再考慮進大廠。你能夠想一想看,爲啥一些優秀的本科生和碩士生一畢業就進入了名企,那是別人寒窗數十年努力學習換來的,因此後面路天然就好走一些。若是你年輕時候由於不懂事或者一些不可抗力因素而荒廢了學業,那麼起點低也是正常的,可是這樣並不影響你將來經過努力學習和奮鬥改變命運。數據結構

名企的 HR 對候選人的背景要求高,也是從一個機率學的角度來考慮的,畢竟,好的學校和工做背景意味着更好的學習能力和工做能力,這樣的候選人符合崗位要求的機率天然就更高。

對於在小公司工做的人,進入大廠也並非不可能,可是你可能要花費比通常人更多的努力去學習,那些學歷背景很差最後也成爲大佬的人,付出的努力,背後的辛酸,可能只有他們本身知道。

另外,經過大廠外包轉正,或者結識圈內好友內推大廠,都會多一份成功的機會。 回到簡歷自己,除了真實性,第二個要點就是要突出重點。簡歷並非記流水帳,你不須要把以前全部過往的工做經歷都寫在簡歷上,面試官也沒時間看。建議你給每段工做經歷中挑出一兩個重點的項目,詳細去寫項目的技術重點和難點,以及你在其中負責的角色,作的事情。

對於技能這塊,也是要突出你擅長的技術棧,弱化甚至不用去寫一些你不熟悉的技術棧。有些人在技能方面就是在羅列一些技術名詞,這樣毫無心義,一旦面試官去問其中一些技術點,而你又不能很好的回答,是很是減分的。

讀到這裏,可能有些人會說,我以前待的都是一些小公司,業務簡單,項目都不難,沒啥可寫的。但你有沒有想過,你天天的開發工做,有沒有痛點或者不爽的地方?好比常常經過 CV 大法拷貝代碼, 你有想過抽離和複用這些模塊嗎?公共 JS 模塊的共享,你是經過拷貝代碼,仍是本身搭一個 NPM 私服?全部項目都放在一個 repo 下,編譯打包速度慢,有沒有想過拆成 multiple repo 或者是 mono repo?開發上線流程不規範,有沒有想過參考一些業內成熟的方案搭建一套 CI/CD 方案呢?使用一些開源庫遇到問題,你是去百度或者等着別人去解決,仍是本身研究源碼而後去提個 PR 呢?

再舉一個正面的例子,多年前在知乎上,我看到一個在小公司作小程序的哥們,由於小程序的審覈特別慢,並且也不容許動態加載和經過 new Function 或者 eval 的方式運行 JS 腳本,他就想到一個法子,大體就是經過把 JS 腳本當作數據來下載,而後經過 JS 實現的 JavaScript 解釋器去動態跑這些代碼。雖然這種方式對開發來講可能不夠優雅,但也解決了他大部分的需求,另外這種愛折騰技術的精神,大廠能不愛嗎?

除了突出重點以外,簡歷還須要有亮點。近幾年選擇作程序員的人愈來愈多,競爭愈來愈激烈,那麼如何讓你的簡歷脫穎而出,就須要你在簡歷中有一些亮點了。

那麼什麼算亮點呢,對於應屆生來講,好比優秀的學歷背景、名企實習經歷、競賽獲獎,知名期刊發表過論文等等。對於有工做經驗的人來講,好比名企的工做經歷,有技術博客(有必定高質量的博文),作過知名的開源項目或者參與知名開源項目的共建,寫過書等等。

固然,亮點只是加分項,它不能決定你是否能經過面試,但至少從簡歷上看,面試官會對你多一分興趣。 不過你要記住,若是沒有亮點,那就不要寫了,好比我看過一些候選人的博客,內容簡單,並且從時間上來看都是近期的寫做,有很是大的專門爲面試而準備的嫌疑;還有一部分的候選人貼的 GitHub 地址,點進去後空空如也,這些反而是減分項。

最後,簡歷上不要寫一些偏主觀的話,好比「我對技術感興趣」,你對技術感不感興趣,從你有沒有寫過技術博客,有沒有參與過開源項目,或者翻譯過一些國外技術文章等等一些事情就能夠看出來。

面試準備

那麼,一旦你的簡歷經過了篩選,進入到面試階段,你須要作哪些準備呢?

首先,技術面主要是考察的就是技術能力,面試官對候選人的技術評價,一般會從基礎知識、知識深度、知識廣度三個方面來考察。在我看來,知識點主要是靠平時工做和學習的積累,你須要構建本身的知識體系,把這些知識點都牢記在本身的腦海中,那麼面試的時候天然就能夠和麪試官談笑風生。 前端的知識點多而雜,有些人會在面試前幾天找一些常見的面試題來看,可是前端知識點那麼多,短期想搞透是很難的。因此個人建議是要把學習融入到平時,若是是你工做中遇到的技術,那麼你必需要深入理解其背後的本質,並作一些延伸學習。除工做以外,你也能夠找一些和工做相關但可能暫時沒有用到的技術學習,我公衆號裏推過不少課程,大部分課程都是很是值得學習的,我本身也作了幾門 Vue.js 的課程,若是有條件,跟着名師學習要比本身踩坑效率高的多,一旦學進去了,投入產出比也是很是高的。

不要跟我說平時工做太忙沒時間學習,那都是藉口,即便你晚上加班到 12 點,你有沒有想過你的有效工做時間是多少,中間有沒有聊天、刷抖音、頭條、微博,你的工做效率是怎樣的,多少時間是在開發,多少時間是在改 bug,多少時間在開低效會議。

若是有心學習,天天抽兩個小時不成問題,若是你真的天天 12 小時滿負荷工做,那麼你應該換個工做了,注意本身的身體吧。

我是反對刷面試題的,即便你在刷題,那你也不該該去揹他們,而是查漏補缺,前端知識點不少,有些你沒接觸過的,不會也沒有關係,可是你會的,你必定要把它們很好地表述出來。

爲何背題沒有用,舉個例子,「從輸入 URL 到頁面渲染中間發生什麼」 這是一個老生常談的問題,有些候選人回答這個問題感受一看就是準備過的,可是一細問都會露餡,好比 TCP 的三次握手,每次發了回了什麼樣的包?瀏覽器解析文檔過程當中,遇到外鏈的 JS,會不會阻塞渲染,遇到外鏈的 CSS,會不會阻塞渲染,若是阻塞了,緣由是什麼,若是沒阻塞,緣由又是什麼?一道題的背後,每每蘊含着很是多的知識點,若是你知識蜻蜓點水似地只背大體流程,意義並非很大。

有些人可能會說,這道題細節太多了,我不可能都會啊。確實是不少,我也並不要求你所有掌握,我想表達的是,你能夠從這道題背後,延伸學習不少基礎知識。若是你不瞭解其背後深層次的原理,你去作性能優化基本都是無從下手。可是,若是你掌握的細節越多,就能說明你的知識儲備很豐富,有些時候會讓面試官眼前一亮。

其次,面試過程當中面試官一般會問你簡歷中的項目的技術難點,技術挑戰,你在其中的角色,以及怎麼去解決其中遇到的問題的。這塊是能夠好好準備一下的,由於這裏面不只能體現出你的技術能力和思考能力,還能體現出你的表達能力。所以,平時多作技術分享,有機會參與一些述職演講都能很好地幫助你提高這方面的能力。

另外,據說如今不少大廠內卷嚴重,面試喜歡問算法題,那麼要不要突擊刷算法題呢?

在我看來,算法題的學習也是平時工做積累下來的,好比揹包問題、圖和樹的遍歷、貪心算法,在工做中我都接觸並實踐過,那麼天然對它們的理解更加深入。

若是你確實工做中接觸不到什麼算法題,但你對算法感興趣,能夠抽點時間去學習一些常見的數據結構和算法。除此以外,你也能夠去看一些源碼,也能學習到一些常規算法的實現。在我看來,代碼看的多了,寫的多了,天然能夠接觸到算法相關的知識。

固然,面試官出算法題的目的也不是要考倒你,一般這只是一個加分項,主要考察你的思惟能力,若是面試中真的遇到一些算法題卡殼了,你也不要放棄,至少要說一些你的思路,徹底放棄是下下策。

要記住,面試是一個平等的過程,做爲候選人就是要儘可能把本身的能力和優點展現給面試官,尤爲是一些匹配崗位需求的技能,能夠 show 出來。不要以爲本身是來找工做的就顯得惟惟諾諾的,要自信一些(但不能狂),這也能給面試官留個好印象。

最後,面試前也要對你面的公司和團隊有個大體的瞭解,若是這個團隊還作過一些對外輸出的事情,好比有開源項目或者是技術博客,能夠重點關注一下,在面試的時候也能夠聊一聊,由於人都是有虛榮心的,有些面試官發現本身團隊作的事情被人關注了,天然會很高興,對你的印象也會更好。

一般面試最後面試官會問你有什麼問題須要提問的,千萬不要傻傻的去問對方對本身面試的評價如何,若是你對團隊感興趣,能夠問一下團隊的技術棧,所作的事情,團隊的人員狀況,技術氛圍等等,也能夠問問若是本身有幸進入這個團隊,大體要負責哪方面的事情。若是能明顯感受本身此次面試失敗了,也能夠虛心請教面試官本身有哪些不足,或許能找到本身將來努力的方向。

寫給面試官

對於面試官,我想說面試官有些時候表明的是一個公司的門面。面試官的專業能力是要至關過硬的,由於他須要從各個方面考察候選人的技術能力和綜合素質是否達到本身的用人標準。

我在百度的時候面試官最低級別都是 T5(至關於阿里的 p6)起步,並且會接受專業的培訓,而且一般面試官要和候選人平級或者是更高的級別,不然可能會由於段位不夠不可以充分考察出應有的能力而不能作出相對客觀的面試評價。 有些公司不知道出於什麼考慮派一些段位較低的面試官出站,有些時候還會鬧出一些不愉快的事情讓公司的口碑和形象受損。在我看來,招聘仍是一件很嚴肅的事情,由於你招來的人將來是要和你一塊兒共事的,因此必定要很是重視。 那麼,做爲面試官,你應該如何面試呢?

對於前端茫茫多的知識點,想短期內都考察一遍不現實,並且面試官也很忙,有些時候面試佔據了太多的工做時間。因此個人經驗是出一套難度適中的筆試題,HTML、CSS、JS、廣度、編程、算法題都有涉及,而後對於工做五年以內,預期是 p6 及如下的候選人,先讓他們作題。而後根據筆試的結果,就可以篩掉一批不合適的候選人。

那麼筆試題經過了,面試的時候就能夠針對筆試題的知識點,作一些深刻的提問,一般問到對方不會或者你不會爲止,這樣就能夠充分考察候選人對某個知識點的掌握程度。

除了筆試題的部分,剩下的面試我建議是針對候選人簡歷中提到的技術深刻提問,而不要問他不瞭解的技術,舉個例子:若是對方是一個 React 玩家,即便你團隊的技術棧是 Vue,我也不建議你去問他 Vue 的問題,由於毫無心義,不過你卻是能夠問他 React 和 Vue 相比,他們的優劣在哪裏,這樣能夠考察他對技術有沒有作一些深刻的思考。

候選人簡歷中沒提到的技術,可是你招聘的需求中有的,你能夠問,若是候選人有了解那麼你能夠繼續深問,若是候選人不是很瞭解,那麼就沒有必要繼續問了。有些經驗淺的面試官會就一些他很是熟悉的領域,或者是最近研究的一些技術瘋狂提問,即便候選人已經表示這方面研究很少,這種面試體驗想一想都以爲不好。

固然,若是說你問了不少招聘要求的技術候選人都不會,那麼說明候選人並不適合大家崗位,一般從簡歷篩選階段就能篩掉這部分人。

要記住,你面試的目的不是爲了考倒候選人,也不是爲了炫技,你要作的是考察候選人的技術能力、學習能力、潛力等等綜合能力,因此應該多讓他有機會展現本身的能力,從他對技術或者是項目的描述中深挖一些更深層次點去提問,或者是從你的經驗上去判斷他的作法可能會存在的問題,而後再去問他有沒有解決,若是沒有的話,不妨問他有沒有思路啥的。因此,這就要求面試官自己有必定的段位。

我在知乎看到某個資歷較淺的面試官面了一些工做多年的候選人一些基礎的 JavaScript 問題,由於對方沒有回答出來而在知乎上掛出來,言語中充滿着嘲諷的意味。我以爲大可沒必要這樣,首先,你有沒有去發現候選人其它方面的亮點,有沒有給候選人充分的機會展現本身的能力,若是這位候選人真的沒有答出基礎的問題,確實有必定問題,但也不必在公開場合上說,由於面試中存在着信息不對稱,若是有一天你去面試別人再問你一個相對基礎的問題而你也剛好不會,若是也被掛出來,你的感覺又是如何?

你這樣作只能說明你的面試很是不專業,對於一個工做經驗久的人我不會在意他還記不記得這些 JavaScript 基礎,我對他自己的要求就會很高,我會更多的去問他最近深刻研究的技術,或者考察他對於本身過往項目架構設計的理解,也可能會給他一個場景,拋出一些問題,來看看他對這些問題的理解和思考。

因此針對不一樣的候選人,對應的指望和要求是不同的,對於工做五年以內的候選人,我更可能是看他的幹活能力,能不能獨當一面。而對於工做更高年限的候選人,除了能幹活以外,我還要考察他在專業領域的深度,對於一個較爲複雜,涉及多個功能點的業務系統,或者技術難度較高的底層系統,可否作良好的架構拆解並實現。

總結

扯了挺多東西,總結下來,不管你是做爲面試官仍是候選人,都應該要保持持續學習,由於這倆角色是很容易互換的,在某平臺看過一個段子:A 上午做爲面試官去面試某個候選人 B,下午去面試遇到上午的 B 做爲他的面試官,而後 B 把 A 上午刁難他的一些問題又問了一遍 A,結果 A 也沒有很好回答出來。

所以,只有你的專業性足夠強,才能讓你不管在什麼角色,都可以遊刃有餘,談笑風生。可是,沒有人能夠隨隨便便的成功,那些你眼中看到的一些大佬,背後都付出了不少的努力,因此加油吧~

相關文章
相關標籤/搜索