java后端面試題部分參考

java后端面試題部分參考

長沙中公優(yōu)就業(yè)      2022-05-03 09:56:01     48

java后端面試題部分參考,對于想從事java的朋友來說,都會遇到j(luò)ava面試題的問題,其中也包括了java后端面試題,長沙中公優(yōu)就業(yè)java培訓(xùn)機(jī)構(gòu)的小編為大家整

課程價格 請咨詢

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

詳細(xì)介紹

對于想從事java的朋友來說,都會遇到j(luò)ava面試題的問題,其中也包括了java后端面試題,長沙中公優(yōu)就業(yè)java培訓(xùn)機(jī)構(gòu)的小編為大家整理了java后端面試題部分參考,希望對大家能夠有所幫助。

1、ThreadLocal(線程變量副本)

Synchronized實(shí)現(xiàn)內(nèi)存共享,ThreadLocal為每個線程維護(hù)一個本地變量。

采用空間換時間,它用于線程間的數(shù)據(jù)隔離,為每一個使用該變量的線程提供一個副本,每個線程都可以獨(dú)立地改變自己的副本,而不會和其他線程的副本沖突。

ThreadLocal類中維護(hù)一個Map,用于存儲每一個線程的變量副本,Map中元素的鍵為線程對象,而值為對應(yīng)線程的變量副本。

ThreadLocal在Spring中發(fā)揮著巨大的作用,在管理Request作用域中的Bean、事務(wù)管理、任務(wù)調(diào)度、AOP等模塊都出現(xiàn)了它的身影。

Spring中絕大部分Bean都可以聲明成Singleton作用域,采用ThreadLocal進(jìn)行封裝,因此有狀態(tài)的Bean就能夠以singleton的方式在多線程中正常工作了。

2、Java內(nèi)存模型:

Java虛擬機(jī)規(guī)范中將Java運(yùn)行時數(shù)據(jù)分為六種。

(1)程序計數(shù)器:是一個數(shù)據(jù)結(jié)構(gòu),用于保存當(dāng)前正常執(zhí)行的程序的內(nèi)存地址。Java虛擬機(jī)的多線程就是通過線程輪流切換并分配處理器時間來實(shí)現(xiàn)的,為了線程切換后能恢復(fù)到正確的位置,每條線程都需要一個獨(dú)立的程序計數(shù)器,互不影響,該區(qū)域?yàn)?ldquo;線程私有”。

(2)Java虛擬機(jī)棧:線程私有的,與線程生命周期相同,用于存儲局部變量表,操作棧,方法返回值。局部變量表放著基本數(shù)據(jù)類型,還有對象的引用。

(3)本地方法棧:跟虛擬機(jī)棧很像,不過它是為虛擬機(jī)使用到的Native方法服務(wù)。

(4)Java堆:所有線程共享的一塊內(nèi)存區(qū)域,對象實(shí)例幾乎都在這分配內(nèi)存。

(5)方法區(qū):各個線程共享的區(qū)域,儲存虛擬機(jī)加載的類信息,常量,靜態(tài)變量,編譯后的代碼。

(6)運(yùn)行時常量池:代表運(yùn)行時每個class文件中的常量表。包括幾種常量:編譯時的數(shù)字常量、方法或者域的引用。

3、類加載器工作機(jī)制:

(1)裝載:將Java二進(jìn)制代碼導(dǎo)入jvm中,生成Class文件。

(2)連接:a)校驗(yàn):檢查載入Class文件數(shù)據(jù)的正確性 b)準(zhǔn)備:給類的靜態(tài)變量分配存儲空間 c)解析:將符號引用轉(zhuǎn)成直接引用

(3)初始化:對類的靜態(tài)變量,靜態(tài)方法和靜態(tài)代碼塊執(zhí)行初始化工作。

雙親委派模型:類加載器收到類加載請求,首先將請求委派給父類加載器完成

用戶自定義加載器->應(yīng)用程序加載器->擴(kuò)展類加載器->啟動類加載器。

4、SpringMVC運(yùn)行原理

(1)客戶端請求提交到DispatcherServlet

(2)由DispatcherServlet控制器查詢HandlerMapping,找到并分發(fā)到指定的Controller中。

(3)Controller調(diào)用業(yè)務(wù)邏輯處理后,返回ModelAndView

(4)DispatcherServlet查詢一個或多個ViewResoler視圖解析器,找到ModelAndView指定的視圖

(5)視圖負(fù)責(zé)將結(jié)果顯示到客戶端

5、HashMap與HashTable的區(qū)別

(1)HashMap是非線程安全的,HashTable是線程安全的。

(2)HashMap的鍵和值都允許有null值存在,而HashTable則不行。

(3)因?yàn)榫€程安全的問題,HashMap效率比HashTable的要高。

6、HashMap的實(shí)現(xiàn)機(jī)制:

(1)維護(hù)一個每個元素是一個鏈表的數(shù)組,而且鏈表中的每個節(jié)點(diǎn)是一個Entry[]鍵值對的數(shù)據(jù)結(jié)構(gòu)。

(2)實(shí)現(xiàn)了數(shù)組+鏈表的特性,查找快,插入刪除也快。

(3)對于每個key,他對應(yīng)的數(shù)組索引下標(biāo)是 int i = hash(key.hashcode)&(len-1);

(4)每個新加入的節(jié)點(diǎn)放在鏈表首,然后該新加入的節(jié)點(diǎn)指向原鏈表首

以上就是長沙中公優(yōu)就業(yè)java培訓(xùn)機(jī)構(gòu)的小編針對“java后端面試題部分參考”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時為你服務(wù)。

Java面試題

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