NO IMAGE

2015年2月5日中午接到支付寶總部的電話,上週投的簡歷,這次是來電話面試的。電話溝通了大概40分鐘,感覺被鄙視了。

面試中問的問題大概如下:

1.專案經驗,服務如何容災,長連線如何保持等等,答的不是很好,因為最近的專案是個新的APP服務端,主要做的是一些業務邏輯上的工作,所以一些分散式的理論、HA架構什麼的,雖然之前看過,但是也都忘的差不多了,估計這時就給面試官留下很不好的印象了。

2.Http協議相關,Request Line包含什麼,這個我完全不知道是什麼了,只知道有請求頭和請求體,Request Line的概念已經在大學畢業時完全還給老師了。後來查了一下原來就是請求的第一行,內容包括Metho URI Version(CRLF)

還問了我請求頭和請求體之間用什麼分割,當時回答是兩個回車換行,後來查了一下原來是一個回車換行,這些概念現在都太模糊了;

還有問了一些常見的請求頭裡都包括什麼,隨便說了一些,當時由於緊張好多都想不起來了;

Content-length作用,我的回答是response body的長度,用於告訴客戶端訊息實體的結束。其實這個問題還可以答好多,比如在http1.1版本下,如果connection:keep-alive並且response沒有使用chuncked方式傳輸,那麼content-length就是上面的作用,但是如果使用chunked傳輸,則content-length就無效了,而是以一個空的chuncked作為結束塊。而如果不適用keep-alive的話,那麼伺服器斷開連線,客戶端就可以知道訊息結束了,所以content-length也是可以忽略的。

參考:http://blog.csdn.net/yankai0219/article/details/8269922

3.AtomicInteger底層是怎麼實現的,我說是靠硬體底層支援的原子操作指令集(現在覺得面試官想要的答案應該是hotspot中的Unsafe類),然後我又說道了Compare And Set的無鎖方式實現高併發(比較囧的是我將CAS說成了CAP),然後就問我是不是無鎖一定比有鎖效能好。

4.問我專案中遇到過哪些問題,是如何解決的,我回答把一個耗時的同步呼叫改為非同步呼叫,請求來了之後把任務加入後端佇列,然後直接返回。接著面試官就不斷追問我是怎麼callback告知客戶端這次請求的整個流程成功了,我就不斷的強調我們的這個服務只需要one way的呼叫就好,因為只是一個傳送通知的服務,就算客戶端沒有收到通知也是可以接受的。

5.java nio,本來以為要問select方法,多路IO複用的知識,沒想到只問了我Buffer類的flip方法有什麼用,因為最近專案沒有用到nio,所以就完全不知道這個函式的用法了。

6.HashMap如何解決衝突,回答:連結串列(這個應該是唯一答的比較好的了),然後問我HashMap的預設裝載因子是多少,完全不記得,我還腦殘的猜了個8,其實是0.75

7.問服務的瓶頸一般在哪裡,我回答在資料庫,接著又問是什麼造成資料庫成為瓶頸,我接著回答是磁碟IO,最後他問的問題是,知不知道一般機械硬碟的讀寫速度是多少,平均尋道時間是多少,這些都沒留意過,完全答不上來。

電話面試就這樣結束了,我也就無緣阿里巴巴了。

總結:

1.表達能力不夠好,比如現在的專案形態和技術架構就完全沒表達出來;對話過程中,總是面試官問我回答,這樣一問一答,讓我很被動,沒有把面試官引導我擅長的知識點上面;

2.基礎知識不牢固,http協議中連Request Line是什麼都不知道;

3.專案經驗欠缺,專案架構層次上的思考還不是很全面;而且之前的專案比較偏重java web方向,nio 多執行緒技術在專案中根本不會用到,導致對這些知識記得不夠牢固,只知其一不知其二;

4.暫且歸為運氣因素吧,我在阿里巴巴社招官網上投的簡歷,看到這個職位要求中有精通spring ssh mysql等,而且平時接觸多的也就是這些web框架了,所以就投了這個職位,沒想到面試官完全沒問這方面的問題,搞得我措手不及;最近閒下來看的書也都是作業系統這類的書籍,java中工作用不到的內容也表模糊了。

總之,看來我跟阿里無緣了:-(