哎呦,哪位大哥能幫我把紅色的題目回答了吧?java
問:談談WEB應用中大規模用戶高併發需求的網站架構通常原則?
答:把用戶的訪問儘量的往前推。能緩存在用戶本地的就不要讓他去訪問CDN;能緩存在CDN服務器的,就不要讓CDN去訪問靜態 服務器;能訪問靜態服務器的,就不要去訪問動態服務器;能訪問緩存的,就不要去訪問數據庫頁面。算法
問:若是新增數據也放在cache中,如何保證出現異常時數據不丟失??
答:在經過定時的同步操做來更新到磁盤。能夠在同步結束時發 送一個應答,當收到應答時才證實同步成功了。數據庫
問:請用你知道的知識描述一下GC的工做原理?如何GC是如何分代的?Concurrent包的數據結構基於都有哪些?
答:GC是JVM的垃圾回收器。JVM是經過斷定對象是否可達來肯定對象是否須要被回收。若是對象沒法從GC root往下到達,那麼它 就是能夠被回收。常量,靜態對象,方法參數等都會做爲GC root。GC會根據在不一樣的代中採用的算法一般不一樣。主要有「標記-清除」和「標記-整理」兩種方式。「標記-清除」會先給對象作標記,等一下次GC時進行回收。而「標記-整理」一般是將不回收的對象拷貝到另外一個內存區,而後釋放原來的內存區。GC裏面分爲新生代和老年代。新生代又分eden,from surviover和to surviover三個區。eden存放最新被建立的對象,minor GC是對於新生代的GC,回收過程是把有效的對象從eden區copy到 surviover區。默認的eden和surviover的比率8:1.若是serviover的內存不夠,那麼就須要老生代的空間來協助。full GC是發生在老年代,因爲老年代的對象特性,一般採用「標記-清除」算法。一旦發現full GC,全部的線程就都停下來。Concurrent包包含了支持線程併發的數據結構,如Java7中有concurrentHashMap, ArrayBlockingQueue,Executor等。 瀏覽器
問:java的內存模型是怎麼樣的?
答:Java內存分爲主內存和線程的工做內存。全部線程的變量的變化都是在工做內存進行的,除非變量被是volatile聲明的。若是想讓其餘線程看到變量的變化,就須要將工做內存的值更新到主內存中。緩存
問:volatile關鍵字的關鍵字是作什麼做用的?
答:告訴CPU不要將該值放在線程工做內存中,而是直接更新到主存。使該變量的值變化對於其餘線程是可見的,而無需進行工做內存與主內存的同步。但volatile聲明的變量只保證了併發的可見性,而不具有互斥性。服務器
問:進入同步塊和離開同步塊時,變量是如何同步的?
答:當線程進入同步塊時,會從主內存得到最新值,同時JVM對於同步塊內的對象進行加鎖。若是其餘線程想請求更新,只能等待鎖釋放。在退出同步塊時,將對象的更新同步到主內存中,而後釋放鎖。網絡
問:hibernate中,l1,l2的cache,給一個經驗值?
答:HB中的L1是session緩存,緩存查詢過的對象。L2是session factory緩存,是跨session的。因爲L2跨了不一樣的session,這樣即便本次session結束,下次再查還能再使用cache。正是這樣的特性也帶來了cache失效和更新時候的性能問題。session
問:如何作性能調優,舉個例子?
答:性能調優的前提是找到性能的瓶頸在哪裏。根據業務的不一樣性能瓶頸也不盡相同,一般來講是以空間換時間,以時間換空間,並行,或是簡化代碼。如側重於計算的業務log分析,要考慮並行的能力和緩存。若是是側重磁盤IO的業務,如文件下載,視頻播放等,則要考慮分流,壓縮與緩存。若是是網絡的瓶頸,能夠考慮調用端緩存,將計算往數據端推,壓縮傳輸數據。若是是數據庫瓶頸,可考慮內存映射,讀寫分離以及分庫分表。數據結構
問:JVM的優化經驗,經常使用的優化策略?
答:根據業務調整JVM的參數以及GC器,如增長新生代空間或是選擇GC器。修改鎖設置。減小GC升級。防止堆震盪。架構
問:對高併發的理解,如何解決用戶高併發問題?
答:高併發指的是在同一時刻,有大量的請求發送給服務器處理。對於高併發的處理原則有如下幾點:1,客戶端處理,能在客戶 端作的事情就不要發送到服務器端,好比字段驗證。2,使用CDN,分散請求到不一樣地域或類型的服務器上,3,動態內容靜態化, 對於頻繁查詢的相同內容生成靜態頁面,利用代理服務器如lighttp, Squid等,4,使用緩存,從緩存中查詢結果,儘可能不要直接 查詢數據庫。
問:對負載均衡的理解,介紹一下經常使用的負載均衡模型?
答:負載均衡是將大量請求分配到不一樣的服務器上處理,以達到每一個計算節點都發揮近似的處理性能。經常使用的負載均衡模型有
Network Address Translate, Direct Routing和IP Tunneling。NAT是經過調度器修改報文目標地址來實現的,DR則是經過修改報 文的MAC地址來實現的,TUN則是經過IP隧道技術將請求的報文轉發給真實服務器,響應則是真實服務器直接發送給客戶機。
問:談談什麼是soa,它的特色與使用場景?
答:SOA指的是面向服務的架構模式。它的特色是將不一樣的業務分離出來,作成單獨的服務,以實現服務級別的重用,爲不一樣的上 層系統提供相同的業務處理。優勢是業務解耦,提升單一服務的處理能力,使業務結構調整根據靈活性。缺點是即使很小的業務功 能也須要跨多個服務去實行,當訪問規模比較小的時候,在效率上比較低。另外須要提供服務發現的機制,調用者須要知道哪裏有服務提供。目前主要SOA通訊協議有XML, UDDI, WSDL,SOAP和HTTP
問:淘寶的高PV是如何處理的?數據量大到過一個機器容量如何處理?
答:瀏覽器緩存+CDN+靜態頁面+緩存+分佈式系統。當數據量超過單臺機器的處理能力後,就須要用集羣來處理,文件處理一般選擇是分佈式文件系統。若是是數據庫,可先分庫,採用主從結構,還能夠分表,先根據業務進行垂直拆分,再根據id散列或是時間戳進行水平分拆。。
問:應用服務器之間如何單點登陸,SSO?答:單點登陸意味着要講應用程序的認證過程轉移到當個獨立的服務器或集羣上來。一般的作法是建立單點登陸服務器,如使用CAS等系統來統一處理認證過程。當客戶端嚮應用系統發起登陸請求時,應用系統提供一個重定向響應,客戶端被重定向到CAS服務器上進行登陸。登陸成功,CAS服務器產生一個ticket給客戶端,客戶端將這個ticket發送給應用系統,應用系統將ticket發送給CAS服務器進行認證若是成功,CAS服務器發送用戶名和PGT給應用系統。