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