• <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • 第一部分 Java基礎
    第二部分 Java進階

    Java高并發面試題

     

     

    1、如何測試并發量?

     

    可以使用apache提供的ab工具測試。

     

     

    2、Nginx反向代理為什么能夠提升服務器性能?

     

    對于后端是動態服務來說,比如Java和PHP。這類服務器(如JBoss和PHP-FPM)的IO處理能力往往不高。Nginx有個好處是它會把Request在讀取完整之前buffer住,這樣交給后端的就是一個完整的HTTP請求,從而提高后端的效率,而不是斷斷續續的傳遞(互聯網上連接速度一般比較慢)。同樣,Nginx也可以把response給buffer住,同樣也是減輕后端的壓力。

     

     

    3、Nginx和Apache各有什么優缺點?

     

    ● nginx相對apache的優點:

     

    輕量級,同樣起web服務,比apache占用更少的內存及資源

     

    抗并發,nginx處理請求是異步非阻塞的,而apache則是阻塞型的,在高并發下nginx能保持

     

    低資源低消耗高性能

     

    高度模塊化的設計,編寫模塊相對簡單

     

    社區活躍,各種高性能模塊出品迅速

     

    ● Apache相對nginx的優點:

     

    Apache的rewrite比nginx的rewrite強大

     

    Apache模塊超多,基本想到的都可以找到

     

    Apache的bug少,nginx的bug相對較多

     

    Apache超穩定,一般來說,需要性能的web服務用nginx。如果不需要性能只求穩定,那就用apache

     

     

    4、Nginx多進程模型是如何實現高并發的?

     

    進程數與并發數不存在很直接的關系。這取決取server采用的工作方式。如果一個server采用一個進程負責一個request的方式,那么進程數就是并發數。那么顯而易見的,就是會有很多進程在等待中。等什么?最多的應該是等待網絡傳輸。

     

    Nginx的異步非阻塞工作方式正是利用了這點等待的時間。在需要等待的時候,這些進程就空閑出來待命了。因此表現為少數幾個進程就解決了大量的并發問題。apache是如何利用的呢,簡單來說:同樣的4個進程,如果采用一個進程負責一個request的方式,那么,同時進來4個request之后,每個進程就負責其中一個,直至會話關閉。期間,如果有第5個request進來了。就無法及時反應了,因為4個進程都沒干完活呢,因此,一般有個調度進程,每當新進來了一個request,就新開個進程來處理。nginx不這樣,每進來一個request,會有一個worker進程去處理。但不是全程的處理,處理到什么程度呢?處理到可能發生阻塞的地方,比如向上游(后端)服務器轉發request,并等待請求返回。那么,這個處理的worker不會這么傻等著,他會在發送完請求后,注冊一個事件:“如果upstream返回了,告訴我一聲,我再接著干”。于是他就休息去了。此時,如果再有request進來,他就可以很快再按這種方式處理。而一旦上游服務器返回了,就會觸發這個事件,worker才會來接手,這個request才會接著往下走。由于web server的工作性質決定了每個request的大部份生命都是在網絡傳輸中,實際上花費在server機器上的時間片不多。這是幾個進程就解決高并發的秘密所在。webserver剛好屬于網絡io密集型應用,不算是計算密集型。異步,非阻塞,使用epoll,和大量細節處的優化。也正是nginx之所以然的技術基石。

     

     

    5、簡單介紹一下zookeeper以及zookeeper的原理?

     

    ZooKeeper是一個分布式的,開放源碼的分布式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。它是一個為分布式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分布式同步、組服務等。

     

    ZooKeeper的目標就是封裝好復雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶。ZooKeeper包含一個簡單的原語集,提供Java和C的接口。ZooKeeper代碼版本中,提供了分布式獨享鎖、選舉、隊列的接口,代碼在zookeeper-3.4.3\src\recipes。其中分布鎖和隊列有Java和C兩個版本,選舉只有Java版本。

     

    ● 原理:

     

    ZooKeeper是以Fast Paxos算法為基礎的,Paxos算法存在活鎖的問題,即當有多個proposer交錯提交時,有可能互相排斥導致沒有一個proposer能提交成功,而Fast Paxos作了一些優化,通過選舉產生一個leader(領導者),只有leader才能提交proposer,具體算法可見Fast Paxos。因此,要想弄懂ZooKeeper首先得對Fast Paxos有所了解。

     

    ● ZooKeeper的基本運轉流程:

     

    選舉Leader。

     

    同步數據。

     

    選舉Leader過程中算法有很多,但要達到的選舉標準是一致的。

     

    Leader要具有最高的執行ID,類似root權限。5、集群中大多數的機器得到響應并follow選出的Leader。

     

     

    6、簡單介紹一下solr?

     

    Solr是一個獨立的企業級搜索應用服務器,它對外提供類似于Web-service的API接口。用戶可以通過http請求,向搜索引擎服務器提交一定格式的XML文件,生成索引;也可以通過Http Get操作提出查找請求,并得到XML格式的返回結果。

     

    ● 特點:

     

    Solr是一個高性能,采用Java5開發,基于Lucene的全文搜索服務器。同時對其進行了擴展,提供了比Lucene更為豐富的查詢語言,同時實現了可配置、可擴展并對查詢性能進行了優化,并且提供了一個完善的功能管理界面,是一款非常優秀的全文搜索引擎。

     

    ● 工作方式:

     

    文檔通過Http利用XML加到一個搜索集合中。查詢該集合也是通過http收到一個XML/JSON響應來實現。它的主要特性包括:高效、靈活的緩存功能,垂直搜索功能,高亮顯示搜索結果,通過索引復制來提高可用性,提供一套強大Data Schema來定義字段,類型和設置文本分析,提供基于Web的管理界面等。

     

     

    7、solr怎么設置搜索結果排名靠前?

     

    可以設置文檔中域的boost值,boost值越高,計算出來的相關度得分就越高,排名也就越靠前。此方法可以把熱點商品或者推廣商品的排名提高。

     

     

    8、solr中IK分詞器原理是什么?

     

    Ik分詞器的分詞原理本質上是詞典分詞。先在內存中初始化一個詞典,然后在分詞過程中挨個讀取字符,和字典中的字符相匹配,把文檔中的所有的詞語拆分出來的過程。

     

     

    9、什么是webService?

     

    WebService是一種跨編程語言和跨操作系統平臺的遠程調用技術。所謂跨編程語言和跨操作平臺,就是說服務端程序采用java編寫,客戶端程序則可以采用其他編程語言編寫.跨操作系統平臺則是指服務端程序和客戶端程序可以在不同的操作系統上。

     

     

    10、常見的遠程調用技術?

     

    RMI是java語言本身提供的遠程通訊協議,穩定高效,是EJB的基礎。但它只能用于JAVA程序之間的通訊。Hessian和Burlap是caucho公司提供的開源協議,基于HTTP傳輸,服務端不用開防火墻端口。協議的規范公開,可以用于任意語言。跨平臺有點小問題。

     

    Httpinvoker是SpringFramework提供的遠程通訊協議,只能用于JAVA程序間的通訊,且服務端和客戶端必須使用SpringFramework。Web service是連接異構系統或異構語言的首選協議,它使用SOAP形式通訊,可以用于任何語言,目前的許多開發工具對其的支持也很好。

     

    效率相比:RMI > Httpinvoker >= Hessian > Burlap > web service。

     

     

    11、談談你對restful的理解以及在項目中的使用?

    ???????

    一種軟件架構風格、設計風格,而不是標準,只是提供了一組設計原則和約束條件。它主要用于客戶端和服務器交互類的軟件。REST指的是一組架構約束條件和原則。滿足這些約束條件和原則的應用程序或設計就是RESTful。它結構清晰、符合標準、易于理解、擴展方便,所以正得到越來越多網站的采用。

    ???????

    全部教程
  • <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • 面对面棋牌游戏