2016阿里前端開發實習生面試經歷


  終於有時間也有機會來寫這么一次面經了。其實距阿里的最近一次面試也有29天了,這段時間一直在等待通知,終於在昨天下午收到了阿里的賀電,一直懸着的心也可以放下了。現在趕緊把我的經歷分享給各位小伙伴。

  一面:

  沒有一點點防備,內推的第5天下午正在做實驗的我突然收到了阿里一面的電話,當時覺得自己狀態還可以,於是就直接面了(面試的時候如果狀態不好,可以給面試官重新約時間),雖然是一面但覺得考察的很廣泛(有點交叉面的感覺),從基礎,知識廣度以及人品等各方面對我進行了詢問~

  ---首先是基礎

  Q: 我是淘寶的xxx(奔潰,太緊張沒有記住面試官的花名),請你先自我介紹一下。

  A: 詳細介紹了一下我的個人信息,項目經歷,擅長的技術。

  Q: 你對css和js兩者哪個掌握的更深入?

  A: js。

  Q: 好,那你講講如何讓一個函數調用自身。

  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姐姐提到的做什么事之前多問幾個為什么,無論是從技術還是什么角度上出發,都要明確好自己的目標,作為一個開發者,所應具備的不僅僅是開發技能以及行業視野。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM