阿里電話面試總結
電話面試開始,叫我做了自我介紹,這個沒有準備,只簡單的說了幾句,接著就問我技術方面的問題了,總結如下:
1.兩個演算法問題,第一個是有介於1-101的101個隨機數,裡面有兩個相同的數,怎麼找到這個數。我首先說先用排序演算法進行排序,然後進行比較。面試官又問了此演算法的時間複雜度是多少,我給出了O(n2)。他又問還有其他方法嗎,我想了下,說採用雜湊表的方法,將資料存入雜湊表中,相同的數的鍵相同,他表示可以,又問了雜湊的空間複雜度問題,還有不開闢空間怎麼做,這個不懂,有點暈。演算法方面的問題還是比較薄弱,資料結構理解的不夠深刻,回答時,也不夠自信,這方面要加強複習。
第二個演算法是如何判斷一個連結串列是否是迴圈連結串列,我說可以使用不同的步長遍歷連結串列,當步長小的能夠追上步長大的就是了,接著又問了怎麼確定連結串列的長度,這個真不會。
2.接著問我是否熟悉多執行緒,我說熟悉,於是他問,執行緒之間如何通訊,我想了一會,感覺是呼叫一些方法,比如sleep()wait().面試過查了一下,是通過wait(),notify(),
notifyAll()方法來實現執行緒間的通訊。當時怕說錯,沒敢說,回答說目前還沒用到,現在發現傻逼了,其實是用到的,只是不知道這就是執行緒之間的通訊,今後要敢於說,不要再說沒用到了,這樣會使面試官感覺你很low。
3.泛型,這個不知道
4.下面問了JVM的技術,這個我直接說只知道classloader,他說這個比較底層,又問了我垃圾回收機制,我講了在程式執行過程中,用不到一個物件引用的時候,就會自動清除此物件,還和c++進行了對比,c++必須程式設計師手動清理,還講了引用是存放在棧記憶體中的,物件本身是放在堆記憶體中的,當引用不能指向堆記憶體中的資料時,就會清理掉。接著,他問我怎麼實現垃圾回收的演算法,想了會,說首先判斷物件是否為空,若是空的話,則說明不在使用此物件,就會進行回收。不知道對不對,他也沒往下問了。這個是網上的回答
5.設計模式方面的問題,問了一些,我說了一些,如單例模式,工廠模式等,他讓我具體介紹一下,我簡單地說了一下,說沒怎麼用過,也就過了。
6.問我熟悉spring嗎,瞭解。他問我什麼是IOC,不會,但將了spring的一些知識,過了,這個挺水的,沒有發揮出水平。
7.然後又問了印象最深刻的專案,我講了自己目前在做的一個專案,大概描述了下,他問我你用了什麼技術,什麼平臺下開發的,是不是Android的,我說在window下開發的,寫了個客戶端介面,底層進行處理,感覺沒有表述出具體採用的技術,讓他認為程式很簡單,不是很高階。
8.問我搞過web嗎,我直接就說沒搞過,當時就覺得二了,其實自己是懂得,這個直接就out了,因為面試官就是搞web的,招的就是web,應該把自己知道的介紹一下的。悲劇啊!
9.最後他說問完了,就說我有什麼問題,我問了下怎樣提高技術水平,他回答說多實踐,多看部落格。還問了阿里未來的發展方向,回答是在資料分析上。
面試完了,知道自己基礎還是很薄弱,不夠紮實,還有面試技巧缺乏,自己明明知道的知識沒能講出來,不能直接就說不會,不知道,沒搞過,可以談談自己的認識,多說,總之自身底子不牢,仍需加倍努力準備,修煉吧!