1、SpringMVC的原理以及返回?cái)?shù)據(jù)如何渲染到j(luò)sp/html上?
答:SpringMVC的核心就是DispatcherServlet,一個(gè)請(qǐng)求經(jīng)過DispatcherServlet,轉(zhuǎn)發(fā)給HandlerMapping,然后經(jīng)反射,對(duì)應(yīng)Controller及其里面方法的@RequestMapping地址,最后經(jīng)ModelAndView和ViewResoler返回給對(duì)應(yīng)視圖。
2、一個(gè)類對(duì)象屬性發(fā)生改變時(shí),如何讓調(diào)用者知道?
答:,即在set方法改變屬性時(shí),觸發(fā),這種模式也可以理解為觀察者模式
3、重寫equals為何要重寫hashCode?
答:判斷兩個(gè)對(duì)象是否相等,比較的就是其hashCode,如果你重載了equals,比如說是基于對(duì)象的內(nèi)容實(shí)現(xiàn)的,而保留hashCode的實(shí)現(xiàn)不變,那么很可能某兩個(gè)對(duì)象明明是“相等”,而hashCode卻不一樣。hashcode不一樣,就無法認(rèn)定兩個(gè)對(duì)象相等了
4、談?wù)勀銓?duì)JVM的理解?
答:Java語言的一個(gè)非常重要的特點(diǎn)就是與平臺(tái)的無關(guān)性。而使用Java虛擬機(jī)是實(shí)現(xiàn)這一特點(diǎn)的關(guān)鍵。Java編譯器只要面向JVM,生成JVM能理解的代碼或字節(jié)碼文件。Java源文件經(jīng)編譯成字節(jié)碼程序,通過JVM將每一條指令翻譯成不同平臺(tái)機(jī)器碼,通過特定平臺(tái)運(yùn)行。
JVM執(zhí)行程序的過程:I.加載。class文件,II.管理并分配內(nèi)存,III.執(zhí)行垃圾收集
JRE(java運(yùn)行時(shí)環(huán)境)由JVM構(gòu)造的java程序的運(yùn)行環(huán)境
5、Mysql的事物隔離級(jí)別?
答:Mysql的事物隔離級(jí)別其實(shí)跟Spring的事物隔離級(jí)別一樣,都是1、ReadUncommitted(讀取未提交內(nèi)容),2、ReadCommitted(讀取提交內(nèi)容),3、RepeatableRead(可重讀),4、Serializable(可串行化)
6、Spring的原理
答:Spring的核心是IOC和AOP,IOC是依賴注入和控制反轉(zhuǎn),其注入方式可分為set注入、構(gòu)造器注入、接口注入等等。IOC就是一個(gè)容器,負(fù)責(zé)實(shí)例化、定位、配置應(yīng)用程序中的對(duì)象及建立這些對(duì)象間的依賴。簡單理解就是:JAVA每個(gè)業(yè)務(wù)邏輯處理至少需要兩個(gè)或者以上的對(duì)象協(xié)作進(jìn)行工作,但是每個(gè)對(duì)象在使用它的合作對(duì)象的時(shí)候,都需要頻繁的new對(duì)象來實(shí)現(xiàn),你就會(huì)發(fā)現(xiàn),對(duì)象間的耦合度高了。而IOC的思想是:Spring容器來管理這些,對(duì)象只需要處理本身業(yè)務(wù)關(guān)系就好了。至于什么是控制反轉(zhuǎn),就是獲得依賴對(duì)象的方式反轉(zhuǎn)了。
AOP呢,面向切面編程,最直接的體現(xiàn)就是Spring事物管理。至于Spring事物的相關(guān)資料,就不細(xì)說了
7、談?wù)勀銓?duì)NIO的理解
答:IO是面向流,NIO是面向緩沖,這里不細(xì)講了,具體參照:
8、ArrayList和linkedList、Vector的區(qū)別?
答:總得來說可以理解為:.
1.ArrayList是實(shí)現(xiàn)了基于動(dòng)態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu),linkedList基于鏈表的數(shù)據(jù)結(jié)構(gòu)。
2.對(duì)于隨機(jī)訪問get和set,ArrayList覺得優(yōu)于linkedList,因?yàn)閘inkedList要移動(dòng)指針。
3.對(duì)于新增和刪除操作add和remove,LinedList比較占優(yōu)勢,因?yàn)锳rrayList要移動(dòng)數(shù)據(jù)
Vector和ArrayList類似,但屬于強(qiáng)同步類,即線程安全的
9、隨便說說幾個(gè)單例模式,并選擇一種線程安全的
答:單例的類別:懶漢、餓漢、枚舉、靜態(tài)內(nèi)部類、雙重校驗(yàn)鎖等等,選擇線程安全我選最后一種,雙重校驗(yàn)鎖。
10、談?wù)劶t黑樹
答:算法和數(shù)據(jù)結(jié)構(gòu)一直是我薄弱之處,這方面說自己補(bǔ)吧,成效不大
以上就是天津卓眾教育Java培訓(xùn)機(jī)構(gòu)小編介紹的“Java高級(jí)工程師面試題及答案”的內(nèi)容,希望對(duì)大家有幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。