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