2016阿里巴巴面試經(jīng)驗分享
以下應(yīng)屆畢業(yè)生網(wǎng)搜集整理的他人阿里巴巴面試的真實經(jīng)歷,歡迎閱讀!
九月九號真是個值得悲痛和總結(jié)的日子,阿里的一面掛了......以前從來沒有參加過面試,第一次面試就給了阿里,毫無經(jīng)驗(當(dāng)然這不是理由)。八月二十九號發(fā)的通知,預(yù)約的九月九號的下午面試,地點是哈爾濱的曼哈頓酒店(第一次去這么高端的酒店),昨天中午,我去打印我的簡歷,準(zhǔn)備下午面試,結(jié)果收到阿里的工作人員的電話,問我能不能提前去面試,所以就約的下午一點半,我吃過飯就打車去了,不到一點就到了指定的位置,我還以為我要等到一點半開始面試,所以還帶了一本書(完全是心理安慰),結(jié)果我的書包還沒放下,大屏幕就顯示我的名字讓我去面試......來的真快!!!!
面試官是看著有二十多歲,非常平易近人,相互問候以后就開始面試了,下面就是面試的經(jīng)過(寫的不是那么詳細(xì))。我們暫且稱面試官為A先生,我就簡稱M吧。
A:你是C的吧?
M:對,我的方向是C/C++
A:那你先說說C++和java的區(qū)別吧
M:(我對java了解比較少,所以這個問題以前雖然聽同學(xué)說過,但是還是有點兒不知所措,所以就開始沒有條理的回答)java是面相對象的語言,封裝性比C++的好,另外java不允許多繼承,要實現(xiàn)多繼承的功能需要通過接口,而C++允許多繼承,C++的內(nèi)存管理比java的更為靈活,java有垃圾回收機制而C++需要自己管理
A:還有么?
M:(我想了一會兒,也沒想出來啥,還是漏了一點兒,C/C++中可以操作指針而java中不可以)大概就這些了
A:既然你說C++的內(nèi)存管理比較靈活,那C++的內(nèi)存管理上有什么劣勢么?(對于這個問題,我沒仔細(xì)考慮過)
M:額......(我就想內(nèi)存泄露啊什么的,但是我不知道該怎么回答)容易有內(nèi)存泄露
A:怎么解決?
M:可以通過用對象管理資源的`方式,比如如果我們用malloc來申請一塊內(nèi)存,如果程序的執(zhí)行流在free執(zhí)行之前拋出了異常,那么free就不會執(zhí)行,從而引起內(nèi)存泄露,我們可以將其封裝到析構(gòu)函數(shù)中,當(dāng)對象超過作用域時自動調(diào)用析構(gòu)函數(shù)從而資源能得到釋放
A:嗯,這個方法可以,那么我們來假設(shè)這么一個場景,現(xiàn)在有一個服務(wù)器程序,上面有若干個對象,其中有三個對象的訪問頻率是百分之九十,而其他的對象訪問頻率是百分之十,請你給出一個內(nèi)存的設(shè)計方案來管理這些對象
M:(聽到這個問題,完全蒙圈,不知道如何回答,可能是緊張,不知道往STL的內(nèi)存設(shè)計這里想,平時挺熟悉的內(nèi)存池也沒想到,開始隨便說了.....)以對象管理資源吧
A:你剛才已經(jīng)說過了,你還有其他的什么想法么?沒事,能說多少是多少,這個問題比較大
M:(我忽然想到這是不是多任務(wù)啊)那線程池可以么?
A:線程池?(我聽到這么一句反問,大概是方向不對,就沒接著說)
M:這個問題不大清楚.....
A:給你點兒提示吧,怎么能減少malloc的調(diào)用
M:(真是完全蒙圈,大腦已經(jīng)不思考了,這應(yīng)該就是考慮的內(nèi)存池,怎么也沒想起來,開始瞎扯,想到內(nèi)核態(tài)和用戶態(tài)的切換需要時間)內(nèi)存映射可以么?
A:這個可以,但是不能每次都內(nèi)存映射吧,還有其他的方法么?
M:不清楚了
A:(可能有點兒失望)你都能想到線程池,想不到自己管理對象的內(nèi)存么?可以有對象池啊(我覺得這應(yīng)該就是內(nèi)存池吧),這樣可以減少malloc的次數(shù),降低系統(tǒng)開銷(然后就在電腦上打字)
M:嗯,對(真無奈啊)
注:對于第一個問題的總結(jié),C++的內(nèi)存管理,我覺得SGI中的STL兩級內(nèi)存分配完全可以解釋這個問題,在SGI中,如果申請空間大于128B,那么直接malloc,如果小于128B,調(diào)用二級分配方法,從內(nèi)存池中取出來一塊內(nèi)存(這里不需要使用malloc,更有效率,其實也就是更快)
A:那我們來寫一個小算法吧
M:(前一個問題沒回答好,我也有點兒失落,更緊張)
A:(略作沉思),有這樣一顆二叉樹,它是有序的,也就是類似于二叉搜索樹,但是有一個條件,給定一個節(jié)點A,A的左子樹的根節(jié)點的值小于等于A的值,A的右子樹的根節(jié)點的值大于等于A的值,(特點就是節(jié)點值可以相等),那么在中序遍歷中,樹的值應(yīng)該是有序的對吧?假設(shè)遍歷的結(jié)果是1,2,2,3,4,4,現(xiàn)在給你一個樹的根節(jié)點的指針,給定一個關(guān)鍵值K,求序列中值等于K的第二個樹節(jié)點的指針,如果不存在返回NULL即可
M:(聽完這個題,我感覺天黑了,我該回家了,開始思考)我的第一種思路是先比較當(dāng)前節(jié)點的值C,如果給的值K大于C,那么如果存在第二個節(jié)點,那么該節(jié)點肯定在該樹的右子樹上生長,反之如果小于C,則在左子樹上,然后遞歸調(diào)用,如果等于呢?我怎么能夠確定它是第二個我要找的呢?這個節(jié)點可能就是我要找的第二個節(jié)點,也可能它是第一個(那么第二個應(yīng)該在右子樹上),同時我們要找的節(jié)點也可能是在左子樹上(貌似有點兒困難啊,其實這個時候我已經(jīng)把代碼寫完了,不過我再檢查的時候發(fā)現(xiàn)不對,然后就沒然后了)
A:(發(fā)現(xiàn)有點兒困難,開始給我降難度)如果找不到第二個,能不能先找第一個呢?
M:嗯,第一個的話比較簡單(我嘴上說簡單,我也知道簡單,但是大腦已經(jīng)不聽使喚了.....),然后想了一會兒(其實經(jīng)歷了挺長的時間)我就想出來可以先中序遍歷,將節(jié)點壓棧,然后出棧判斷節(jié)點的值是不是和給定值K相等,如果相等則找到了第一個節(jié)點,如果不相等,則沒找到
A:嗯,(面試官想了一會兒),這個方法可以,但是不是我們想要的,你這個方法需要遍歷這顆二叉樹,而有更快的方法不需要遍歷整個二叉樹,可以這樣做,假設(shè)當(dāng)前節(jié)點的值是C,如果如果K和C相同,那么我們先標(biāo)記一個當(dāng)前節(jié)點,因為它肯定是我們要找的候選節(jié)點,再來判斷左子樹的根節(jié)點的值L,如果L的值和K相同,則遞歸調(diào)用左子樹,如果L和K不相同,是否可以判斷C一定是第一個節(jié)點呢?不能,因為L的右子樹也可能包含我們要找的節(jié)點,接著遞歸調(diào)用左子樹的右子樹即可,如果C大于K,遞歸調(diào)用左子樹,如果C小于K,遞歸調(diào)用右子樹,這個思路比較清晰把,你開始的時候應(yīng)該就是這么想的吧
M:是,但是寫到后面就有點兒亂了......
A:那我們來點兒C++基礎(chǔ)吧,說說const的用法吧,可以用在哪里
M:我就把const能用到的地方都說了一下,最后強調(diào)了一下在類中const static int可以在類中初始化(有一點兒沒說,就是const可以作為函數(shù)的返回值和修飾形參,面試官說了一句,我就補充了一下)
A:嗯,這個回答的對
A:嗯,那來說說你的項目吧(最怕的來了,沒做過什么項目,當(dāng)時就隨便說說,由于項目都不出眾,所以也沒大準(zhǔn)備,不再寫了)
注:這兩個問題考察是基本數(shù)據(jù)結(jié)構(gòu)和算法,還有項目,其實如果靜下心來想想也不難,但是就是在當(dāng)時的情況下,很難有正常水平的發(fā)揮,而且我是第一次面試,結(jié)果就比較明了了
A:你有什么問題要問我么?
M:(其實我能去參加面試挺驚訝的,因為很多比我牛的人都沒接到面試通知,我就稀里糊涂的去了,所以我想知道一下我的筆試成績和狀況),您這里有筆試的成績么?我能知道一下么?
A:我看看,我這里能夠看到你的筆試成績,不過這是保密的,所以不能給你.....
M:哦,(這個問題我也沒準(zhǔn)備.....)那今年支付寶招多少個人啊?
A:這個我聽說是縮招了,但是具體情況我也不清楚
M:那沒了(真囧)
然后我就被通知今天的面試行程已經(jīng)結(jié)束,然后就沒然后了......回來的時候梳理了一下面試經(jīng)過,覺得一是自己的面試經(jīng)驗不足,二就是準(zhǔn)備的不充分,
所以分享給大家,對于面試要認(rèn)真準(zhǔn)備,如果有機會盡量參加幾次面試總結(jié)經(jīng)驗(我春招的時候有機會去面試一下,但是覺得沒必要就沒去)。
對于昨天的事情,要總結(jié)經(jīng)驗向前看,如果面試失敗也不是什么大事(貌似有點兒自我安慰的意思,哈哈),借用毛主席的一句話:春天我不先開口,哪個蟲兒敢做聲!!
總有自己的一碗飯吃。
【2016阿里巴巴面試經(jīng)驗分享】相關(guān)文章:
阿里巴巴五輪面試的經(jīng)驗分享01-16
2016平安銀行面試經(jīng)驗分享12-14
分享面試經(jīng)驗12-04
360面試經(jīng)驗分享12-17
面試的經(jīng)驗分享01-16
面試技巧經(jīng)驗分享12-28
建行面試經(jīng)驗分享12-21
小升初面試經(jīng)驗分享12-13
空姐面試經(jīng)驗分享11-12
MBA面試經(jīng)驗分享11-05