一面 電話面(1小時)
電話面問題不多,但是十分考驗對相關知識熟悉程度,面試官是 P7(不了解這個就去百度吧)
推薦一個交流學習群,裡面會分享一些資深架構師錄制的視訊錄像:有Spring,MyBatis,Netty源碼分析,高并發、高性能、分布式、微服務架構的原理,JVM性能優化這些成為架構師必備的知識體系。還能領取免費的學習資源,目前受益良多
點選: 加入以前做過什麼項目?使用了什麼技術?(balabala...)
繼續上一個問題,為什麼使用 gulp 不用 webpack?
你都使用過哪些架構?(就說熟練XXX架構,用過了解XXX架構)
繼續上一個問題 zepto 和 jquery 是什麼關系,有什麼聯系麼?
有沒有看過架構的源碼?(沒看完一個架構完整的源碼還敢出來混?我隻看過 jquery)
繼續上一個問題,jquery 源碼中你對哪個部分印象最深,講一講?(我就說了構造函數傳回原型鍊中的 this)
最近在實習是嗎,實習了多久,在哪實習,實習的工作是什麼?
實習過程中能不能完成公司給你的工作?工作量如何?
實習過程中遇到什麼難題,是怎麼解決的?
函數了解嗎?閉包是什麼?為什麼要用閉包?commonJS 知道不,define 時用閉包做了什麼?
對象熟悉嗎?一般考你對象的話具體會考什麼?(居然還可以這麼提問)
繼續上一個問題,你知道原型鍊是幹啥的麼,為什麼要有原型鍊?
熟悉 this 嗎?js 中的 this 和 c++/java 中的 this 有什麼差別?
繼續上一個問題,如果在構造函數中為 this 指派 1 會發生什麼?
繼續上一個問題,那應該怎麼改變 this 的值?
學習前端多久了,平時怎麼學習前端?
未來3-5年有什麼規劃?(我提到了全棧,于是有了下面一個問題)
什麼是全棧,你了解的全棧是幹嘛的?
傾向于走什麼技術棧?(我提到了 nodejs 于是又有了下面 一系列的問題)
nodejs 你了解多少?
所有的 ES6 特性你都知道嗎?如果遇到一個東西不知道是 ES6 還是 ES5, 你該怎麼區分它
Express 和 koa 有什麼關系,有什麼差別?
為什麼選 nodeJS 為什麼不喜歡 php 和 python?
你對 php 和 python 掌握的怎麼樣?
你還有什麼問題想問我?
對加班有什麼看法?
二面 視訊面(1.5小時)
面試一開始面試官給我展示阿裡遠端會議的各種酷炫功能,随後開始面試。面試官還是 P7
首先是給了好幾個代碼題,問其中每個 console.log 的輸出是什麼。這裡的代碼的确很多,面完全部面試寫這個文章的确記不起來了。值得一說的是每個題都有陷阱,十分容易錯的地方,我也不例外的掉坑裡了,面試官會告訴你錯了,然後讓你自己思考為什麼錯?正确的應該是什麼?當然還要解釋原理。
看完了題目就該自己寫了,共享桌面。
寫一個_new()函數,實作 new 關鍵字的功能;
寫完了,需要解釋思路,當然如果有那個地方寫錯了,一定是要深究的。這裡面會包含一些深層次的問題:prototype 和 proto 的關系是什麼?
三面 視訊面 (40分鐘)
二面面試官很愉快的說我通過面試了,去叫了另一個面試官。這次的面試官,應該也是 P7,上來就問問題:
自我介紹一下(發現問題點時打斷介紹,就開始問問題)
你前端是自學的呀,怎麼個自學法?
你都看過什麼書?最近在看什麼書?
用過什麼架構?有沒有看過什麼架構的代碼?
你做過什麼項目?
有沒有學過設計模式?
說一說觀察者模式吧!能不能寫出來?(能,那就寫)
為什麼隻知道這麼幾個設計模式?
你最大的優點是什麼?
那你最大的缺點呢?
如果有個功能你寫的代碼有一個 bug , 剛好你同時的代碼可以彌補你這個 bug, 但是他的代碼有新的 bug 怎麼辦?
如果小組開發的時候對于一個軟體的各個功能,每個人都有一定的 bug 怎麼辦?
熟不熟悉 git,你用它做過什麼?
你大學期間做過最瘋狂的事情是什麼?
熟不熟悉 http? http 和 https 有什麼差別?
你除了寫部落格還有什麼輸出?
做代碼的時候有沒有考慮過安全問題?怎麼防止注入?
如何防止 XSS 和 CORS? 被攻擊了該怎麼辦?
現在你的上司給你了一份工作,要求你一個星期完成,但你看了需求以後估計需要3周才能完成,你該怎麼辦?
四面 交叉面試 電話(50分鐘)
我投的是天貓事業群,交叉面試就是找個别的事業群的面試我,防止作弊。這次是一個 P9 段位的面試官:
自我介紹一下
為什麼學前端?
你學過 c++ 是麼,問你幾個 c++ 的問題(履歷裡寫了以前學過 c++):
你學 c++ 到什麼程度了?
你用過 STL 嗎?裡面的 Map 類是什麼結構的?
static 關鍵字怎麼用?
static 變量存儲在堆還是棧?
Qt 中 main 的執行過程是什麼樣的?
最近做過什麼項目?使用了什麼架構?
有沒有看過 wordpress 等部落格架構的源碼?
為什麼使用 Express 不用 koa?
gulp 和 webpack 有什麼差別,為什麼你要用 gulp?
知道 XSS 吧,怎麼防護?cross-site script
你項目中如何進行使用者輸入過濾的?都過濾了那些内容?(根據回答有了下一個問題)
為什麼沒有過濾<img>标簽?
知道 CSRF 麼,怎麼防止 CSRF? cross-site request forgery
你前端用了Bootstrap, 知道它的響應式是如何實作的嗎?
媒體查詢的原理是什麼?
知道流媒體查詢嗎?
那我告訴你什麼是流媒體查詢(......此處省略100000字),你懂了嗎?(我說懂了就有了下一個問題)
現在要你實作一個流媒體查詢,你怎麼做?
你現在在實習是麼,實習的主要工作是什麼?
你實習過程中在做一個 app, 如果讓你來主導這個項目,你使用什麼架構?為什麼?
學過 es6 是麼。知道 promise 麼?它用來做什麼?
promise 隻有2個狀态,成功和失敗,怎麼讓一個函數無論成功和失敗都能被調用?
Promise.all() 是幹什麼用的,怎麼用?
怎麼判斷一個對象是不是數組,盡可能多的說出你知道的方法?
怎麼把一個類數組對象轉為數組?
知道本地存儲嗎,localStorage 是幹什麼的?
localStorage 的最大存儲空間是多少?如果存超了對怎麼樣?
localStorage 是注冊在幾級域名底下的?
說一下 Nodejs 的 event loop 的原理
Angular 和 vue 的資料綁定是怎麼實作的?有什麼差別?
平時是如何學習 js 的,從哪裡獲得相關資訊?
mysql 和 mongoDB 有什麼差別?
五面 HR面 電話(30分鐘)
你平時的是怎麼學習前端的?
你的專業比較偏硬體,為什麼不學習硬體了?
你為什麼要學習前端?
你轉行學前端和專業的畢業生比能有什麼優勢?
你學習過什麼架構,現在在學習什麼架構?
為什麼先開始學習 React 而不是 vue、Angular 或其它架構呢?(不愧是阿裡巴巴的 HR,技術面感覺撲面而來)
你平時是如何擷取前端知識的?
你是通過業餘時間完全自學的前端,你是如何制定學習計劃和學習目标的?
你學習的過程中,有沒有真正的做過什麼東西?
除了做這些東西你還有什麼輸出?
有沒有經常和前端同行業的人交流,通過什麼途徑交流?
你現在在實習是麼,實習工作是什麼?
那你為什麼不想留在現在實習的公司?
你在實習期間最大的收獲是什麼?
前端現在更新的這麼快,你對前端行業有什麼看法?
現在給你一個項目,有兩個架構可以選擇,一個你比較熟悉,另一個是個新架構,大家都沒用過,你會如何選擇?
你家是(xx隐私省略)的,現在在青島上學,以後讓你來北京的話你有什麼看法?
你除了前端還有沒有想從事的行業,不限于技術?
你還投了哪些公司,現在招聘進度如何?
寫在最後
我覺的整個過程心态實在太重要了。作為一個前端人,阿裡巴巴,是我最想去的國内公司,我看重的也不是他薪水如何,完全在于他的技術,這一點 github 可以說明一切。阿裡是個十分重視基礎的公司,和浮躁的前端大環境形成鮮明的對比。但其實,前端的更新速度如此快,還是基礎的東西日久彌新。
我不是第一次投阿裡巴巴,是以心态一開始還是挺平和的。電話面也很放松,也适當的開了個玩笑(給面試官黑了一把世界上最好的語言)。但這是我第一次電話面試通過(以往不是被筆試虐了,就是挂在了面試。别問我投過多少次),随後通過二面,三面,hr面,真的會感到越來越緊張,越來越患得患失。平時在公司實習,本來就沒有時間準備面試,但偏偏這種心态十分影響複習效率。可能是真的太在乎這個面試結果了,在整個過程(1個月)中都會感覺這是我離夢想中的公司距離最近的一次,絕對要保證萬無一失,要表現的很好。這是自己給自己的一種無形壓力和緊張情緒,有時連做夢都在面試!!還好我堅持下來了,堅持到最後了。
技術型崗位的應聘雖然不需要為每個公司有針對性的編寫履歷,但是一定要足夠了解這個公司,明白公司需要什麼,你能為公司帶來什麼。
如果你還年輕,距離找工作還有幾年,那你需要一個清晰的規劃,學什麼知識點,掌握什麼技術,這些規劃都應該以目标公司的需求為導向。