大家要的面試題來啦!

最近不少朋友在後臺諮詢前端

京東雲面試的問題面試

 

「小編,大家面試通常都有幾輪啊?」ajax

「小編,大家能夠一個面試福利嗎?算法

「小編,才畢業一年能夠進大家公司嗎?」sql

「小編,我就是想要面試題。數據庫

 

emm……後端

 

做爲貼心的小編😉😉瀏覽器

固然會盡可能知足你們的需求緩存

 

今天咱們挑了部分服務器

可能出如今 京東雲 面試實戰中的題目 和你們分享

Q:

用戶訪問京東網站時都經過瀏覽器輸入網址而非IP地址,其中是藉助DNS進行解析,在DNS解析中都會通過哪些過程?

A:

  1. 用戶輸入訪問的域名,查詢本機DNS緩存
  2. 若是本地緩存未命中則向LocalDNS進行查詢
  3. 若是LocalDNS緩存則返回結果,若是緩存未命中則向ROOT DNS進行迭代
  4. 查詢,得到域名的權威DNS地址
  5. LocalDNS向權威DNS查詢域名的IP地址
  6. LocalDNS將IP地址返回給用戶並緩存解析記錄
  7. 用戶使用IP地址進行訪問

Q:

在京東專有云環境中,涉及到衆多的系統,一個系統的響應快慢可能決定着產品性能的好壞,請問若是發現一個應用響應緩慢,如何優化?

A:

一個接口的響應緩慢多是多方面的緣由,具體分析以下:

  1. 前端接口調用:如接口自己調用速度較快,而到達前端的耗時較大,或是帶寬較少,或是接口返回數據較多致使緩慢。可適量增長帶寬,或使用cdn等方式加速靜態資源。
  2. 應用程序方面:確保程序算法足夠優化,無特耗時的算法處理,如算法無業務處理瓶頸,則可利用多線程將應用邏輯與數據處理併發處理,分而治之,加快響應速度。
  3. 數據庫方面:查看數據庫慢日誌信息,肯定待優化的sql語句,查看sql語句是否使用索引,如未使用索引,可爲其建立索引,如已使用索引,則優化索引結構(如是否符合三星索引等),減小sql語句查找數據的隨機訪問磁盤次數,加快數據的檢索速度。其次可增長數據庫內存大小,添加查詢緩存等減小數據庫層面的耗時。
  4. 緩存方面:對於經常使用數據信息也可將其存放到緩存中,如使用Redis、Memcache等中間件產品,減小程序對磁盤的訪問,加快應用響應速度。
  5. 應用服務器性能方面:服務器的性能是有限的,當一臺服務器資源被佔用殆盡時,可適量橫向擴展服務器數量,使多個服務器均衡處理請求,提升服務響應能力。

Q:

京東商城在舉辦促銷活動期間,常常會有業務訪問量大幅波動的狀況發生,爲保證業務平穩健康的運行,通常須要在促銷活動以前人工擴展集羣規模。可否使用雲產品來應對這種場景?

A:

彈性伸縮產品。彈性伸縮經過設置伸縮策略,能夠自動調整集羣規模。在業務高峯期,自動增長雲主機實例的數量,保證業務性能不受影響;當業務需求較低時,減小云主機實例數量,以節省成本。


Q:

彈性伸縮有哪幾種伸縮策略?適用的場景有哪些?

A:

  1. 定時策略:在指定週期內定時伸縮集羣規模,適用於業務負載變化狀況可預知的場景;
  2. 告警策略:基於監控指標(如CPU、內存利用率)動態擴展伸縮組中的實例數,適用於沒法預估的業務波動場景。

Q:

彈性伸縮適用於什麼類型的業務?

A:

被伸縮的集羣服務須要是無狀態、可替換的。不能保存應用的狀態信息(如會話)和相關數據(如數據庫、日誌等)。

Q:

客戶要求在咱們的專有云JDStack系統裏有一個審批流系統,用於審批資源,且須要兼容IE11。產品發佈後卻發現這樣一個問題:在IE瀏覽器裏打開審批單列表,刪除其中一條後,前端會從新請求列表,此時後端肯定已刪除此條數據,可是接口裏卻仍然返回了此條數據。請問是什麼緣由?如何解決?

A:

此問題的出現是因爲IE瀏覽器對ajax的get請求響應存在緩存機制。即當咱們請求過一次列表,緊接着刪除一條數據以後從新發送此獲取列表的get請求,那麼IE瀏覽器只會把第一次請求該接口的數據拿出來,因此咱們看到的頁面數據是沒有變化的,留心看控制檯的接口狀況,能夠發現狀態碼是「304」,即表示「只讀/無變化 Not Modified」。

解決這個問題的方法除了把get改爲post,也能夠在請求接口上作一些處理,讓瀏覽器認爲先後兩次請求是不同的,即在url後加上時間後綴的方法:

url:'xxxxxxxxxxxxxxxxxxx+"&"+new Date()

 


Q:

A是一個構造函數,var a = new A(),那麼new操做符作了什麼?

A:

首先建立了一個對象。而後每一個對象都有一個__proto__屬性,指向它所對應的原型對象,而且繼承了原型的方法和屬性。其次,每個函數被建立的時候,JS都會自動爲函數添加prototype屬性,這個屬性指向一個包含constructor字段的對象,constructor對象指向函數自身。

若是把函數當作構造函數,即經過new關鍵字創造實例的時候,就會把實例的__proto__屬性指向構造函數的prototype屬性,而後把構造函數prototype上constructor屬性傳遞給實例,而且構造函數內部對象的this替換成實例。

因此new一共作了四件事情:

  1. 創造一個對象;
  2. 實例.__proto__ ===> 構造函數.prototype;
  3. 實例.constructor ===> 構造函數;
  4. 構造函數.call(實例)。

 

沒有達到任職要求?快點擊「JDStack專有云」擴充一下專業知識儲備~

歡迎點擊「京東雲」瞭解更多精彩內容

相關文章
相關標籤/搜索