更新時(shí)間:2020-06-15 11:30:57 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2476次
對(duì)于想從事java的朋友來(lái)說(shuō),都會(huì)遇到java面試題的問(wèn)題,其中也包括了java后端面試題,動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編為大家整理了java后端面試題部分參考,希望對(duì)大家能夠有所幫助。
Synchronized實(shí)現(xiàn)內(nèi)存共享,ThreadLocal為每個(gè)線(xiàn)程維護(hù)一個(gè)本地變量。
采用空間換時(shí)間,它用于線(xiàn)程間的數(shù)據(jù)隔離,為每一個(gè)使用該變量的線(xiàn)程提供一個(gè)副本,每個(gè)線(xiàn)程都可以獨(dú)立地改變自己的副本,而不會(huì)和其他線(xiàn)程的副本沖突。
ThreadLocal類(lèi)中維護(hù)一個(gè)Map,用于存儲(chǔ)每一個(gè)線(xiàn)程的變量副本,Map中元素的鍵為線(xiàn)程對(duì)象,而值為對(duì)應(yīng)線(xiàn)程的變量副本。
ThreadLocal在Spring中發(fā)揮著巨大的作用,在管理Request作用域中的Bean、事務(wù)管理、任務(wù)調(diào)度、AOP等模塊都出現(xiàn)了它的身影。
Spring中絕大部分Bean都可以聲明成Singleton作用域,采用ThreadLocal進(jìn)行封裝,因此有狀態(tài)的Bean就能夠以singleton的方式在多線(xiàn)程中正常工作了。
Java虛擬機(jī)規(guī)范中將Java運(yùn)行時(shí)數(shù)據(jù)分為六種。
(1)程序計(jì)數(shù)器:是一個(gè)數(shù)據(jù)結(jié)構(gòu),用于保存當(dāng)前正常執(zhí)行的程序的內(nèi)存地址。Java虛擬機(jī)的多線(xiàn)程就是通過(guò)線(xiàn)程輪流切換并分配處理器時(shí)間來(lái)實(shí)現(xiàn)的,為了線(xiàn)程切換后能恢復(fù)到正確的位置,每條線(xiàn)程都需要一個(gè)獨(dú)立的程序計(jì)數(shù)器,互不影響,該區(qū)域?yàn)?ldquo;線(xiàn)程私有”。
(2)Java虛擬機(jī)棧:線(xiàn)程私有的,與線(xiàn)程生命周期相同,用于存儲(chǔ)局部變量表,操作棧,方法返回值。局部變量表放著基本數(shù)據(jù)類(lèi)型,還有對(duì)象的引用。
(3)本地方法棧:跟虛擬機(jī)棧很像,不過(guò)它是為虛擬機(jī)使用到的Native方法服務(wù)。
(4)Java堆:所有線(xiàn)程共享的一塊內(nèi)存區(qū)域,對(duì)象實(shí)例幾乎都在這分配內(nèi)存。
(5)方法區(qū):各個(gè)線(xiàn)程共享的區(qū)域,儲(chǔ)存虛擬機(jī)加載的類(lèi)信息,常量,靜態(tài)變量,編譯后的代碼。
(6)運(yùn)行時(shí)常量池:代表運(yùn)行時(shí)每個(gè)class文件中的常量表。包括幾種常量:編譯時(shí)的數(shù)字常量、方法或者域的引用。
(1)裝載:將Java二進(jìn)制代碼導(dǎo)入jvm中,生成Class文件。
(2)連接:a)校驗(yàn):檢查載入Class文件數(shù)據(jù)的正確性 b)準(zhǔn)備:給類(lèi)的靜態(tài)變量分配存儲(chǔ)空間 c)解析:將符號(hào)引用轉(zhuǎn)成直接引用
(3)初始化:對(duì)類(lèi)的靜態(tài)變量,靜態(tài)方法和靜態(tài)代碼塊執(zhí)行初始化工作。
雙親委派模型:類(lèi)加載器收到類(lèi)加載請(qǐng)求,首先將請(qǐng)求委派給父類(lèi)加載器完成
用戶(hù)自定義加載器->應(yīng)用程序加載器->擴(kuò)展類(lèi)加載器->啟動(dòng)類(lèi)加載器。
(1)客戶(hù)端請(qǐng)求提交到DispatcherServlet
(2)由DispatcherServlet控制器查詢(xún)HandlerMapping,找到并分發(fā)到指定的Controller中。
(3)Controller調(diào)用業(yè)務(wù)邏輯處理后,返回ModelAndView
(4)DispatcherServlet查詢(xún)一個(gè)或多個(gè)ViewResoler視圖解析器,找到ModelAndView指定的視圖
(5)視圖負(fù)責(zé)將結(jié)果顯示到客戶(hù)端
(1)HashMap是非線(xiàn)程安全的,HashTable是線(xiàn)程安全的。
(2)HashMap的鍵和值都允許有null值存在,而HashTable則不行。
(3)因?yàn)榫€(xiàn)程安全的問(wèn)題,HashMap效率比HashTable的要高。
(1)維護(hù)一個(gè)每個(gè)元素是一個(gè)鏈表的數(shù)組,而且鏈表中的每個(gè)節(jié)點(diǎn)是一個(gè)Entry[]鍵值對(duì)的數(shù)據(jù)結(jié)構(gòu)。
(2)實(shí)現(xiàn)了數(shù)組+鏈表的特性,查找快,插入刪除也快。
(3)對(duì)于每個(gè)key,他對(duì)應(yīng)的數(shù)組索引下標(biāo)是 int i = hash(key.hashcode)&(len-1);
(4)每個(gè)新加入的節(jié)點(diǎn)放在鏈表首,然后該新加入的節(jié)點(diǎn)指向原鏈表首
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“java后端面試題部分參考”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€(xiàn)咨詢(xún),有專(zhuān)業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743