1. 程式人生 > >Java電商項目面試題(二)

Java電商項目面試題(二)

Java

什麽是SolrCloud
SolrCloud是Solr提供的分布式搜索方案,當你需要大規模,容錯,分布式索引和檢索能力時使用SolrCloud。當一個系統的索引數據量少的時候是不需要使用SolrCloud的,當索引量很大,搜索請求並發很高,這時需要使用SolrCloud來滿足這些需求。
SolrCloud是基於Solr和Zookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作為集群的配置信息中心。
它有幾個特色功能:
1)集中式的配置信息
2)自動容錯
3)近實時搜索
4)查詢時自動負載均衡
solr怎麽設置搜索結果排名靠前(得分)?
可以設置文檔中域的boost值,boost值越高計算出來的相關度得分就越高,排名也就越靠前。此方法可以把熱點商品或者是推廣商品的排名提高。
SpringMVC全局異常處理
整個系統只有一個,
使用方法:
1)需要實現一個接口
HandlerExceptionResolver
2)需要在springmvc中配置。
處理邏輯:
捕獲整個系統中發生的異常。
1、異常寫入日誌文件
2、及時通知開發人員。發郵件、短信。
展示一個錯誤頁面,例如:您的網絡故障,請重試。
網頁靜態化
好處:1.有利於搜索引擎優化2.提高訪問速度3解決高並發
靜態文件生成的時機:當後臺添加、編輯商品時生成靜態網頁
1、mq發送消息
2、接收到消息,生成靜態頁面
3、nginx訪問靜態頁面。
什麽是sso系統
單點登錄是在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統。
登錄的處理流程:
1、登錄頁面提交用戶名密碼。
2、登錄成功後生成token。Token相當於原來的jsessionid,字符串,可以使用uuid。
3、把用戶信息保存到redis。Key就是token,value就是TbUser對象轉換成json。
4、使用String類型保存Session信息。可以使用“前綴:token”為key
5、設置key的過期時間。模擬Session的過期時間。一般半個小時。
6、把token寫入cookie中。
如何判斷是否登錄
1.從cookie中取token
2.取不到未登錄
3.取到token,到redis中查詢token是否過期
4.如果過期,為登錄狀態
5.沒有過期,登錄狀態
實現購車商品數據同步
1、要求用戶登錄。
2、把購物車商品列表保存到數據庫中。推薦使用redis。
3、Key:用戶id,value:購車商品列表。推薦使用hash,hash的field:商品id,value:商品信息。
4、在用戶未登錄情況下寫cookie。當用戶登錄後,訪問購物車列表時,
a)把cookie中的數據同步到redis。
b)把cookie中的數據刪除
c)展示購物車列表時以redis為準。
d)如果redis中有數據cookie中也有數據,需要做數據合並。相同商品數量相加,不同商品添加一個新商品。
5、如果用戶登錄狀態,展示購物車列表以redis為準。如果未登錄,以cookie為準。
瀏覽器跨域問題
跨域是指從一個域名的網頁去請求另一個域名的資源。瀏覽器出於安全的考慮,不允許不同源的請求
JSONP解決AJAX跨域問題:
JSONP是服務器與客戶端跨源通信的常用方法。最大特點就是簡單適用,老式瀏覽器全部支持,服務器改造非常小。
它的基本思想是,網頁通過添加一個<script>元素,向服務器請求JSON數據,這種做法不受同源政策限制;服務器收到請求後,將數據放在一個指定名字的回調函數裏傳回來。
海量數據的存儲問題
如今隨著互聯網的發展,數據的量級也是呈指數的增長,從GB到TB到PB。對數據的各種操作也是愈加的困難,傳統的關系性數據庫已經無法滿足快速查詢與插入數據的需求。這個時候NoSQL的出現暫時解決了這一危機。它通過降低數據的安全性,減少對事務的支持,減少對復雜查詢的支持,來獲取性能上的提升。
但是,在有些場合NoSQL一些折衷是無法滿足使用場景的,就比如有些使用場景是絕對要有事務與安全指標的。這個時候NoSQL肯定是無法滿足的,所以還是需要使用關系性數據庫。如果使用關系型數據庫解決海量存儲的問題呢?此時就需要做數據庫集群,為了提高查詢性能將一個數據庫的數據分散到不同的數據庫中存儲。

Java電商項目面試題(二)