發現一套面試題--很震撼,整理下答案吧,網上搜集的答案,本身不會啊

面試題網址https://www.oschina.net/question/3866162_2280368 如下爲原內容,後邊整理下答案。 淘寶一面:java

1.簡單介紹你目前的工做狀況web

2.在這些工做項目當中有沒有哪些項目是你主導或者比較瞭解的,詳細說明一下狀況,包括技術的設計面試

3.由項目中所使用的框架,介紹一下對公司內部框架的具體實現(我這裏主要是亞信的CSF和AICACHE)redis

4.csf是怎麼實現的?算法

5.csf是亞信內部的分佈式通訊框架,經過zk去管理服務註冊和發現,那麼,若是當zk集羣壓力過大,是如何動態擴容和管理的?好比像阿里這樣體系的公司, 對於服務註冊和發現,能夠如何設計,去承載搞負載,高併發的,也就是主機集羣並無宕機,可是負載很高,如何作擴展和優化?緩存

6.當前是一個服務提供者,我發佈了服務以後向zk註冊,此時,服務調用方來調用服務,會首先詢問zk我要調用的服務有哪些提供者,這些服務信息是緩存在 服務調用者這一方,仍是每次調用時都問zk要呢?tomcat

7.若是服務調用時,忽然提供服務的主機不可用了,好比由於網絡抖動調用不通,此時又是一個什麼樣的流程呢? 8.假如此時服務不可用的主機短期內又恢復了服務提供能力,又是一個怎樣的流程?網絡

9.csf服務自己有路由規則的設計嗎?雙機房,相互容災,甚至是異地多機房相互容災,調同機櫃,同機房,同城,這些調用順序是如何設計的?csf服務是如何 作優先選擇的?或者說,服務有沒有進行過一些分組,相似場景,好比根據用戶id分組,50%用戶使用A服務提供者,另外50%使用B服務提供者,這樣的場 景是如何實現的,有沒有這樣的一種策略在裏面呢?若是有的話,又是如何實現的?併發

10.服務註冊與發現以後,是對象的序列化,對序列化這塊,在Java裏瞭解有哪些具體的序列化方式呢?彼此之間的優劣是什麼樣的?在CSF裏又是怎麼作序列 化的呢?框架

11.既然有第三方的序列化方式,說明java官方提供的序列化方式應該有一些很明顯或者很致命的缺點,你能說說是什麼嗎?

12.假如讓你來設計csf框架,剛好你負責序列化這一塊,你會怎麼來設計高可用,或者選擇哪些數據來進行壓縮,哪些數據又是不能壓縮的,壓縮以後確定會 帶來一些負面效果,這些負面有哪些,有具體瞭解過嗎? 好比說,原生的bmp圖片,我能夠壓縮成jpg圖片,那咱們知道,jgp圖片實際上是有損壓縮,雖然在 肉眼上其實分辨不出來,那這種壓縮它是如何作的呢?那還有一些是無損壓縮。你以爲protobuf是有損壓縮仍是無損壓縮呢?異構系統之間又是採起什麼樣 的序列化方式呢,能採用java原生的序列化機制來實現序列化傳輸嗎?

13.序列化傳輸以後,就是底層網絡傳輸了,那nio包也出來好久了,能說明一下nio主要是作了什麼,爲何要設計nio?以及nio裏面主要的類和接口嗎?這些類 和接口分別是設麼做用能詳細描述一下嗎?nio是基於事件驅動機制來設計的,那nio裏哪一個類負責nio的事件驅動呢?

14.能說一下nio和aio的區別嗎?有了解過aio嗎?aio有哪些主要的類和接口,主要做用是什麼,能說明一下嗎?

15.對java8,java9,甚至java10有哪些重大版本的更新,有了解嗎?(面試官更想問的是java9和java10),java8有哪些至少是包級別的重大的功能更新,有了 解過嗎?(我回答了了解ConcurrentHashMap put元素致使同一個hash桶元素多於8個時,會將鏈表轉化爲紅黑樹)

16.能具體說一下紅黑樹嗎?紅黑樹的具體實現?紅黑樹具體是如何提升性能的?紅黑樹如何作到動態調整的?

17.對於列表的流式處理(流處理)和Lamda表達式有接觸過嗎?

18.對於Garbage First(G1)垃圾回收器有了解過嗎?

19.對於其餘垃圾回收器有了解過嗎?

20.jvm應用啓動參數優化,有了解嗎?大家這邊項目當中有這樣操做過嗎?好比說,當你發佈應用上去,經過監控發現young GC和old gc數據比較異常,有沒 有試圖調全年輕代和老年代之間的空間比例,以及調整垃圾回收器,以達到性能調優的目的?

21.對類加載器有了解嗎?什麼樣的狀況下須要打破雙親委派模型?打破的方式是什麼樣子的?你能描述一下嗎?舉個場景,你如今有一個web應用程序,這個 war包裏有a模塊和b模塊,a模塊依賴一個jar包的1.0版本,b模塊依賴這個jar包的2.0版本,這個jar包的1.0版本和2.0版本互不兼容,由於a,b模塊又在一個 war包裏面,那就意味着這個jar包的1.0和2.0所有在這個應用程序內部,tomcat啓動的時候對jar包裏的同一個類只會加載一次,那麼如今狀況是,要麼a模 塊起不來不能用了,要麼b模塊起不來不能用了,若是你是這個應用的owner,你怎麼辦?模塊代碼自己很難改,或者說比較複雜,a模塊沒法升級jar包,b 模塊沒法降級jar包。

22.據說過osji嗎?你知道osgi主要功能是什麼嗎?它大概的一個實現原理又是什麼樣子?

23.前面都是我在問,你在回答,比較被動,你能夠說說你對那些技術或者開源框架有比較深刻的瞭解嗎?

24.選舉算法,能具體描述一下嗎?怎麼避免死循環的選舉方式呢?好比說,有三臺主機1,2,3,1主機選舉本身並向23發送選舉消息,2和3不一樣意,而後2主機選 舉本身而後也向1和3主機發送選舉消息,1和3主機也不一樣意,3主機也如法炮製,這個怎麼避免呢?要麼所有選本身,要麼所有選別人,你們都是一條,怎 麼辦呢?

25.能描述一下paxos算法的具體實現方式嗎?這個算法裏有哪些角色?

26.能描述一下raft算法,它裏面哪些角色和它整個選舉過程是怎麼樣的嗎?具體是如何選舉的?好比仍是有1,2,3三臺主機,1,2,3都分別發出選舉信息,要求 選舉本身,過程僵住了怎麼辦?paxos和raft是不同的處理,那raft是怎麼處理的?

27.redis是如何解決熱點問題的呢?dedis集羣是怎麼實現的呢,能跟我描述一下嗎?每臺redis從機上都是完整的數據嗎,若是這樣,數據是否是太過冗餘了? 那若是是這樣,應用在訪問緩存的時候,是隨機挑選一臺redis機器嗎?那怎麼保證不會隨機挑選到同一臺機器上去呢?redis數據切片這個概念有了解嗎?

相關文章
相關標籤/搜索