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

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

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

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

課程價(jià)格 請(qǐng)咨詢

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

詳細(xì)介紹


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


  描述struts的工作流程。


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


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


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


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


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


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


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


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


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


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


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


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


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


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



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


Java面試題

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