終於有時間也有機會來寫這麼一次面經了。其實距阿里的最近一次面試也有29天了,這段時間一直在等待通知,終於在昨天下午收到了阿里的賀電,一直懸着的心也能夠放下了。如今趕忙把個人經歷分享給各位小夥伴。css
一面:前端
沒有一點點防備,內推的第5天下午正在作實驗的我忽然收到了阿里一面的電話,當時以爲本身狀態還能夠,因而就直接面了(面試的時候若是狀態很差,能夠給面試官從新約時間),雖然是一面但以爲考察的很普遍(有點交叉面的感受),從基礎,知識廣度以及人品等各方面對我進行了詢問~node
---首先是基礎react
Q: 我是淘寶的xxx(奔潰,太緊張沒有記住面試官的花名),請你先自我介紹一下。jquery
A: 詳細介紹了一下個人我的信息,項目經歷,擅長的技術。
webpack
Q: 你對css和js二者哪一個掌握的更深刻?git
A: js。github
Q: 好,那你講講如何讓一個函數調用自身。web
A: 函數內部可使用其函數名或者argument.callee進行調用。(js高設上有一小節講得很詳細)面試
Q: argument.callee是什麼?
A: 表示當前執行的函數,可是在ES5的嚴格模式下是不能使用的。(要勇敢地發散問題,這個ES5就是發散出來的,體現自身知識廣度)
Q: 好,我有一個數組,如何實現它的深拷貝和淺拷貝?
A: 淺拷貝就是保存引用,能夠直接把它賦值給另外一個數組。深拷貝能夠用數組方法實現,好比concat,slice或者for循環遍歷數組取出。
Q: 如何作一個高效地遞歸操做呢?
A: (有點矇蔽,這個問題回答得略卡) 嗯,首先是要儘可能作到尾遞歸,保證堆棧的複雜度最小。。。而後。。。還能夠用記憶的方式(js語言精粹上面的,忽然想到了!) 就是每進行一次遞歸,都把上一次遞歸結果緩存到一個數組中,下一次遞歸能夠直接調用這個數組的值,減小寄存器的調用。
Q: 不錯,講講事件流吧。
A: (內心忽然釋放了不少) 先說說IE的事件流吧,是採用了事件冒泡機制,而DOM標準事件流則分爲三個階段:事件捕獲階段,處理事件階段,事件冒泡階段。一般咱們須要寫一個函數來兼容兩種瀏覽器的事件。而後balabala把函數用口頭實現了一次。。。
Q: 那你知道事件委託嗎?
A: 嗯,知道,就是把全部子節點的事件都委託給其父節點進行監聽,在函數中能夠swtich某個節點。
Q: 僅此而已嗎?
A: (哈哈,很想說句否則呢?) 請給我點時間想一想~
A: 鍵盤事件能夠監聽它的keyCode...(好吧,好像就這麼多了把)
---開始發散了
Q: 剛剛開了下你的我的網站,那個相冊旋轉是怎麼作的?
A: 用React寫了一個狀態機,若是用原生js或者jquery寫可能會很簡單,用React的主要是以後考慮打造一個SPA。首先是要寫一個AJAX請求後臺數據,這段代碼寫在React的ComponentDidMount中,而後把每一個相冊的旋轉所用到的屬性看成是state放入父級組件的props中。
Q: 看來你很瞭解React,能講講它是什麼原理嗎?
A: React是facebook提出一個解決大型應用的框架,主要是利用狀態機將屬性和狀態進行隔離,並用一個組件維護,再將這些組件複合。性能很快,核心在於虛擬DOM和單向數據流。
Q: 虛擬DOM?說來聽聽呢?
A: 在js中,最消耗性能的實際上是DOM操做,一個DOM操做能夠將界面元素重排或者重繪,而虛擬DOM是把元素放到緩存中,這樣變化只是在緩存中,性能會很是快,這個實現主要依賴於diff算法,而後diff算法..balabala...
Q: 我看了一下,你這裏面一頁有上百張圖片,加載的有點慢,你有考慮過優化嗎?
A: 嗯,考慮過,可是還沒時間去作(如今都還沒作= =)。能夠把100張圖用縮略圖,即用小圖,大概在2-3K放出來,要具體查看每張圖的時候再把原圖呈現。
Q: 那你對整個web的性能有什麼瞭解嗎?
A: 嗯,大概有css精靈圖,http緩存,cdn,腳本合併。。。而後一個一個詳細講解。
---接着是聊生活
Q: 我看你在學校擔任過IBM俱樂部的部長,能夠講講你作了些什麼嗎?
A: 嗯,主要承擔一些設計海報,製做網站這些工做吧。固然還有給14級的同窗進行網頁知識的培訓。
Q: 我對你的培訓很好奇,能詳細談談嗎?
A: (怎麼會問這個,我開始方了) 而後balabala講了我是如何培訓的,從w3c到現場授課等等...
Q: 那你以爲你的優勢是什麼?
A: 對前端的熱愛,對生活的樂觀(好官方的回答...)balabala...
Q: 缺點呢?
A: 喜歡玩英雄聯盟把,偶爾會忘了時間,可是本身仍是開始有節制了...(還沒說完電話就掛了...原來是通話一小時自動斷開了)
...斷線中
Q: 哈哈,很差意思,咱們繼續,不過得快點了,再詳細講講你對新人的培訓過程吧。
A: (好糾結),因而講了不少細節。
Q: 還有什麼問題要問個人嗎?
A: (終於該我問了!) 我想了解下淘寶如今所使用的技術~
Q: 不一樣業務不一樣技術嘛。而後詳細講了各個團隊的方向...
A: 想了解下淘寶團隊的英語水平。
Q: 有特別好的,也有通常的,但通常的文檔是能讀懂的。
A: (而後心裏下定了學好英語的心),嗯,我也沒有什麼問題了.
Q: 那好,那等等結果吧~再見。
一面結束,說好的半個小時左右足足聊了75分鐘....估計面試官也餓了。
二面:
一面結束已是下午5點30了,吃了個飯回來大概在6點40的時候,又看到了一個杭州的電話打來。不會吧!還有!
Q: 你好,請問你是xxx嗎,我是淘寶技術部這邊的,想問問你有沒有時間。
A: (接都接了,那就面吧) 你好,如今有空,請問這是第二次面試嗎?
Q: 嗯,佔用你半個小時時間,咱們開始吧。
A: (我不信半個小時!)
---直接從項目入手問
Q: 看了一下你的幾個項目,能告訴我你在遇到問題是怎麼解決的嗎?
A: 其實我以前的開發中遇到的問題不是特別多,問題主要在最後的性能問題上。本身首先會嘗試調優一下本身的代碼,而後再去從文件打包上去思考,若是沒法本身解決,會去參考下別人的博客或者是社區。
Q: 那你如何使用文件打包的?
A: 剛開始的時候接觸grunt,發現利用插件能夠很快的實時壓縮合並css,並且只須要寫一個Gruntfile.js文件就好了,十分方便,後面又瞭解到gulp,代碼量少寫一半,由於它基於流。再到後面學習react的時候,gulp必須使用不少插件才能轉義jsx語法,因而我就在社區中發現了webpack這個工具,而且在github上star了一下,以爲這個工具特好用,而後大概講了下webpack的配置...
Q: github常常用嗎?
A: 也是近段時間開始用起來的,會慢慢熟練起來。
Q: 我看了看你的我的倉庫,裏面還有ES6的倉庫,怎麼是空的呢?
A: (問到此處好尷尬...) 由於我如今寫的ES6的語法還沒投入到實際的demo中,有點紙上談兵,只能寫寫片斷代碼執行。近段時間也正在逐步瞭解。
Q: 嗯,看了下好像還有jquery的倉庫,那你對jquery的源碼有了解嗎?
A: 大概看過幾個模塊,而後講了許久...
A: 但我以爲jquery會慢慢的不適合大型業務。
Q: 哦,什麼意思?
A: jquery有很大的性能瓶頸,當DOM操做增多的時候,咱們須要考慮用react。
Q: react?那你知道angular嗎?
A: 嗯,知道,不過angular如今是2.0的beta版本,打算等穩定下來再去仔細品味。
Q: 那你知道react和angular分別用在什麼樣的業務嗎?或者說二者的區別。
A: 本身從性能方面和MVC層面講了一下...
---談談將來
Q: 發現你對js的新技術仍是頗有研究的,那你以爲之後的js會發展成什麼樣,或者說前端會發展成什麼樣。
A: 從14年的D2前端論壇開始就已經很明確的指出了'大前端'這個概念,由於前端原本就是一個通十行才能精一行的職業,所謂大前端從學習角度上來看必定要保持飢餓感,保持興奮去適應新技術帶來的變化。具體的說,大前端要兼顧變化無窮的前端和以node爲核心的後端。而後又從先後端分析了一下ajax和http這些東西(蠻拼的!爲了把全部知識面暴露給面試官)。
Q: 想去哪工做呢?
A: (我被嚇到了.)杭州吧,互聯網的氛圍一級棒!
Q: 嗯,還有什麼問題要問個人嗎?
A: 如今前端行業對ES6的使用是什麼狀況呢?
Q: 看整個部門人員的狀況吧,說不定的。
A: 想知道你的花名,哈哈。
Q: 我叫釋然。
A: 很差意思,沒有挺清楚。
Q: 釋然,釋然的釋,釋然的然。
A: (聽着名字就以爲牛比) 恩恩,謝謝你。
看了看時間,30分鐘!能夠,這時間卡的給波滿分吧!
後面去問了問我學姐,才發現釋然是她的老大!又去淘寶技術的官網瞭解了下,確實大神一枚,怎麼就沒要聯繫方式呢?!
HR面:
一二面在同一天,我想HR也會很快來吧,就這樣天天提心吊膽地過着,看着論壇裏的小夥伴有的很快就HR面了,內心愈來愈方了。等到3月16號的時候,HR終於打電話過來了,和前兩面面試官同樣,聲音好聽得不行,不過此次是個妹子!可是當時我太困了,就約了晚上。結果晚上也沒有打電話過來...以後又是每一天中午打過來,結果發現我都有課,就這樣到了18號晚上纔有時間= =前先後後約了4次!
Q: 你好,我是xx(因爲是妹子,花名保密) 。
A: 恩恩,能夠開始了!
Q: 我看你曾經創過業,能夠跟我講講爲何要創業嗎?
A: (我回答的真的很白癡啊...) 前端是一個各方面都須要有所看法的行業,加之很想本身對新東西也有必定的好奇!因而就跟着學長和幾個朋友一塊兒試試了。
Q: 講講創業中的細節呢?
A: 大體講了講個人工做,如何打造團隊,如何熬夜...
Q: 成功了嗎?
A: 失敗了,由於...
Q: 其實總的來講不是你本身想創業對吧?而是學長找到了你。
A: (這個問題,能夠說三次面試以來最很差回答的) 仍是挺想的,主要本身也以爲這個項目能夠作作,還能夠鍛鍊鍛鍊這種高壓工做。
Q: 嗯,我懂,可是你只是學長叫到你纔去的是吧?
A: 嗯,能夠這麼說吧,但本身仍是頗有想法的。本身也很想掌握一些市場方面的知識,想作個全才。
Q: 談談你的優缺點呢?
A: (而後從本身的自信,負責,對新技術的渴求這幾點講述優勢) 缺點嘛,可能本身有些浮躁把,由於前端原本就是個高速發展的行業,每一年都有成堆的框架出現,可能在沒有接觸具體業務以前會有所迷失,不知道該學什麼。
...最後就是對個人一番評價,在確定了個人學習能力後,基本上都是說個人不足(心裏很崩潰),差很少面了40分鐘就結束了。
說實話面了HR後一點自信都沒了= =,首先感受本身有幾個地方回答得不理想,而後就是以爲HR姐姐分析地比較到位(感受跟中學時代的語文老師同樣,哈哈),內心特別沒底。但過了段時間後心態調整過來了,又回到了日常的模式。大概過了快一個月收到了阿里實習生的offer,真的是很大的一份驚喜。
從此次面試要確定本身過往的努力,可是要改進的地方也有不少。正如HR姐姐提到的作什麼事以前多問幾個爲何,不管是從技術仍是什麼角度上出發,都要明確好本身的目標,做爲一個開發者,所應具有的不只僅是開發技能以及行業視野。