更新時間:2020-03-19 10:16:51 來源:動力節點 瀏覽2781次
關于JAVA內存模型,一個對象(兩個屬性,四個方法)實例化100次,現在內存中的存儲狀態,幾個對象,幾個屬性,幾個方法。
Java新建的對象都放在堆里,如果實例化100次,堆中產生100個對象,一般對象與其屬性和方法屬于一個整體,但如果屬性和方法是靜態的,則屬性和方法只在內存中存一份。
談談Hibernate的理解,一級和二級緩存的作用,在項目中Hibernate都是怎么使用緩存的
一級緩存為session基本的緩存,是內置的不能卸載。一個Session做了一個查詢操作,它會把這個結果放在一級緩存中,如果短時間內這個session又做了同一個操作,那么hibernate就直接從一級緩存中獲取數據。
二級緩存是SessionFactory的緩存,分為內置緩存和外置緩存兩類。即查詢結果放在二級緩存中,如果同一個sessionFactory創建的某個session執行了相同的操作,hibernate就會從二級緩存中獲取結果。適合放在二級緩存中的數據包括:很少被修改的數據,不是很重要的數據,允許出現偶偶并發的數據,不會被并發訪問的數據,參考數據。不適合放在二級緩存中的數據:經常被修改的數據,財務數據,絕對不允許出現并發,與其他應用共享的數據。
反射講一講,主要是概念,都在哪需要反射機制,反射的性能,如何優化
能夠分析類能力的程序稱為反射。反射機制可以用來:在運行中分析類的能力,在運行中查看對象,如編寫一個toString方法供所有類使用。實現通用的數據操作代碼。利用Method對象,這個對象很像C++的指針。
反射性能優化方法主要為設置不用做安全檢查。
談談Hibernate與Ibatis的區別,哪個性能會更高一些
Ibatis相當較為簡單,容易上手,Hibernate比較復雜,門檻較高。如果系統需要處理數據量很大,性能要求很高,需要執行高度優化的sql語句才能達到性能要求,則此時Ibatis會比較好。
對不同數據庫支持方面Hibernate較好,因為Ibatis需要修改的字段較多。另外Hibernate現已成為主流的o/rMapping框架,開發效率高。
對Spring的理解,項目中都用什么?怎么用的?對IOC、和AOP的理解及實現原理
線程同步,并發操作怎么控制
線程同步不一定就是同時,而是協同步驟,或協同步調。線程同步就是多個線程在邏輯上互有因果關系,所以要對其執行順序進行協調。
線程并發是指同一時間間隔內,多個線程同時執行。如果線程在時間上能夠區分,那么就可以上線程休眠指定的時間來進行同步,可用sleep()方法完成。如果線程在時間上不能區分,但在邏輯順序上可以區分的話,那么可用jion()方法來完成,一個先執行完,然后執行另一個。如果線程設計較為復雜,那么就只有通過wait(),notify()方法來完成了
描述struts的工作流程。
簡略過程就是web應用啟動,接收用戶請求并進行匹配,返回用戶請求信息。
1.在web應用啟動時,加載并初始化ActionServlet,ActionServlet從struct-config.xml文件中讀取配置信息,把它們存放到各個配置對象中。
2.當ActionServlet接收到一個客戶請求時,首先檢索和用戶請求相配的ActionMapping實例,如果不存在,返回用戶請求路徑無效信息。
3.如ActionForm實例不存在,則創建一個ActionForm對象,把客戶提交的表單數據保存到ActionForm對象中。
4.根據配置信息決定是否需要表單驗證。如果需要驗證,就調用ActionForm的Validate()方法。如果Valiedate()方法返回null或返回一個不包含ActionMessage的ActionErrors對象,則表示表單驗證成功。
5.ActionServlet更加ActionMapping實例包含的映射信息決定請請求轉發給哪個Action。如果相應的Action實例不存在,則先創建這個實例,然后調用Action的execute()方法。
6.Action的execute()方法返回一個ActionForward對象,ActionServlet再把客戶請求轉發給ActionForward對象指向的JSP組建。
7.ActionForward對象指向的jsp組件生成的動態網頁,返回給客戶。
Tomcat的session處理,如果讓你實現一個tomcatserver,如何實現session機制
當一個session開始時,Servlet容器會創建一個HttpSession對象,在某些情況下把這些HttpSession對象從內存中轉移到文件系統中或數據庫中。需要訪問的時候將它們載入到內存中。這樣的好處就是節省內存,當web服務器產生故障時,還可以從文件系統或數據庫中恢復Session的數據。管理session有兩個類:1)StandardManager,這是一個默認的類,當tomcat啟動或重載時將會session對象保存到指定文件中。2)PersistentManager,管理方式更加靈活,具有容錯能力,可以及時把Session備份到SessionStore中,可以控制內存中Session的數量。
關于Cache(Ehcache,Memcached)
Memcache:分布式內存對象緩存系統,占用其他機子的內存。很多互聯網,負載均衡三臺(以三臺為例)web服務器可以共享一臺Memcache的資源。傳遞的信息以鍵值對的形式存儲。傳遞的數據要實現序列化。
Oscache:頁面級緩存(網上強調最多的東西),占用本機的內存資源。可以選擇緩存到硬盤,如存取到硬盤重啟服務也可重新獲得上次持久化的資源,而如果緩存到內存就不行。一般沒必要緩存到硬盤,因為I/O操作也是比較耗資源,和從數據庫取往往優勢很小。Oscache存取數據的作用域分為application和session兩種。
EhCache:Hibernate緩存,DAO緩存,安全性憑證緩存(Acegi),Web緩存,應用持久化和分布式緩存。EhCache在默認情況下,即在用戶未提供自身配置文件ehcache.xml或ehcache-failsafe.xml時,EhCache會依據其自身Jar存檔包含的ehcache-failsafe.xml文件所定制的策略來管理緩存。如果用戶在classpath下提供了ehcache.xml或ehcache-failsafe.xml文件,那么EhCache將會應用這個文件。如果兩個文件同時提供,那么EhCache會使用ehcache.xml文件的配置。
以上就是動力節點Java培訓機構小編介紹的“阿里資深java面試題,架構經典面試題”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習