阿里優酷面試經歷——學無止境

最近幾周與阿里的面試官聊了聊,趁著我還有記憶先寫下來。本人近5年工作的JAVA程序員,技術不精。大伙不必太過吐槽。哈哈。我曾兩次時間投過簡歷。

》2013年

第一次是在2013年的時候,當時工作3年,第一輪面試還是比較容易的。就是講項目的技術點是過了。二輪的話問一些基礎然后可能就忘記了。失敗告終。

》2016年

第一輪的時候問的比較細,

像java Object有哪些方法,

回答:toString equals hashCode wait clone notify notifyall .

然后接著問hashCode相同,equals相同?

回答:不同,一般來說這樣約定equals相等那hashCode相等,hashCode只是對象的一個映射而已。

主要在集合中來區分不同的對象。然后他接著問,那相同hashCode相等的對象在hashmap中是什么區分的,

我是這樣回答的。hashmap 是由數組和鏈表組成的,關于hashmap的查找是根據將key做hash然后得到鏈表,對于hash相等的對象是通過鏈表保存的。查找的時候就需要迭代了。

接著又說如果相等hash對象太多,那么怎么解決迭代的影響。后面接著還問了些數組與列表的區別,多線程相關的知識。

第二輪是面試官結合項目來問,會對你的項目來做一些提問還是比較好回答的

第三輪 我可就慘了,一上來就問說說你對spring IOC的理解,SpringBeanFactory 是怎么實現的。你對dubbo的理解,自帶有哪些序列化。默認的是哪個。

dubbo怎么知道服務器狀態有什么內部機制。說一下https的流程。說一下jvm優化的,項目中是怎么配置的。

我是這樣回答的,spring通過dispathServlet或是filter加載bean,一種是基本注解的加載 一種是基本beanxml的加載。通過map來保存實例化和管理生命周期,ioc來說的話,map就相當于窗口的概念,spring 為什么能做代理,攔截器的原因。

可以理解 為一種注冊機制,這種思想還是比較常見的。

然后回答了對dubbo的理解 ,dubbo也就是rmi的框架,實現方式也是將zookeeper +netty+hessian+http+webservice等東西集成在一起。

rpc的原理也就是動態代理的一個過程,那dubbo也就是將序列化和付輸方式的封裝然后加再加上zookeeper的協調功能。常見的序列化有xml,json,二進制。其中他問為zookeeper能夠發生服務是否宕機或是出問題了。

我是這樣理解的,zookeeper是在服務器注冊時發現的,至于為什么能知道哪臺服務器宕機,那肯定是做監聽通過心跳這種機制了來發現服務了。但其它我覺得在zookeeper中是應該要知曉哪臺服務器當前性能比較好,cpu比較低,內存使用率不高。

他也問了這個問題了,其實我在看zookeeper的時候想過個問題。對于每一個服務來說,應當對外提供監控的功能API,就想springBoot一樣有專門的模塊暴露服務器的資源使用情況,zookeeper是否能監聽這些數據,而不是根據隨機或其它方式。

最后提到兩個問題一個說https的流程,

我的表達可能太簡單,Https只是一種協議,將服務器客戶端數據傳輸通過加密簽名方式來傳遞。雙方都需要安裝 證書,客戶端提交的數據通過加密后到服務器,服務器通過證書私鑰解密,并驗簽,然后保證數據安全。

然后他說,你知道https最大的重點在哪里嘛?我想除了安全還能是什么...想了想。他說了一句‘防劫持’,簽名不就為了防止數據被修改而做的嘛,當然‘防劫持‘’說的比較準,我沒有說到點子上?;卮鹆诉@幾個問題,明顯感覺到不行了。

最后說了下jvm優化,一般你們會調整哪幾個參數,我說一般會設置xmx 與xx:persize 兩個參數。然后他問一般你們設置成多少。

我說,4G xms 1G persize .然后參數設置有哪些根據。我說看項目情況吧,如果項目文件比較多,查詢數據量比較大,功能復雜點的,會調高一點。

具體的值也是看情況,一般的可以看在tomcat下運行時的占用內存來看。接著說 32bit 與64bit 內存設置有什么區別。我說32bit 只能設置到1g多,64應該說無限吧。然后他具了個例子,他有一臺64G的機器,設置成32的G的堆內存行不行。

我說不考慮業務發展的話 設這么多應該不合適吧。當然 我沒有具體想過個問題,也不知道設置成一半有什么后果。一般項目沒有實際去調整過?!畨嚎s’’指針我也不知道啥玩意。最后我忍不住了。

我說我屬于項目型的,沒有特別入深入研究的框架。但是看源碼或是解決問題能力還是有的。整個面試就結束了

總結:來說還是被虐了,當然還是我技不如人。其實想自己開發近5年了還是這種水平還是太搓了點。像dubbo,zookeeper也是簡單的了解 沒有在項目中實際用過。也只是談過自己理解,像jvm調優這就更沒深入。一般也就是那幾個參數了。dubbo,zookeeper,jvm調優深入理解實戰。建立你的Java知識體系。

我的技術表達能力不太專業,我喜歡將自己的經驗加自己去理解一些技術點。研究的方向不是那么深,總體來說我是一個實戰派。我能快速的學習,但知道體系可能不太全面。當然我也會繼續的努力。全面系統學習加群654675708
阿里Java高級大牛直播講解知識點,分享知識,五大階段都是各位老師多年工作經驗的梳理和總結,帶著大家全面、科學地建立自己的技術體系和技術認知!
另外我也說下在優酷的面試吧

1 優酷比較注重基礎、表達能力。面試中可能會要求里用圖形表現你的項目結構

2 通過項目來提問

3 最終領導面會問下離職原因等,還有技術問題,設計問題,高并發,隔離級別,spring事務控制

當然我卡死在最終領導面試了,價值觀的一些東西沒說好,后面就掛了。技術我感覺沒多大問題可能記得的就是如果不用數據怎么去統計大文本中的訂單信息,交集或是并集,我說可以用Java的隨機讀,然后將數據保存到map中比較。還有如果現在有30家銀行需要對接,你怎么去設計

4 保持你的自信心。

提問:

如果需要對api每秒請求次數做限制你該怎么實現。

我的回答是:

最好通過前置系統來統計,lua腳本之類的

還有就是通過spring aop來攔截統計。加鎖。(面試官說有沒有不鎖,更高性能方案)

其實我想說,要你解耦合非得寫在業務代碼中,應該放在網關那一層多好。他說的更高方案沒有給我答案,誰知道?

原文鏈接http://www.w2bc.com/article/115617

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,948評論 18 139
  • (一) 秋雨最是惹人愁,假日的秋雨更是愁上愁!米索窩在公寓一整天后終于憋不住,黃昏時候起來洗把臉,隨手將黑發...
    白簡單閱讀 498評論 0 0
  • ]在沒錢的時候,把勤舍出去,錢就來了——這叫天道酬勤;當有錢的時候,把錢舍出去,人就來了——這叫輕財聚人;當有人的...
    sug_001閱讀 568評論 0 48
  • concat(ifnull(字段名,''),'追加值')
    Luomeng閱讀 1,334評論 0 1
  • 總經理助理,算是一個高級管理層職位,代表領導,又不是領導,其中的分寸很難拿捏,是個對綜合素質要求特別高的角色。 昨...
    曹門霞客行閱讀 5,775評論 13 32