阿里資深java面試題,架構(gòu)經(jīng)典面試題

阿里資深java面試題,架構(gòu)經(jīng)典面試題

深圳達(dá)內(nèi)教育      2022-04-05 07:49:01     9

阿里資深java面試題,架構(gòu)經(jīng)典面試題,  關(guān)于JAVA內(nèi)存模型,一個對象(兩個屬性,四個方法)實例化100次,現(xiàn)在內(nèi)存中的存儲狀態(tài),幾個對象,幾個屬性,幾個方法。 

課程價格 請咨詢

上課時段: 授課校區(qū):

詳細(xì)介紹


  關(guān)于JAVA內(nèi)存模型,一個對象(兩個屬性,四個方法)實例化100次,現(xiàn)在內(nèi)存中的存儲狀態(tài),幾個對象,幾個屬性,幾個方法。


  Java新建的對象都放在堆里,如果實例化100次,堆中產(chǎn)生100個對象,一般對象與其屬性和方法屬于一個整體,但如果屬性和方法是靜態(tài)的,則屬性和方法只在內(nèi)存中存一份。


  談?wù)凥ibernate的理解,一級和二級緩存的作用,在項目中Hibernate都是怎么使用緩存的


  一級緩存為session基本的緩存,是內(nèi)置的不能卸載。一個Session做了一個查詢操作,它會把這個結(jié)果放在一級緩存中,如果短時間內(nèi)這個session又做了同一個操作,那么hibernate就直接從一級緩存中獲取數(shù)據(jù)。


  二級緩存是SessionFactory的緩存,分為內(nèi)置緩存和外置緩存兩類。即查詢結(jié)果放在二級緩存中,如果同一個sessionFactory創(chuàng)建的某個session執(zhí)行了相同的操作,hibernate就會從二級緩存中獲取結(jié)果。適合放在二級緩存中的數(shù)據(jù)包括:很少被修改的數(shù)據(jù),不是很重要的數(shù)據(jù),允許出現(xiàn)偶偶并發(fā)的數(shù)據(jù),不會被并發(fā)訪問的數(shù)據(jù),參考數(shù)據(jù)。不適合放在二級緩存中的數(shù)據(jù):經(jīng)常被修改的數(shù)據(jù),財務(wù)數(shù)據(jù),絕對不允許出現(xiàn)并發(fā),與其他應(yīng)用共享的數(shù)據(jù)。


  反射講一講,主要是概念,都在哪需要反射機(jī)制,反射的性能,如何優(yōu)化


  能夠分析類能力的程序稱為反射。反射機(jī)制可以用來:在運行中分析類的能力,在運行中查看對象,如編寫一個toString方法供所有類使用。實現(xiàn)通用的數(shù)據(jù)操作代碼。利用Method對象,這個對象很像C++的指針。


  反射性能優(yōu)化方法主要為設(shè)置不用做安全檢查。


  談?wù)凥ibernate與Ibatis的區(qū)別,哪個性能會更高一些


  Ibatis相當(dāng)較為簡單,容易上手,Hibernate比較復(fù)雜,門檻較高。如果系統(tǒng)需要處理數(shù)據(jù)量很大,性能要求很高,需要執(zhí)行高度優(yōu)化的sql語句才能達(dá)到性能要求,則此時Ibatis會比較好。


  對不同數(shù)據(jù)庫支持方面Hibernate較好,因為Ibatis需要修改的字段較多。另外Hibernate現(xiàn)已成為主流的o/rMapping框架,開發(fā)效率高。


  對Spring的理解,項目中都用什么?怎么用的?對IOC、和AOP的理解及實現(xiàn)原理


  線程同步,并發(fā)操作怎么控制


  線程同步不一定就是同時,而是協(xié)同步驟,或協(xié)同步調(diào)。線程同步就是多個線程在邏輯上互有因果關(guān)系,所以要對其執(zhí)行順序進(jìn)行協(xié)調(diào)。


  線程并發(fā)是指同一時間間隔內(nèi),多個線程同時執(zhí)行。如果線程在時間上能夠區(qū)分,那么就可以上線程休眠指定的時間來進(jìn)行同步,可用sleep()方法完成。如果線程在時間上不能區(qū)分,但在邏輯順序上可以區(qū)分的話,那么可用jion()方法來完成,一個先執(zhí)行完,然后執(zhí)行另一個。如果線程設(shè)計較為復(fù)雜,那么就只有通過wait(),notify()方法來完成了


  描述struts的工作流程。


  簡略過程就是web應(yīng)用啟動,接收用戶請求并進(jìn)行匹配,返回用戶請求信息。


  1.在web應(yīng)用啟動時,加載并初始化ActionServlet,ActionServlet從struct-config.xml文件中讀取配置信息,把它們存放到各個配置對象中。


  2.當(dāng)ActionServlet接收到一個客戶請求時,首先檢索和用戶請求相配的ActionMapping實例,如果不存在,返回用戶請求路徑無效信息。


  3.如ActionForm實例不存在,則創(chuàng)建一個ActionForm對象,把客戶提交的表單數(shù)據(jù)保存到ActionForm對象中。


  4.根據(jù)配置信息決定是否需要表單驗證。如果需要驗證,就調(diào)用ActionForm的Validate()方法。如果Valiedate()方法返回null或返回一個不包含ActionMessage的ActionErrors對象,則表示表單驗證成功。


  5.ActionServlet更加ActionMapping實例包含的映射信息決定請請求轉(zhuǎn)發(fā)給哪個Action。如果相應(yīng)的Action實例不存在,則先創(chuàng)建這個實例,然后調(diào)用Action的execute()方法。


  6.Action的execute()方法返回一個ActionForward對象,ActionServlet再把客戶請求轉(zhuǎn)發(fā)給ActionForward對象指向的JSP組建。


  7.ActionForward對象指向的jsp組件生成的動態(tài)網(wǎng)頁,返回給客戶。


  Tomcat的session處理,如果讓你實現(xiàn)一個tomcatserver,如何實現(xiàn)session機(jī)制


  當(dāng)一個session開始時,Servlet容器會創(chuàng)建一個HttpSession對象,在某些情況下把這些HttpSession對象從內(nèi)存中轉(zhuǎn)移到文件系統(tǒng)中或數(shù)據(jù)庫中。需要訪問的時候?qū)⑺鼈冚d入到內(nèi)存中。這樣的好處就是節(jié)省內(nèi)存,當(dāng)web服務(wù)器產(chǎn)生故障時,還可以從文件系統(tǒng)或數(shù)據(jù)庫中恢復(fù)Session的數(shù)據(jù)。管理session有兩個類:1)StandardManager,這是一個默認(rèn)的類,當(dāng)tomcat啟動或重載時將會session對象保存到指定文件中。2)PersistentManager,管理方式更加靈活,具有容錯能力,可以及時把Session備份到SessionStore中,可以控制內(nèi)存中Session的數(shù)量。


  關(guān)于Cache(Ehcache,Memcached)


  Memcache:分布式內(nèi)存對象緩存系統(tǒng),占用其他機(jī)子的內(nèi)存。很多互聯(lián)網(wǎng),負(fù)載均衡三臺(以三臺為例)web服務(wù)器可以共享一臺Memcache的資源。傳遞的信息以鍵值對的形式存儲。傳遞的數(shù)據(jù)要實現(xiàn)序列化。


  Oscache:頁面級緩存(網(wǎng)上強(qiáng)調(diào)最多的東西),占用本機(jī)的內(nèi)存資源??梢赃x擇緩存到硬盤,如存取到硬盤重啟服務(wù)也可重新獲得上次持久化的資源,而如果緩存到內(nèi)存就不行。一般沒必要緩存到硬盤,因為I/O操作也是比較耗資源,和從數(shù)據(jù)庫取往往優(yōu)勢很小。Oscache存取數(shù)據(jù)的作用域分為application和session兩種。


  EhCache:Hibernate緩存,DAO緩存,安全性憑證緩存(Acegi),Web緩存,應(yīng)用持久化和分布式緩存。EhCache在默認(rèn)情況下,即在用戶未提供自身配置文件ehcache.xml或ehcache-failsafe.xml時,EhCache會依據(jù)其自身Jar存檔包含的ehcache-failsafe.xml文件所定制的策略來管理緩存。如果用戶在classpath下提供了ehcache.xml或ehcache-failsafe.xml文件,那么EhCache將會應(yīng)用這個文件。如果兩個文件同時提供,那么EhCache會使用ehcache.xml文件的配置。



    以上就是深圳達(dá)內(nèi)教育Java培訓(xùn)機(jī)構(gòu)小編介紹的“阿里資深java面試題,架構(gòu)經(jīng)典面試題”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。


Java面試題

培訓(xùn)啦提醒您:交易時請核實對方資質(zhì),對于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險,謹(jǐn)防上當(dāng)。