京東Java面試題(一)

一、說一下java類集
二、字符串哈西相等,equals相等嗎?反過來呢?
三、Spring的工做原理,控制控制反轉是怎麼實現的,本身寫過濾器過濾編碼怎麼實現
四、框架的源碼有沒有看過
五、動態代理是怎麼實現的
六、action是單實例仍是多實例
1) Struts2 會對每個請求,產生一個Action的實例來處理.
2) Spring的Ioc容器管理的bean默認是單實例的.
Struts2與Spring整合後, 由spring來管理Struts2的Action,  bean默認是單實例有狀況下,會有以下問題:


1) Action是單例,其中的FieldError,actionerror中的錯誤信息 會累加, 即便再次輸入了正確的信息,也過不了驗證.


2) Struts2的Action是有狀態的,他有本身的成員屬性, 因此在多線程下,會有問題.
如何解決?
方案一: 就是不用單例, spring中bean的做用域設爲prototype,每一個請求對應一個實例.


方案二: spring中bean的做用域設爲session ,每一個session對應一個實例,解決了多線程問題.(如何設置做用域請看: 4 spring中bean的做用域 )


再寫一個攔截器, 清空 FieldError與actionerror


七、怎麼配置bean
八、修改單實例多實例
九、java的設計模式
十、事務的控制
十一、贓讀
髒讀又稱無效數據的讀出,是指在數據庫訪問中,事務T1將某一值修改,而後事務T2讀取該值,此後T1由於某種緣由撤銷對該值的修改,這就致使了T2所讀取到的數據是無效的。
髒讀就是指當一個事務正在訪問數據,而且對數據進行了修改,而這種修改尚未提交到數據庫中,這時,另一個事務也訪問這個數據,而後使用了這個數據。由於這個數據是尚未提交的數據,那麼另一個事務讀到的這個數據是髒數據,依據髒數據所作的操做多是不正確的。
十二、事務的傳播屬性
REQUIRED:業務方法須要在一個事務中運行。若是方法運行時,已經處在一個事務中,那麼加入到該事務,不然爲本身建立一個新的事務。(默認是這種事務行爲)
NOT_SUPPORTED:聲明方法不須要事務。若是方法沒有關聯到一個事務,容器不會爲它開啓事務。若是方法在一個事務中(另外一個bean)被調用,該事務會被掛起,在方法調用結束後,原先的事務便會恢復執行。
REQUIRESNEW:屬性代表不論是否存在事務,業務方法總會爲本身發起一個新的事務。若是方法已經運行在一個事務中,則原有事務會被掛起,新的事務會被建立,直到方法執行結束,新事務纔算結束,原先的事務纔會恢復執行。
MANDATORY:該屬性指定業務方法只能在一個已經存在的事務中執行,業務方法不能發起本身的事務。若是業務方法在沒有事務的環境下調用,容器就會拋出例外。


SUPPORTS:這一事務屬性代表,若是業務方法在某個事務範圍內被調用,則方法成爲該事務的一部分。若是業務方法在事務範圍外被調用,則方法在沒有事務的環境下執行。
Never:指定業務方法絕對不能在事務範圍內執行。若是業務方法在某個事務中執行,容器會拋出例外,只有業務方法沒有關聯到任何事務,才能正常執行。
NESTED:若是一個活動的事務存在,則運行在一個嵌套的事務中. 若是沒有活動事務, 則按REQUIRED屬性執行.它使用了一個單獨的事務, 這個事務擁有多個能夠回滾的保存點。內部事務的回滾不會對外部事務形成影響。它只對DataSourceTransactionManager事務管理器起效
 
數據庫系統提供了四種事務隔離級
(兩個或者多外併發事務當中)
髒讀:一個事務讀取到另外一事務未提交的更新新據。
不可重複讀:在同一事務中,屢次讀取同一數據返回的結果有所不一樣。換句話說就是,後續讀取能夠讀到另外一事務已提交的更新數據。相反,「可重複讀」在同一事務中屢次讀取數據時,可以保證所讀數據同樣,也就是,後續讀取不能讀到另外一事務已提交的更新數據。
幻讀:一個事務讀取到另外一事務已提交的insert數據
1三、購物車是怎麼實現的
1四、GMS
1五、統計一天的訂單量
1六、IN HAVING  exsit
1七、有沒有用過定時任務
1八、JVM的內存管理,
1九、堆內存、棧內存溢出
20、說一下緩存
2一、統計全部重名用戶
select name,count(*) from tab group by name having count(*)>1;








1.如何調用別人寫的接口?本身寫的接口,如何讓別人調用
2.中間間
3.List、set、Map的底層實現原理


京東面試題
1.簡單的懶漢式在多線程環境下不是線程安全的。有人提出在getInstance()方法上同步鎖,可是鎖住一整個方法可能粒度過大,不利於效率。
單例模式的餓漢式,在定義自身類型的成員變量時就將其實例化,使得在Singleton單例類被系統(姑且這麼說)加載時就已經被實例化出一個單例對象,從而一勞永逸地避免了線程安全的問題。

java

相關文章
相關標籤/搜索