一線大廠的真實面試問題

1. 你使用過哪些組件或者方法來提升網站性能,可用性以及併發量

  1. 提高硬件能力、增加系統服務器。(當服務器增加到某個程度的時候系統所能提供的併發訪問量幾乎不變,所以不能根本解決問題)
  2. 使用緩存(本地緩存:本地可以使用JDK自帶的 Map、Guava Cache.分佈式緩存:Redis、Memcache.本地緩存不適用於提高系統併發量,一般是用處用在程序中。比如Spring是如何實現單例的呢?大家如果看過源碼的話,應該知道,S把已經初始過的變量放在一個Map中,下次再要使用這個變量的時候,先判斷Map中有沒有,這也就是系統中常見的單例模式的實現。)
  3. 消息隊列 (解耦+削峰+異步)
  4. 採用分佈式開發 (不同的服務部署在不同的機器節點上,並且一個服務也可以部署在多臺機器上,然後利用 Nginx 負載均衡訪問。這樣就解決了單點部署(All In)的缺點,大大提高的系統併發量)
  5. 數據庫分庫(讀寫分離)、分表(水平分表、垂直分表)
  6. 採用集群 (多臺機器提供相同的服務)
  7. CDN 加速 (將一些靜態資源比如圖片、視頻等等緩存到離用戶最近的網絡節點)
  8. 瀏覽器緩存
  9. 使用合適的連接池(數據庫連接池、線程池等等)
  10. 適當使用多線程進行開發。

2. 設計高可用系統的常用手段

  1. 降級: 服務降級是當服務器壓力劇增的情況下,根據當前業務情況及流量對一些服務和頁面有策略的降級,以此釋放服務器資源以保證核心任務的正常運行。降級往往會指定不同的級別,面臨不同的異常等級執行不同的處理。根據服務方式:可以拒接服務,可以延遲服務,也有時候可以隨機服務。根據服務範圍:可以砍掉某個功能,也可以砍掉某些模塊。總之服務降級需要根據不同的業務需求採用不同的降級策略。主要的目的就是服務雖然有損但是總比沒有好;
  2. 限流: 防止惡意請求流量、惡意攻擊,或者防止流量超出系統峰值;
  3. 緩存: 避免大量請求直接落到數據庫,將數據庫擊垮;
  4. 超時和重試機制: 避免請求堆積造成雪崩;
  5. 回滾機制: 快速修復錯誤版本。

3. 現代互聯網應用系統通常具有哪些特點?

  1. 高併發,大流量;
  2. 高可用:系統7×24小時不間斷服務;
  3. 海量數據:需要存儲、管理海量數據,需要使用大量服務器;
  4. 用戶分佈廣泛,網絡情況複雜:許多大型互聯網都是為全球用戶提供服務的,用戶分佈範圍廣,各地網絡情況千差萬別;
  5. 安全環境惡劣:由於互聯網的開放性,使得互聯網更容易受到攻擊,大型網站幾乎每天都會被黑客攻擊;
  6. 需求快速變更,發佈頻繁:和傳統軟件的版本發佈頻率不同,互聯網產品為快速適應市場,滿足用戶需求,其產品發佈頻率是極高的;
  7. 漸進式發展:與傳統軟件產品或企業應用系統一開始就規劃好全部的功能和非功能需求不同,幾乎所有的大型互聯網網站都是從一個小網站開始,漸進地發展起來。

4. 談談你對微服務領域的瞭解和認識

現在大公司都在用並且未來的趨勢都是 Spring Cloud,而阿里開源的 Spring Cloud Alibaba 也是 Spring Cloud 規範的實現 。

我們通常把 Spring Cloud 理解為一系列開源組件的集合,但是 Spring Cloud並不是等同於 Spring Cloud Netflix 的 Ribbon、Feign、Eureka(停止更新)、Hystrix 這一套組件,而是抽象了一套通用的開發模式。它的目的是通過抽象出這套通用的模式,讓開發者更快更好地開發業務。但是這套開發模式運行時的實際載體,還是依賴於 RPC、網關、服務發現、配置管理、限流熔斷、分佈式鏈路跟蹤等組件的具體實現。

Spring Cloud Alibaba 是官方認證的新一套 Spring Cloud 規範的實現,Spring Cloud Alibaba 是一套國產開源產品集合,後續還會有中文 reference 和一些原理分析文章,所以,這對於國內的開發者是非常棒的一件事。阿里的這一舉動勢必會推動國內微服務技術的發展,因為在沒有 Spring Cloud Alibaba 之前,我們的第一選擇是 Spring Cloud Netflix,但是它們的文檔都是英文的,出問題後排查也比較困難, 在國內並不是有特別多的人精通。Spring Cloud Alibaba 由阿里開源組件和阿里雲產品組件兩部分組成,其致力於提供微服務一站式解決方案,方便開發者通過 Spring Cloud 編程模型輕鬆開發微服務應用。

另外,Apache Dubbo Ecosystem 是圍繞 Apache Dubbo 打造的微服務生態,是經過生產驗證的微服務的最佳實踐組合。在阿里巴巴的微服務解決方案中,Dubbo、Nacos 和 Sentinel,以及後續將開源的微服務組件,都是 Dubbo EcoSystem 的一部分。阿里後續也會將 Dubbo EcoSystem 集成到 Spring Cloud 的生態中。

5. 談談你對 Dubbo 和 Spring Cloud 的認識(兩者關係)

具體可以看公眾號-阿里巴巴中間件的這篇文章:獨家解讀:Dubbo Ecosystem - 從微服務框架到微服務生態

Dubbo 與 Spring Cloud 並不是競爭關係,Dubbo 作為成熟的 RPC 框架,其易用性、擴展性和健壯性已得到業界的認可。未來 Dubbo 將會作為 Spring Cloud Alibaba 的 RPC 組件,並與 Spring Cloud 原生的 Feign 以及 RestTemplate 進行無縫整合,實現“零”成本遷移。

在阿里巴巴的微服務解決方案中,Dubbo、Nacos 和 Sentinel,以及後續將開源的微服務組件,都是 Dubbo EcoSystem 的一部分。我們後續也會將 Dubbo EcoSystem 集成到 Spring Cloud 的生態中。


--------------------------------------------------------------------------

本教程由 www.webfunny.cn 前端監控系統 提供。 只需要簡單幾步就可以搭建一套屬於自己的前端監控系統,快來試試吧。

--------------------------------------------------------------------------

一線大廠的真實面試問題


分享到:


相關文章: