面試問題

Questions:html

 一、如訂單系統,用戶下單後,還在對訂單進行操做,好比修改訂單內容或者其餘的操做。此時商家或者管理員也在對訂單進行修改,怎樣控制?並且某方長時間持有資源。必須保證同時能操做數據,而且數據不會受到影響。設計模式

二、多線程中wait和()notify()方法,都須要取得對象的鎖才能執行操做。爲何把notify也設計成獲取對象鎖才能執行?這樣設計有什麼好處?緩存

答:默認wait()和notify()方法都須要持有相同對象的鎖進行才能進行操做。notify的做用是喚醒在此對象監視器上等待的單個線程(Thread wait pools),具體喚醒某個線程是隨機的,執行完notify後,喚醒的線程並非立馬持有對象鎖,而是等待當前持有鎖線程,也就是執行notify線程執行完成後釋放鎖,而wait的線程纔會持有鎖執行操做。而且wait()和notify()都須要在sychronized塊中進行調用。多線程

notify和wait()都是在訪問同一資源,會產生資源競爭,須要進行互斥操做,因此須要先持有對象鎖進行使用。.net

Reference:線程

http://www.voidcn.com/blog/haluoluo211/article/p-4843095.html設計

http://blog.csdn.net/nyistzp/article/details/12878417htm

http://www.jianshu.com/p/f4454164c017對象

http://lovestblog.cn/blog/2016/03/27/object-wait-notify/blog

http://www.programgo.com/article/82173634991/

http://hllvm.group.iteye.com/group/topic/43604

http://baikkp.blog.51cto.com/3131132/1190175

http://blog.csdn.net/tayanxunhua/article/details/20998809

http://www.importnew.com/10173.html

三、Ngnix中有兩種處理方式,一種是接受請求,進行緩存,而後進行轉發處理。另一種,邊接受邊傳輸,這兩種在選擇和應用場景上該考慮些什麼。

四、Spring的單例和設計模式(GOF)中的單例模式有沒有區別?有區別的話是什麼區別?

答:設計模式中的單例指JVM中只有一個實例,而Spring是容器中只存在一個實例對象。

當在Spring中定義一個Bean對象的Scope爲 Singleton時,則只會在當前Context中存在一個Bean,而且交由Spring來維護該對象的生命週期,全部引用返回的都是該Bean。

設計模式中單例設計模式是經過Constructor私有化,來實現單例模式,從而不能生成多實例。

在Spring容器中Scope設置爲Singleton的Bean,在代碼中並非不能生成多實例。

相關文章
相關標籤/搜索