被告知簡歷經過評審以後的三天後收到一個來自上海的電話,我懷着半信半疑的心態接通了電話(懼怕是辦信用卡的)。對面是個小哥哥,簡單介紹了下本身是阿里的,詢問我有沒有時間,作個簡單地電話初面,看看是否合適在發起後續流程進行正式面試。當時正在上班的我一口答應,而且快速衝到了走廊。出來的我就感受有點後悔,由於門外那叫一個冷,我沒有穿上我一千塊的保暖大衣,又很差意思說回去工位穿衣服,因此全程都在哆嗦中度過。css
一開始讓我作了個簡單的自我介紹,問我如今在哪裏工做,爲何要離職,目前手頭上跟的什麼項目什麼的。而後讓我挑一個最近正在作的項目,聊聊技術棧。我找了一個我負責構建的項目,而後從項目背景、人員分配、技術棧提及,巴拉巴拉說了大概四五分鐘。緊接着小哥哥問我爲何選擇這個技術棧,我又巴拉巴拉說完後就說感受我挺合適,給我發起正式面試流程。我一聽,那個激動巴不得立馬發起流程!而後小哥哥問我有什麼問題要問他的,因爲外面實在太冷了,因此我就問了一個問題,能介紹下您所在部門的業務嗎?這一問可不得了,面試小哥哥從本身的部門,再到前景,再到工做內容給我介紹的明明白白,說北京有崗位,可是會先去杭州工做半年到一年時間,最後說會在一週內聯繫我進行面試。因爲太冷了,我就沒有再問問題,就這麼愉快地結束了!前端
這一步沒什麼問題,只要放開了和麪試官聊就好了,把你想知道的都問清楚,把他想知道的儘可能都告訴他,先給對方一個好的印象,至少讓別人感受你是積極向上的而不是死氣沉沉混機會的。node
因爲一面告訴面試官我和他不在同一座城市,並且目前在職沒法去現場面試,他很爽快地答應了能夠進行視頻面試。大概過了三天的時間,又收到來自這位小哥哥的電話,具體是想和我安排面試時間,我問了下晚上是否能夠,小哥哥爽快答應,此時我已經瞭解到阿里晚上也是正常工做時間,這和我目前同樣。咱們相互約定了時間,互換心聲,相約不見不散!到了約定時間我會想起小哥哥說會給我進行視頻面試,我一來懵逼,既然是視頻面試莫非是QQ視頻、微信視頻?還在疑惑的我被手機鈴聲打斷,我一看仍是熟悉的號碼,仍是熟悉的感受,果真是那位可愛的小哥哥。小哥哥問我準備好了沒,準備開始面試了!納尼?小哥哥居然是個人面試官,我一直覺得他是HR小哥哥呢,還沒待我詢問清楚,他說會發一條連接到個人郵箱。多是安排的人比較多,一時間找不到個人郵箱了,就說你先來個自我介紹,此時的我心灰意冷,不是才認識的嘛,都已經這麼熟悉了還須要自我介紹?是否是早已經忘記人家了?當我還在傷心的時候,我發現時間已通過了三秒鐘了,因而我開始從新介紹我本身,此次的自我介紹相比以前的要更加詳細,主要是我的的基本狀況、工做能力和將來規劃三個方面講的,自我介紹完後小哥哥說到挺有想法的小夥子,我給你發了連接到郵箱裏面,你去看看。說時遲那時快,我用了兩秒鐘就等進了郵箱打開了連接,個人英俊容貌立馬出如今電腦屏幕上,我也看到了面試小哥哥!哇,簡直和我同樣英俊、瀟灑。管不了那麼多了,我已經準備好面試了。react
忽然個人頭像縮小了,屏幕上面出現了熟悉的文本框,是的,你沒猜錯,現場編碼!第一道題是考察正則匹配的,這道題不難,可是須要考慮邊界狀況,由於過於簡單因此題目沒有就不貼出來了。面試
大概花了一分鐘搞定,而後滿意地告訴小哥哥作好了。他看了個人結果後立馬出了第二道題:ajax
具體題目因爲時間太長沒有記太清楚,是一道操做數組的題目,暫時就以當下最火的數組去重爲例吧,該題重點考察對js數組的掌握,不能使用ES6語法。算法
拿到這道題我以爲很簡單,因而就開始了正常的排序,去重。下面是個人第一次嘗試數組
function merge(arr) {
if (!Array.isArray(arr) || arr.length == 0) return [];
arr.sort();
var ret = [arr[0]];
for (var i = 0, j = i + 1; j < arr.length; j++) {
if (arr[i] != arr[j]) {
ret.push(arr[j]);
i = j;
}
}
return ret;
}
複製代碼
小哥哥說能夠調試,我打開了控制檯,以最快的速度粘貼了個人代碼後發現結果不對呀,怎麼搞的?才發現是由於順序改變了,不能進行排序。再次個人第二次嘗試瀏覽器
function merge(arr) {
if (!Array.isArray(arr) || arr.length == 0) return [];
var ret = {};
for (var i = 0; i < arr.length; i++) {
ret[arr[i]] = i;
}
return Object.keys(ret);
}
複製代碼
我發現這樣確實能夠去重,奈何順序也跟着改變了,這該如何是好呢?這時小哥哥發話了,這道題很難嗎?我立馬回了句不難,我不該該排序的,而後他說根本不須要排序可使用ES6的語法。納尼?這道題不是考察算法而是考察ES6語法,打死我我也不信,這明明是算法...就在這零點零一秒的時間裏,個人任督二脈忽然被打通,我沒在抱怨了,而是以最快地速度進行了個人第三次嘗試bash
function merge(arr) {
if (!Array.isArray(arr) || arr.length == 0) return [];
var ret = [];
for (var i = 0; i < arr.length; i++) {
// 或者 ret.indexOf(arr[i] == -1)
if (arr.indexOf(arr[i]) == i) {
ret.push(arr[i]);
}
}
return ret;
}
複製代碼
還沒寫完,小哥哥就同步到個人想法了,順利過關!順便一提,其實去重還能夠用一句代碼搞定:
[...new Set(arr)]; // 不符題意
// or
Array.from(new Set(arr)); // 不符題意
// 感謝評論區大佬的指點,小弟想到了一句話解決的方案,包括filter,此處給出另一種變態方案,請笑納
(arr + ',').replace(/(\d+,)\1+/ig, '$1').split(',').slice(0, -1);
複製代碼
這裏是對ES6自帶API的考察,而後順勢給我同步出第三道題
實現函數的柯里化
仍是熟悉的配方,因而開始了個人嘗試套路
function composeFunctions() {
var args = Array.prototype.slice.apply(arguments);
var _func = function() {
if (arguments.length === 0) {
return func.apply(this, args);
}
Array.prototype.push.apply(args, arguments);
return _func;
}
return _func;
}
複製代碼
以上是個人第一次嘗試,當時我由於傳錯了參數,也就是最後Array.prototype.push.apply那句傳錯了參數調試死活出不來,我感受個人思路沒錯呀,爲何結果不對呢,正打算打開debug工具調試,小哥哥開口說話了,問我這個題目很難嗎?我固然說不難了,這輩子都不會以爲難的。而後他開始幫我分析,他說這個題怎麼能返回一個函數呢?我...emm?我說對,不該該返回函數,此時估計小哥哥意識到把我帶偏了,因而趕緊說道是返回一個函數哈,我...emm(被支配的恐懼感讓我留下了沒有技術的淚水)?此時我已沒法用言語表達個人尷尬之情。他問我那問題出在哪裏?我說我感受寫的沒問題,可是死活出不來,而後我看他在閱讀個人代碼,而後說了句好的,咱們直接開始面試吧!原本有四個題,我以爲你作三個就能夠了!
前戲大概花了十五分鐘左右,而後直奔主題。
第一個問題是老生常談的居中問題,如何用css來實現水平垂直居中。我用了六種實現方案,其中最後一種是基於vertical-align配合文字基準線來實現的,有興趣的小夥伴能夠自行找下該方案。
第二個問題是Promise的用法以及實現原理。
第三個問題是前端存儲方式,以及它們之間的優缺點。
第四個問題是移動端頁面適配解決方案,個人回答是淘寶的flexible.js來作屏幕適配,而後面試官詢問了它的實現原理,以及瀏覽器中幾種長度單位(rem、em、px)的特色和區別,很惋惜這塊我答得不是很好,沒有徹底理清物理像素和邏輯像素的區別,面試官小哥哥也告訴我瞭解一個框架的實現原理比用一個框架更有意思,不是麼?
第五個問題是React、Vue之間的區別和實現原理,另外問了下React中Fibber是什麼?我只知道Fibber是調度,能夠提高react渲染的效率,然鵝不太清楚具體的實現原理。
第六個問題是JS的Event Loop。
第七個問題是三次握手和四次揮手。
最後問了我最近最有成就感的項目,並介紹下項目的技術方案,哪些地方讓你特有成就感,還有遇到的困難是什麼,如何解決的?
最最後面試官對我進行了一個評價,說我知道的還挺多就是表達不是很流暢,讓我從此要多注意,我連聲達到好好好!緊接着就說先聊到這裏,有什麼問題須要瞭解的嗎?我問了兩個問題,第一個是他們對人才的定義,想要招個什麼樣的人?小哥哥微微一笑,說道這個問題太大了,立馬反問給我,讓我給人才下個定義,其實我就是想知道我今天的表現如何因此才提了這個問題,因此我就巴拉巴拉說了個人人才觀,隨後他也像我闡述了他的觀點。緊接着我就問第二個問題,面試結果何時能知道?他說最遲一週,後來我發現這是全部面試官的一個套路,只要問道確定就會說一週以內給結果。最後就愉快地結束了今天的面試,整體來講仍是比較輕鬆的。
一面面完大概過了四天左右收到了來自杭州的電話,告訴我一面經過了約個時間進行二面,而且和二面面試官互加了微信。後來我才發現,二面面試官就是當初某boss上面跟我聊天的大佬,技術專家級別!我懷着忐忑的心情等待接受二面的摧殘,由於二面是部門負責人面。
面試終究仍是來了,看到來自杭州的電話火燒眉毛地接通,據說話的口音感受面試官很奈斯,瞬間就沒有了壓力。首先讓我作了下自我介紹,接着就開始正式的面試環節。
自我介紹中粗略地介紹了我目前作的業務,面試官讓我挑一個最熟悉的跟他聊聊,具體從技術方案、遇到的問題、解決狀況來闡述。前十來分鐘基本上就是按照個人項目來進行的,一切都很順利。緊接着問了幾個ts相關的問題,就說今天的面試先這樣,問我有沒有問題要問!我一臉懵逼,由於整個面試過程都很順利聊得也很開心,忽然結束是否是自我感受良好,他人感受很差呢?雖然有一系列疑問,可是我只問了一個問題,就是當天在公司幹活時遇到的一個問題,他先是笑了一下而後問了下我是如何解決的,我巴拉巴拉說完後,他提出本身的看法。說很是欣賞個人處事方法,第一次被面試官誇讚的感受簡直受寵若驚!而後告訴我若是是他他會如何解決,大佬果真是大佬,我默默地嘆息道!隨後就結束了二面。
二面結束後又是漫長的等待,等了十來天時間還沒聯繫我,我以爲應該是跪了吧。因爲我加有一面、二面的面試官,因此就試探性地問了下二面面試官個人狀況,他說你經過了,不過boss最近比較忙沒有時間面試,因此就拖了這麼久,再耐心等等!知道結果的我受寵若驚,決心要好好準備。
距離二面結束兩週後終於有一個杭州的電話打進來,果真是阿里的HR,跟我約了週末進行視頻終面。並告訴我boss很忙必定不要失約。
終面的前一晚HR小姐姐打來電話說須要調整面試時間,由於boss臨時有個會議,因而向後延了五天時間。
面試的時間是工做日,我請了假回到家中,雖然說前兩面都很順利,可是第三面仍是很緊張。三面使用的是阿里的內部會議系統,到達指定時間後我鏈接上去沒有任何迴應,打電話給HR小姐姐始終佔線,瞬間內心感到更加緊張,五分鐘後對方接了進來。我看到一共有兩我的,一個是傳說中的boss(男),另一個(女)沒有猜到是什麼崗位。簡單地詢問後就直撲主題。
首先讓我作個自我介紹,介紹完後問我在京東作什麼?我當時腦子是懵逼的,我就說我在作什麼,作什麼?兩句話介紹完後,boss接着問,你所說的XXX產品是個啥?真是一波未平一波又起,個人腦子已經一片空白了,簡單地介紹了產品後,boss擡頭看了下我說,我沒有問題了,又看了下另外一位面試官問到,你還有什麼問題嗎?另一位面試官就問我離職的緣由是什麼?我說想去更好的平臺工做。緊接着說個人求職意向是北京,可是他們是在杭州,我說HR告訴我北京有崗,面試官答到要先來杭州工做半年到一年才能去北京,我說沒有問題!而後就問我還有什麼問題嗎?
我提了三個問題,第一個仍然是想知道他們對人才的定義,獲得的答案是問題太大了,換個問題吧。第二個問題是前端的發展路線,從ajax到node,再到數據驅動,下一個會是什麼呢?在一旁看手機的boss擡頭看了看我說道,很差意思我不是搞前端的,你換個問題!我說出了個人第三個問題:結果何時能出來?獲得的答覆是一週內,而後就說今天先這樣,後面有消息會有電話通知。一臉懵逼進來,一臉懵逼出去,就這樣結束了三面。
因爲是請假因此面完後直奔公司繼續工做,剛坐下就收到了來自阿里巴巴的郵件通知,覺得順利經過,結果一看個人簡歷直接被推到了螞蟻金服!說明CBU流程已經結束,個人簡歷獲得了釋放,也就意味了面試跪了。非常失落,因而截了個圖發給了個人一面面試官,他說幫我問問boss怎麼回事。很快告訴我未經過的緣由是項目的複雜度有點問題。並不斷安慰我說很正常,面試經過率很低,讓我不要灰心,面試是很看運氣的。另外告訴我一面和二面面試官都以爲好惋惜,可是沒有辦法。讓我試試其餘的部門,再次感謝很是可愛的面試官小哥哥,全程對個人幫助!雖然非常失落,可是面試以後的總結仍是必不可少的。
相比其餘的企業,我發現這次面試阿里過程當中被問到的問題還不算很難,阿里更看重的是基礎,而不只僅停留在會使用的階段。因此平時要多看看優秀開源項目,多看看基礎的內容,多瞭解底層的實現原理。
對於boss面問到的問題,我總結了一下其實這兩個問題都很大。首先第一個問題,你在作什麼?其實潛臺詞就是問你都作了什麼項目,此時正確的作法是介紹本身參與的項目、所在項目的角色,而後詳細講解你參與項目的技術方案,開發過程當中遇到的問題以及如何去解決這些問題,將主動權徹底交給你,你能夠自由發揮把面試官帶到你的思路中。其實面試官更關心的是你解決問題的過程,而不是像我同樣兩句話搞定。第二個問題就是要詳細介紹本身的產品,產品和其餘競品的優點在哪裏?以及你貢獻的內容和目前取得了什麼樣的成就等等。這種開放性的問題說好答也好答,說很差答也很差答,徹底看本身的語言組織能力。
阿里一直以來都是我心中想去的公司,在中國的互聯網公司中也是名列前茅。因此不是隨隨便便就能進入的,要想成功進入阿里除了過硬的技術基礎外,還須要有良好的表達能力、處事能力等軟實力。一次失敗不算什麼,認真總結,在下一次遇到一樣的問題而不至於用一樣錯誤的方法去處理纔是最重要的。就和農藥裏面的程咬金同樣,反正你打不死我,不服就來打我呀!