阿里巴巴電話面試記錄(他人的)

 投了阿里巴巴暑期實習的崗位,過了幾天就收到了電話面試,第一次是週六的下午,難道阿里巴巴的員工週六都還要加班,太恐怖了...當時在外面逛街,就從新約了另外的時間。週一的晚上就收到的電話,想一想這個時間應該正常。做爲程序員平時仍是要以公司的事情爲重的,閒下來了以後才能作一些面試的工做,因此他把時間安排在了週六或者晚上,接下來簡單寫寫面試到的問題吧,範圍挺大的,不少都答不上來,不知道還能不能有後續。html

    數據結構的知識:python

    1.數組和鏈表的優缺點,隨機訪問,方便增刪。linux

    2.一個元素和在數組和鏈表中查找它的時間複雜度...我怎麼以爲這個問題沒什麼意義,我怎麼感受都是O(n)呢。c++

    3.改進爲一個有序的數組,那就是二分了嘛,有序的鏈表?單鏈表是O(n),雙鏈表呢,好像仍是O(n)...程序員

    4.怎麼在O(1)的時間內查找到某個元素在數組中的位置,我答的須要hash表的輔助,接着問題擴展到hash表上,hash表存在的問題,我只知道一個衝突,衝突的解決方法有哪些?二維數組解決,另外找最近可用的存放...其實也記得清不少解決方案了。面試

    數據結構知識好像就只問了這麼多,接下來問了數據庫的知識,其實這方面的知識我只保留了會寫sql語句了...算法

    1.數據庫的索引的數據結構,我大概知道是B+樹或者B樹,能不能描述下它的結構...這個就虛了。記得不是很清楚了,隨便瞎說了一通。sql

    2.數據庫中某個字段建立索引,模糊查找的時候可以索引嗎,徹底不懂呀...數據庫

    數據庫真心忘得差很少了,幸好你沒繼續問,第一範式,第二範式,第三範式的定義,我都不記得了。編程

    而後問到了一個設計模式的問題,舉例一個設計模式應用場景,

    這個問題一時半會沒想起來,隨口說了一個看到的代碼裏用到的單例模式,而後就被繼續問了單例模式下什麼狀況會失效。我僅僅只記得若是不加鎖會在多線程的時候失效...顯然這不是他想要的答案,後來他問我瞭解不瞭解分佈式下對象共享有沒有接觸過,我沒有接觸過這方面的東西,因此給補了他想要的答案了...

    網絡方面,TCP的三次握手的具體過程,這個我沒答上來,回來本身複習了一下。這個常常會被問到,建議熟記於心,TCP釋放的四次握手過程也應該熟記於心。又問了一些socket的知識,雖然我瞭解了一點ACE的東西,可是我知道這方面我不熟,我就說我簡單的用過socket。

    C++方面,虛函數的具體使用場景,我只記得主要是配合多態使用,繼承的時候析構函數聲明爲虛函數...,還有智能指針的問題,我只記得auto_ptr和boost的smart_ptr的策略不一樣,一個是保留的,一個是計數的策略。而後就是內存泄露的問題,new和delete不匹配,異常致使泄露,怎麼預防內存泄露,RAII,都是簡單瞭解,就隨便說了一下,應該答的也不是太好。

    而後問了簡歷上的一些項目的事情,問到linux下查看文本行數的命令,這個真心不記得,我說vim能夠查看行數的...而後被鄙視了,說那是可視化的。另外問了一些軟性問題,同窗怎麼評價你的,性格如何。

 

大約一個月前申請了阿里巴巴2013研發工程師的實習生,申請時發現淘寶帳號被盜了,折騰來折騰去最後在保證賬號已經安全的狀況下,讓它自生自滅了。。半個月前接到hr的電話,參加了第一批筆試,筆試內容涵蓋語言基礎、操做系統、數據結構、算法等(題目分、分析:http://www.cr173.com/html/20299_1.html),題目不是很難,可是因爲缺少訓練和對時間掌握很差,自覺得效果很差,結果昨天下午在公交車上接到了面試的通知,對面的阿里gg非常霸氣,直接問當時可否接受電話面試,無奈在公交車上,因而推到了今天。(ps,昨天在北京嗨皮,今天早晨趕回上海,徹底裸面)。

今天下午大概3點鐘接到了電話,因爲天氣熱吧,我以爲面試一開始就不夠興奮,加上面試gg入題較快,感受不太適應。我第一次電話面試,就這樣尷尬的開始了~

1.首先問了我熟練哪一種語言,簡歷上我有寫c和python,不過感受他一直在往c++上引導,惋惜我是真不太會。最後他問了一個很簡單的問題:讓我介紹一下static。

聽到這個問題一下有點懵,感受範圍太大了反而有點以爲不知該怎麼回答,只答了靜態變量和全局數據區分配內存兩點,有點措手不及,這題就這麼過去了。

2.第二道題目繼續往c++上引,這個gg老是會反問我這個你會吧?而後雖然拋出了一些面向對象的基本問題,可是因爲個人確不會c++,這些題目就一帶而過了。

3.接下來考察數據結構和算法,題目是兩個大數據集求交集,這個題目之前看過,可是忘了(囧)(具體能夠參考http://blog.csdn.net/v_july_v/article/details/7382693),說了個思路,可是因爲細節不完善我以爲答得很差。

4.前面3道題不是特別順利讓我有一點慌,而後他問我會不會平衡二叉樹,我說通常,而後他就跳過了(再囧)。

5.接下來是操做系統,這門課基本都忘乾淨了,不過筆試中操做系統的題目答得還不錯讓我有點信心,問題是線程間通訊和進程間通訊,線程間答出了全局變量,消息和事件;進程間答出了管道(我是根據linux命令想出來的,他卻是挺吃驚我搞.net居然還會linux)

6.操做系統事後是數據庫,問我acid是什麼,要是問我數據庫事務正確執行四個基本要素我想還能答出來,縮寫以前確實沒據說過或者說一切對英文不sensitive,說了句不知道他就告訴我答案了(狂汗)。

7.此外還考了幾道網絡題,tcp的三次握手這個太簡單了,很容易就過了,而後又問我對網絡編程瞭解過少,我說只用過socket,別的不會。。

8.因爲寫了研究方向是數據挖掘,問我對分佈式的數據挖掘了不瞭解,而後簡單聊了聊分佈式就過去了。最後提醒我分佈式數據挖掘必定要關注,這是大趨勢!

9.最後問我有什麼問題,我問了研發工程師作什麼,除了寫代碼有沒有真正研發或者帶有研究意義(如數據挖掘、建模等)的工做,答案是基本沒有,算法工程師負責這部分。

以上問題大概面了25分鐘,而後個人第一次電面就這麼悲劇的結束了。專業知識上的巨大差距是顯而易見的,離畢業還有一年,還有不少東西要補。

還有一些感悟吧,軟件工程師真是苦逼,必須三頭六臂,樣樣精通。雖然面試過程當中不會問太多時髦的東西,可是基礎知識涉及c語言,數據結構,算法,操做系統,計算機網絡,裏面的知識點要都比較清楚。很久不看這些書了,確實有點吃不消。。不過這不是藉口,基礎必須打紮實。

最後想說說此次電話面試。面試開始沒有任何寒暄,直接進入正題,我甚至都不知道對方叫什麼名字(也許這不重要,可是我以爲不太禮貌)。面試的過程彷彿按着一張題目清單進行着,沒有提示,沒有其餘交流,過程感受很生硬,打一槍換一個地方。

就這樣吧,感謝這些面試讓我看到自身的差距,我以爲未雨綢繆總比期待着船到橋頭天然直強,離正式找工做還有1年,通過此次面試,對將來和方向有了更深刻的深刻。知易行難,繼續努力。

 

 

堆排序
B+,B-
怎麼判斷平衡樹
怎麼判斷一個鏈中有環
io包與nio包,nio包新增了什麼
servlet的理解
項目中費了九牛二虎之力解決的問題
Spring中有哪幾個關鍵技術
join,left join,right join。。。
操做系統的死鎖
集合類,什麼是線程安全的
加入Hashset中的對象有什麼要求
談談什麼是線程安全問題。
垃圾回收機制的理解,在何時回收垃圾,有沒有什麼規則或算法
常見的運行期異常
編譯器異常與運行期異常的區別
談談HttpSession
cookie和session的聯繫
工廠方法模式的類圖
本身對哪一個方面掌握的比較好。
String,StringBuffer,StringBuilder的區別
servlet的生命週期
對ThreadLocale類的理解
post,get方式的區別
數據庫中表的關聯關係的理解
索引是怎麼提升查詢速度的,爲何可以提升查詢速度
以上就是一次阿里電話面試的大體內容,但願對那些想去阿里面試的朋友有幫助。

以前說到阿里巴巴推薦我去阿里雲,我並無報什麼但願。結果今天很忽然,沒有任何預兆地就在我準備出去吃晚飯的時候來了電話,說大概要佔用半個小時到一個小時的時間。開始就瞎扯了幾句,還讓我作了自我介紹。

 

      順着簡歷,從個人軟件設計師證書開始,問了下軟件設計是一個怎樣的過程(好泛...);接着又扯到設計模式,問我知道哪些設計模式,適配器和工廠模式有什麼區別;以後又扯到面向對象,問了面向對象有哪幾個特徵,並分別就三個特徵繼續發問:封裝有什麼好處(我沒有徹底答到點上);C++中多態是怎樣實現的(他刨根究底地問來問去讓我招架不住了);關於繼承居然問了一個地址對齊的問題(類A有一個整型的成員變量a,類B繼承類A有一個字符型的變量b,問類B的實例在內存中是怎樣存儲的,半天我才反應過來他要問什麼)。總以前面答得不怎麼樣,我都想快點結束去吃飯。

      看到我得過兩次ACM的三等獎,就問比賽時作了幾道題內容都是什麼。而後就出了一道所謂的算法題,大體意思是有不少臺計算機在計算一個任務,如今須要隨機重啓其中的若干臺,可是有些計算機不能重啓。要寫一個函數,輸入是一個包含機器名的字符串數組,須要重啓的計算機臺數,以及不能重啓機器名所包含的子串(就是那些機器名包含這個字符串的機器不能重啓)。疑惑了半天,等到終於弄明白他想怎樣的時候發現好簡單。接着他又問若是要測試這個函數要哪些測試用例,要儘量的列出全部狀況。

      關於數據結構,問我知道哪些數據結構,線性表和鏈表各有什麼優缺點,各有什麼應用。問我有沒有用過STL,用過哪些。

      又問了些Linux的問題,包括顯示當前路徑名的命令是什麼,本身使用Linux的有效時間(以月爲單位來計算)等等

      看到簡歷上說會網絡編程,就問了個比較實際的問題,上得了QQ卻打不開網頁多是什麼問題(我回答說多是80端口被封)。接着又問了TCP/IP網絡有哪幾層,分別是什麼,剛剛這個問題可能出如今哪一層上面。DNS是什麼,這時候他提醒我說DNS配置錯誤也會出現能登陸QQ卻打不開網頁的狀況。

      最後問了一道算法題,一個二維矩陣,裏面只有0和1,問怎樣求指定某一個格與它數字相同的連通格子個數(只考慮上下左右四個方向),我說能夠用深搜,他問能不能寫出代碼,須要多長時間,我說應該很快,他就給我十分鐘時間說十分鐘以後再來電話讓我念代碼。這個深搜仍是很簡單的,因此我很快就搞定,他也表示沒問題,因而又討論了一下其它解法,包括不使用遞歸的解法。

      輪到我問問題,我就瞭解了一下阿里雲的基本狀況和下一次面試可能的時間,也順帶表達了一下對杭州的嚮往。只是直到這個時候我才知道他要招的是測試人員,有點尷尬。

      放下電話,差很少兩個小時,月亮都升得老高了。整體感受面試個人是位牛人,C++、各類算法數據結構、操做系統、網絡無不精通,加上其公司自己確實是在作技術含量很高的雲計算,因此雖然只招測試,但仍是值得一去的。

 

剛剛接到阿里的一個電話面試,提到這個問題,一時間沒回答上來。 

這裏對此問題做下分析:

      首先這應該是一個發散性問題,考察面試者的問題分析能力和處理能力。

前提條件:

1:淘寶平臺,與支付寶平臺必然是解耦的。也就是說在淘寶建立訂單過程當中不多是同步調用支付寶建立訂單接口(同步調步使用兩系統耦合太緊,支付寶建立出錯,將致使淘寶訂購失敗,這沒法接受)。

2:雖然是異步調用,但實時性要求很高。(由於大量用戶在淘寶訂購以後會當即支付) 

個人思路:

1:淘寶建立訂單時,異步調用支付寶的建立訂單接口。(或者使用消息中間件,如kafka)。支付寶收到訂購消息,則建立訂單(這期間會有必定的延遲)。

2:用戶選擇支付寶支付時,同步調用支付寶建立訂單(應爲訂單有效性檢查,這時就必需要求支付寶訂單建立成功了,但此時並不會系統形成很大壓力,由於已經有大部分訂單已建立成功。這裏支付寶只須判斷,若是訂單未建立成功,則建立訂單。)。

這裏有一個難題:如何保證支付寶異步建立訂單的及時性(用戶在淘寶下訂,到支付寶訂單建立成功的時間),我以爲這個延時最多不能超過2秒鐘(此時間是考慮用戶在淘寶的操做流程和操做時間間隔)。這裏考慮kafka主要是由於其它牛B的性能和消息不易失(消費完還能找回,保存時間長)。

 ================================================

補充:考慮到淘寶有貨物庫存的問題,如秒殺系統,必須嚴格要求先到的請求優先建立訂單,後到請求若是庫存不夠,則不能建立訂單。

因爲不可能爲秒殺系統單獨創建一套訂單流程。因此要求:必須保證訂單的順序一致性。

這一點kafka沒法知足要求,剛查到的資料:淘寶開源的消息中間件:Metamorphosis (MetaQ) 則能夠保證順序性。

相關文章
相關標籤/搜索