2024年JAVA面試試題及答案完整版_第1頁(yè)
2024年JAVA面試試題及答案完整版_第2頁(yè)
2024年JAVA面試試題及答案完整版_第3頁(yè)
2024年JAVA面試試題及答案完整版_第4頁(yè)
2024年JAVA面試試題及答案完整版_第5頁(yè)
已閱讀5頁(yè),還剩50頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

2024年JAVA面試試題及答案完整版1.JDK和JRE有什么區(qū)別?正確答案:JDK:java開(kāi)發(fā)工具包,提供了java的開(kāi)發(fā)環(huán)境和運(yùn)行環(huán)境。

JRE:java運(yùn)行環(huán)境,為java的運(yùn)行提供了所需環(huán)境。

具體來(lái)說(shuō)JDK其實(shí)包含了JRE,同時(shí)還包含了編譯java源碼的編譯器javac,還包含了很多java程序調(diào)試和分析的工具。簡(jiǎn)單來(lái)說(shuō):如果你需要運(yùn)行java程序,只需安裝JRE就可以了,如果你需要編寫(xiě)java程序,需要安裝JDK。解析:Class是面向?qū)ο缶幊陶Z(yǔ)言中的一種數(shù)據(jù)類(lèi)型,它表示一個(gè)對(duì)象,可以被實(shí)例化,即創(chuàng)建其自身的副本。它主要用于封裝數(shù)據(jù)和操作數(shù)據(jù)的代碼。而Struct在大多數(shù)編程語(yǔ)言中是值類(lèi)型,它自身存儲(chǔ)數(shù)據(jù),并且自身復(fù)制傳遞。因此,Class為引用類(lèi)型,可以被實(shí)例化,存儲(chǔ)實(shí)際的引用;Struct為值類(lèi)型,自身存儲(chǔ)數(shù)據(jù)數(shù)據(jù)。這個(gè)答案符合C++、Java等面向?qū)ο缶幊陶Z(yǔ)言中的概念。

2.==和equals的區(qū)別是什么?正確答案:==對(duì)于基本類(lèi)型來(lái)說(shuō)是值比較,對(duì)于引用類(lèi)型來(lái)說(shuō)是比較的是引用;而equals默認(rèn)情況下是引用比較,只是很多類(lèi)重寫(xiě)了equals方法,比如String、Integer等把它變成了值比較,所以一般情況下equals比較的是值是否相等。解析:Class是面向?qū)ο缶幊陶Z(yǔ)言中的一種數(shù)據(jù)類(lèi)型,它表示一個(gè)對(duì)象,可以被實(shí)例化,即創(chuàng)建其自身的副本。它主要用于封裝數(shù)據(jù)和操作數(shù)據(jù)的代碼。而Struct在大多數(shù)編程語(yǔ)言中是值類(lèi)型,它自身存儲(chǔ)數(shù)據(jù),并且自身復(fù)制傳遞。因此,Class為引用類(lèi)型,可以被實(shí)例化,存儲(chǔ)實(shí)際的引用;Struct為值類(lèi)型,自身存儲(chǔ)數(shù)據(jù)數(shù)據(jù)。這個(gè)答案符合C++、Java等面向?qū)ο缶幊陶Z(yǔ)言中的概念。

3.兩個(gè)對(duì)象的hashCode相同,則equals也一定為true,對(duì)嗎?正確答案:不對(duì),兩個(gè)對(duì)象的hashCode()相同,equals()不一定true。因?yàn)樵谏⒘斜碇?,hashCode()相等即兩個(gè)鍵值對(duì)的哈希值相等,然而哈希值相等,并不一定能得出鍵值對(duì)相等。解析:暫無(wú)解析

4.final在java中有什么作用?正確答案:1、final修飾的類(lèi)叫最終類(lèi),該類(lèi)不能被繼承。2、final修飾的方法不能被重寫(xiě)。3、final修飾的變量叫常量,常量必須初始化,初始化之后值就不能被修改。解析:本題暫不支持生成解析

5.java中的Math.round(-1.5)等于多少?正確答案:等于-1,因?yàn)樵跀?shù)軸上取值時(shí),中間值(0.5)向右取整,所以正0.5是往上取整,負(fù)0.5是直接舍棄。解析:暫無(wú)解析

6.String屬于基礎(chǔ)的數(shù)據(jù)類(lèi)型嗎?正確答案:String不屬于基礎(chǔ)類(lèi)型,基礎(chǔ)類(lèi)型有8種:byte、boolean、char、short、int、float、long、double,而String屬于對(duì)象。解析:暫無(wú)解析

7.java中操作字符串都有哪些類(lèi)?它們之間有什么區(qū)別?正確答案:操作字符串的類(lèi)有:String、StringBuffer、StringBuilder。

String和StringBuffer、StringBuilder的區(qū)別在于String聲明的是不可變的對(duì)象,每次操作都會(huì)生成新的String對(duì)象,然后將指針指向新的String對(duì)象,而StringBuffer、StringBuilder可以在原有對(duì)象的基礎(chǔ)上進(jìn)行操作,所以在經(jīng)常改變字符串內(nèi)容的情況下最好不要使用String。

StringBuffer和StringBuilder最大的區(qū)別在于,StringBuffer是線(xiàn)程安全的,而StringBuilder是非線(xiàn)程安全的,但StringBuilder的性能卻高于StringBuffer,所以在單線(xiàn)程環(huán)境下推薦使用StringBuilder,多線(xiàn)程環(huán)境下推薦使用StringBuffer。解析:暫無(wú)解析

8.Stringstr="i"與Stringstr=newString("i")一樣嗎?正確答案:不一樣,因?yàn)閮?nèi)存的分配方式不一樣。Stringstr="i"的方式,java虛擬機(jī)會(huì)將其分配到常量池中;而Stringstr=newString("i")則會(huì)被分到堆內(nèi)存中。解析:暫無(wú)解析

9.如何將字符串反轉(zhuǎn)?正確答案:使用StringBuilder或者stringBuffer的reverse()方法。解析:暫無(wú)解析

10.String類(lèi)的常用方法都有那些?正確答案:1、indexOf():返回指定字符的索引。2、charAt():返回指定索引處的字符。3、replace():字符串替換。4、trim():去除字符串兩端空白。5、split():分割字符串,返回一個(gè)分割后的字符串?dāng)?shù)組。6、getBytes():返回字符串的byte類(lèi)型數(shù)組。7、length():返回字符串長(zhǎng)度。8、toLowerCase():將字符串轉(zhuǎn)成小寫(xiě)字母。9、toUpperCase():將字符串轉(zhuǎn)成大寫(xiě)字符。10、substring():截取字符串。11、equals():字符串比較。解析:暫無(wú)解析

11.抽象類(lèi)必須要有抽象方法嗎?正確答案:不需要,抽象類(lèi)不一定非要有抽象方法。解析:abstractclassCat{publicstaticvoidsayHi(){System.out.println("hi~");}}上面代碼,抽象類(lèi)并沒(méi)有抽象方法但完全可以正常運(yùn)行。

12.普通類(lèi)和抽象類(lèi)有哪些區(qū)別?正確答案:1、普通類(lèi)不能包含抽象方法,抽象類(lèi)可以包含抽象方法。2、抽象類(lèi)不能直接實(shí)例化,普通類(lèi)可以直接實(shí)例化。解析:暫無(wú)解析

13.抽象類(lèi)能使用final修飾嗎?正確答案:不能,定義抽象類(lèi)就是讓其他類(lèi)繼承的,如果定義為final該類(lèi)就不能被繼承,這樣彼此就會(huì)產(chǎn)生矛盾,所以final不能修飾抽象類(lèi)。解析:暫無(wú)解析

14.接口和抽象類(lèi)有什么區(qū)別?正確答案:1、實(shí)現(xiàn):抽象類(lèi)的子類(lèi)使用extends來(lái)繼承;接口必須使用implements來(lái)實(shí)現(xiàn)接口。2、構(gòu)造函數(shù):抽象類(lèi)可以有構(gòu)造函數(shù);接口不能有。3、實(shí)現(xiàn)數(shù)量:類(lèi)可以實(shí)現(xiàn)很多個(gè)接口;但是只能繼承一個(gè)抽象類(lèi)。4、訪(fǎng)問(wèn)修飾符:接口中的方法默認(rèn)使用public修飾;抽象類(lèi)中的方法可以是任意訪(fǎng)問(wèn)修飾符。解析:暫無(wú)解析

15.java中IO流分為幾種?正確答案:按功能來(lái)分:輸入流(input)、輸出流(output)。

按類(lèi)型來(lái)分:字節(jié)流和字符流。

字節(jié)流和字符流的區(qū)別是:字節(jié)流按8位傳輸以字節(jié)為單位輸入輸出數(shù)據(jù),字符流按16位傳輸以字符為單位輸入輸出數(shù)據(jù)。解析:這道題核心考察對(duì)常用鍵類(lèi)型的掌握。平鍵是常見(jiàn)的連接鍵;楔鍵用于傳遞有沖擊的轉(zhuǎn)矩;半圓鍵常用于輕載連接;切向鍵則用于大轉(zhuǎn)矩傳遞。每個(gè)填空都是不同鍵類(lèi)型的考查點(diǎn)。

16.BIO、NIO、AIO有什么區(qū)別?正確答案:1、BIO:BlockIO同步阻塞式IO,就是我們平常使用的傳統(tǒng)IO,它的特點(diǎn)是模式簡(jiǎn)單使用方便,并發(fā)處理能力低。2、NIO:NewIO(或NonBlockingIO)同步非阻塞IO,是傳統(tǒng)IO的升級(jí),客戶(hù)端和服務(wù)器端通過(guò)Channel(通道)通訊,實(shí)現(xiàn)了多路復(fù)用。3、AIO:AsynchronousIO是NIO的升級(jí),也叫NIO2,實(shí)現(xiàn)了異步非堵塞IO,異步IO的操作基于事件和回調(diào)機(jī)制。解析:Class是面向?qū)ο缶幊陶Z(yǔ)言中的一種數(shù)據(jù)類(lèi)型,它表示一個(gè)對(duì)象,可以被實(shí)例化,即創(chuàng)建其自身的副本。它主要用于封裝數(shù)據(jù)和操作數(shù)據(jù)的代碼。而Struct在大多數(shù)編程語(yǔ)言中是值類(lèi)型,它自身存儲(chǔ)數(shù)據(jù),并且自身復(fù)制傳遞。因此,Class為引用類(lèi)型,可以被實(shí)例化,存儲(chǔ)實(shí)際的引用;Struct為值類(lèi)型,自身存儲(chǔ)數(shù)據(jù)數(shù)據(jù)。這個(gè)答案符合C++、Java等面向?qū)ο缶幊陶Z(yǔ)言中的概念。

17.Files的常用方法都有哪些?正確答案:Files.exists():檢測(cè)文件路徑是否存在。

Files.createFile():創(chuàng)建文件。

Files.createDirectory():創(chuàng)建文件夾。

Files.delete():刪除一個(gè)文件或目錄。

Files.copy():復(fù)制文件。

Files.move():移動(dòng)文件。

Files.size():查看文件個(gè)數(shù)。

Files.read():讀取文件。

Files.write():寫(xiě)入文件。解析:暫無(wú)解析

18.java容器都有哪些?正確答案:1、Collection(List(ArrayList、LinkedList、Vector(Stack))2、Set(HashSet(LinkedHashSet)、TreeSet))3、Map(HashMap(LinkedHashMap)、TreeMap、ConcurrentHashMap、Hashtable)解析:中壓容器,特別是用于儲(chǔ)存、輸送或處理高壓氣體或液體的容器,通常需要具有較高的密封性和結(jié)構(gòu)強(qiáng)度。在制造這些容器時(shí),焊接是一種常見(jiàn)的連接方式,因?yàn)樗軌虼_保容器的結(jié)構(gòu)完整性和密封性。焊接可以形成連續(xù)的、無(wú)泄漏的焊縫,從而滿(mǎn)足中壓容器在高壓、高溫或腐蝕性環(huán)境下安全運(yùn)行的要求。因此,填空題的答案“焊接”是合理的。

19.Collection和Collections有什么區(qū)別?正確答案:1、Collection是一個(gè)集合接口,它提供了對(duì)集合對(duì)象進(jìn)行基本操作的通用接口方法,所有集合都是它的子類(lèi),比如List、Set等。2、Collections是一個(gè)包裝類(lèi),包含了很多靜態(tài)方法,不能被實(shí)例化,就像一個(gè)工具類(lèi),比如提供的排序方法:Collections.sort(list)。解析:Class是面向?qū)ο缶幊陶Z(yǔ)言中的一種數(shù)據(jù)類(lèi)型,它表示一個(gè)對(duì)象,可以被實(shí)例化,即創(chuàng)建其自身的副本。它主要用于封裝數(shù)據(jù)和操作數(shù)據(jù)的代碼。而Struct在大多數(shù)編程語(yǔ)言中是值類(lèi)型,它自身存儲(chǔ)數(shù)據(jù),并且自身復(fù)制傳遞。因此,Class為引用類(lèi)型,可以被實(shí)例化,存儲(chǔ)實(shí)際的引用;Struct為值類(lèi)型,自身存儲(chǔ)數(shù)據(jù)數(shù)據(jù)。這個(gè)答案符合C++、Java等面向?qū)ο缶幊陶Z(yǔ)言中的概念。

20.List、Set、Map之間的區(qū)別是什么?正確答案:List、Set、Map的區(qū)別主要體現(xiàn)在兩個(gè)方面:元素是否有序、是否允許元素重復(fù)。解析:Class是面向?qū)ο缶幊陶Z(yǔ)言中的一種數(shù)據(jù)類(lèi)型,它表示一個(gè)對(duì)象,可以被實(shí)例化,即創(chuàng)建其自身的副本。它主要用于封裝數(shù)據(jù)和操作數(shù)據(jù)的代碼。而Struct在大多數(shù)編程語(yǔ)言中是值類(lèi)型,它自身存儲(chǔ)數(shù)據(jù),并且自身復(fù)制傳遞。因此,Class為引用類(lèi)型,可以被實(shí)例化,存儲(chǔ)實(shí)際的引用;Struct為值類(lèi)型,自身存儲(chǔ)數(shù)據(jù)數(shù)據(jù)。這個(gè)答案符合C++、Java等面向?qū)ο缶幊陶Z(yǔ)言中的概念。

21.HashMap和Hashtable有什么區(qū)別?正確答案:1、存儲(chǔ):HashMap允許key和value為null,而Hashtable不允許。2、線(xiàn)程安全:Hashtable是線(xiàn)程安全的,而HashMap是非線(xiàn)程安全的。3、推薦使用:在Hashtable的類(lèi)注釋可以看到,Hashtable是保留類(lèi)不建議使用,推薦在單線(xiàn)程環(huán)境下使用HashMap替代,如果需要多線(xiàn)程使用則用ConcurrentHashMap替代。解析:Class是面向?qū)ο缶幊陶Z(yǔ)言中的一種數(shù)據(jù)類(lèi)型,它表示一個(gè)對(duì)象,可以被實(shí)例化,即創(chuàng)建其自身的副本。它主要用于封裝數(shù)據(jù)和操作數(shù)據(jù)的代碼。而Struct在大多數(shù)編程語(yǔ)言中是值類(lèi)型,它自身存儲(chǔ)數(shù)據(jù),并且自身復(fù)制傳遞。因此,Class為引用類(lèi)型,可以被實(shí)例化,存儲(chǔ)實(shí)際的引用;Struct為值類(lèi)型,自身存儲(chǔ)數(shù)據(jù)數(shù)據(jù)。這個(gè)答案符合C++、Java等面向?qū)ο缶幊陶Z(yǔ)言中的概念。

22.如何決定使用HashMap還是TreeMap?正確答案:對(duì)于在Map中插入、刪除、定位一個(gè)元素這類(lèi)操作,HashMap是最好的選擇,因?yàn)橄鄬?duì)而言HashMap的插入會(huì)更快,但如果你要對(duì)一個(gè)key集合進(jìn)行有序的遍歷,那TreeMap是更好的選擇。解析:暫無(wú)解析

23.說(shuō)一下HashMap的實(shí)現(xiàn)原理?正確答案:HashMap基于Hash算法實(shí)現(xiàn)的,我們通過(guò)put(key,value)存儲(chǔ),get(key)來(lái)獲取。當(dāng)傳入key時(shí),HashMap會(huì)根據(jù)key.hashCode()計(jì)算出hash值,根據(jù)hash值將value保存在bucket里。當(dāng)計(jì)算出的hash值相同時(shí),我們稱(chēng)之為hash沖突,HashMap的做法是用鏈表和紅黑樹(shù)存儲(chǔ)相同hash值的value。當(dāng)hash沖突的個(gè)數(shù)比較少時(shí),使用鏈表否則使用紅黑樹(shù)。解析:暫無(wú)解析

24.說(shuō)一下HashSet的實(shí)現(xiàn)原理?正確答案:HashSet是基于HashMap實(shí)現(xiàn)的,HashSet底層使用HashMap來(lái)保存所有元素,因此HashSet的實(shí)現(xiàn)比較簡(jiǎn)單,相關(guān)HashSet的操作,基本上都是直接調(diào)用底層HashMap的相關(guān)方法來(lái)完成,HashSet不允許重復(fù)的值。解析:暫無(wú)解析

25.ArrayList和LinkedList的區(qū)別是什么?正確答案:1、數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn):ArrayList是動(dòng)態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn),而LinkedList是雙向鏈表的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)。2、隨機(jī)訪(fǎng)問(wèn)效率:ArrayList比LinkedList在隨機(jī)訪(fǎng)問(wèn)的時(shí)候效率要高,因?yàn)長(zhǎng)inkedList是線(xiàn)性的數(shù)據(jù)存儲(chǔ)方式,所以需要移動(dòng)指針從前往后依次查找。3、增加和刪除效率:在非首尾的增加和刪除操作,LinkedList要比ArrayList效率要高,因?yàn)锳rrayList增刪操作要影響數(shù)組內(nèi)的其他數(shù)據(jù)的下標(biāo)。

綜合來(lái)說(shuō),在需要頻繁讀取集合中的元素時(shí),更推薦使用ArrayList,而在插入和刪除操作較多時(shí),更推薦使用LinkedList。解析:Class是面向?qū)ο缶幊陶Z(yǔ)言中的一種數(shù)據(jù)類(lèi)型,它表示一個(gè)對(duì)象,可以被實(shí)例化,即創(chuàng)建其自身的副本。它主要用于封裝數(shù)據(jù)和操作數(shù)據(jù)的代碼。而Struct在大多數(shù)編程語(yǔ)言中是值類(lèi)型,它自身存儲(chǔ)數(shù)據(jù),并且自身復(fù)制傳遞。因此,Class為引用類(lèi)型,可以被實(shí)例化,存儲(chǔ)實(shí)際的引用;Struct為值類(lèi)型,自身存儲(chǔ)數(shù)據(jù)數(shù)據(jù)。這個(gè)答案符合C++、Java等面向?qū)ο缶幊陶Z(yǔ)言中的概念。

26.如何實(shí)現(xiàn)數(shù)組和List之間的轉(zhuǎn)換?正確答案:數(shù)組轉(zhuǎn)List:使用Arrays.asList(array)進(jìn)行轉(zhuǎn)換。

List轉(zhuǎn)數(shù)組:使用List自帶的toArray()方法。解析://listtoarrayList<String>list=newArrayList<String>();List.add("王磊");List.add("的博客");List.toArray();//arraytolistString[]array=newString[]{"王磊","的博客"};Arrays.asList(array);

27.ArrayList和Vector的區(qū)別是什么?正確答案:1、線(xiàn)程安全:Vector使用了Synchronized來(lái)實(shí)現(xiàn)線(xiàn)程同步,是線(xiàn)程安全的,而ArrayList是非線(xiàn)程安全的。2、性能:ArrayList在性能方面要優(yōu)于Vector。3、擴(kuò)容:ArrayList和Vector都會(huì)根據(jù)實(shí)際的需要?jiǎng)討B(tài)的調(diào)整容量,只不過(guò)在Vector擴(kuò)容每次會(huì)增加1倍,而ArrayList只會(huì)增加50%。解析:Class是面向?qū)ο缶幊陶Z(yǔ)言中的一種數(shù)據(jù)類(lèi)型,它表示一個(gè)對(duì)象,可以被實(shí)例化,即創(chuàng)建其自身的副本。它主要用于封裝數(shù)據(jù)和操作數(shù)據(jù)的代碼。而Struct在大多數(shù)編程語(yǔ)言中是值類(lèi)型,它自身存儲(chǔ)數(shù)據(jù),并且自身復(fù)制傳遞。因此,Class為引用類(lèi)型,可以被實(shí)例化,存儲(chǔ)實(shí)際的引用;Struct為值類(lèi)型,自身存儲(chǔ)數(shù)據(jù)數(shù)據(jù)。這個(gè)答案符合C++、Java等面向?qū)ο缶幊陶Z(yǔ)言中的概念。

28.Array和ArrayList有何區(qū)別?正確答案:1、Array可以存儲(chǔ)基本數(shù)據(jù)類(lèi)型和對(duì)象,ArrayList只能存儲(chǔ)對(duì)象。2、Array是指定固定大小的,而ArrayList大小是自動(dòng)擴(kuò)展的。3、Array內(nèi)置方法沒(méi)有ArrayList多,比如addAll、removeAll、iteration等方法只有ArrayList有。解析:Class是面向?qū)ο缶幊陶Z(yǔ)言中的一種數(shù)據(jù)類(lèi)型,它表示一個(gè)對(duì)象,可以被實(shí)例化,即創(chuàng)建其自身的副本。它主要用于封裝數(shù)據(jù)和操作數(shù)據(jù)的代碼。而Struct在大多數(shù)編程語(yǔ)言中是值類(lèi)型,它自身存儲(chǔ)數(shù)據(jù),并且自身復(fù)制傳遞。因此,Class為引用類(lèi)型,可以被實(shí)例化,存儲(chǔ)實(shí)際的引用;Struct為值類(lèi)型,自身存儲(chǔ)數(shù)據(jù)數(shù)據(jù)。這個(gè)答案符合C++、Java等面向?qū)ο缶幊陶Z(yǔ)言中的概念。

29.在Queue中poll方法和remove方法有什么區(qū)別?正確答案:1、相同點(diǎn):都是返回第一個(gè)元素,并在隊(duì)列中刪除返回的對(duì)象。2、不同點(diǎn):如果沒(méi)有元素poll()會(huì)返回null,而remove()會(huì)直接拋出NoSuchElementException異常。解析:暫無(wú)解析

30.哪些集合類(lèi)是線(xiàn)程安全的?正確答案:Vector、Hashtable、Stack都是線(xiàn)程安全的,而像HashMap則是非線(xiàn)程安全的,不過(guò)在jdk1.5之后隨著java.util.concurrent并發(fā)包的出現(xiàn),它們也有了自己對(duì)應(yīng)的線(xiàn)程安全類(lèi),比如HashMap對(duì)應(yīng)的線(xiàn)程安全類(lèi)就是ConcurrentHashMap解析:暫無(wú)解析

31.迭代器Iterator是什么?正確答案:Iterator接口提供遍歷任何Collection的接口。我們可以從一個(gè)Collection中使用迭代器方法來(lái)獲取迭代器實(shí)例。迭代器取代了java集合框架中的Enumeration,迭代器允許調(diào)用者在迭代過(guò)程中移除元素。解析:ListIterator是Java集合框架中的一種迭代器類(lèi)型,專(zhuān)門(mén)用于對(duì)列表(如ArrayList、LinkedList等)進(jìn)行迭代操作。它提供了向前和向后遍歷列表、添加、修改和刪除元素等更豐富的功能,所以被稱(chēng)為列表迭代器。因此,答案是列表迭代器。

32.Iterator怎么使用?有什么特點(diǎn)?正確答案:Iterator的特點(diǎn)是更加安全,因?yàn)樗梢源_保,在當(dāng)前遍歷的集合元素被更改的時(shí)候,就會(huì)拋出ConcurrentModificationException異常。解析:暫無(wú)解析

33.Iterator和ListIterator有什么區(qū)別?正確答案:1、Iterator可以遍歷Set和List集合,而ListIterator只能遍歷List。2、Iterator只能單向遍歷,而ListIterator可以雙向遍歷(向前/后遍歷)。3、ListIterator從Iterator接口繼承,然后添加了一些額外的功能,比如添加一個(gè)元素、替換一個(gè)元素、獲取前面或后面元素的索引位置。解析:Class是面向?qū)ο缶幊陶Z(yǔ)言中的一種數(shù)據(jù)類(lèi)型,它表示一個(gè)對(duì)象,可以被實(shí)例化,即創(chuàng)建其自身的副本。它主要用于封裝數(shù)據(jù)和操作數(shù)據(jù)的代碼。而Struct在大多數(shù)編程語(yǔ)言中是值類(lèi)型,它自身存儲(chǔ)數(shù)據(jù),并且自身復(fù)制傳遞。因此,Class為引用類(lèi)型,可以被實(shí)例化,存儲(chǔ)實(shí)際的引用;Struct為值類(lèi)型,自身存儲(chǔ)數(shù)據(jù)數(shù)據(jù)。這個(gè)答案符合C++、Java等面向?qū)ο缶幊陶Z(yǔ)言中的概念。

34.怎么確保一個(gè)集合不能被修改?正確答案:可以使用Collections.unmodifiableCollection(Collectionc)方法來(lái)創(chuàng)建一個(gè)只讀集合,這樣改變集合的任何操作都會(huì)拋出java.lang.UnsupportedOperationException異常。解析:暫無(wú)解析

35.并行和并發(fā)有什么區(qū)別?正確答案:并行:多個(gè)處理器或多核處理器同時(shí)處理多個(gè)任務(wù)。

并發(fā):多個(gè)任務(wù)在同一個(gè)CPU核上,按細(xì)分的時(shí)間片輪流(交替)執(zhí)行,從邏輯上來(lái)看那些任務(wù)是同時(shí)執(zhí)行。解析:并發(fā)=兩個(gè)隊(duì)列和一臺(tái)咖啡機(jī)。并行=兩個(gè)隊(duì)列和兩臺(tái)咖啡機(jī)。

36.線(xiàn)程和進(jìn)程的區(qū)別?正確答案:一個(gè)程序下至少有一個(gè)進(jìn)程,一個(gè)進(jìn)程下至少有一個(gè)線(xiàn)程,一個(gè)進(jìn)程下也可以有多個(gè)線(xiàn)程來(lái)增加程序的執(zhí)行速度。解析:暫無(wú)解析

37.守護(hù)線(xiàn)程是什么?正確答案:守護(hù)線(xiàn)程是運(yùn)行在后臺(tái)的一種特殊進(jìn)程。它獨(dú)立于控制終端并且周期性地執(zhí)行某種任務(wù)或等待處理某些發(fā)生的事件。在java中垃圾回收線(xiàn)程就是特殊的守護(hù)線(xiàn)程。解析:暫無(wú)解析

38.創(chuàng)建線(xiàn)程有哪幾種方式?正確答案:創(chuàng)建線(xiàn)程有三種方式:1、繼承Thread重寫(xiě)run方法;2、實(shí)現(xiàn)Runnable接口;3、實(shí)現(xiàn)Callable接口。解析:暫無(wú)解析

39.說(shuō)一下runnable和callable有什么區(qū)別?正確答案:runnable沒(méi)有返回值,callable可以拿到有返回值,callable可以看作是runnable的補(bǔ)充。解析:暫無(wú)解析

40.線(xiàn)程有哪些狀態(tài)?正確答案:線(xiàn)程的狀態(tài):1、NEW尚未啟動(dòng)2、RUNNABLE正在執(zhí)行中3、BLOCKED阻塞的(被同步鎖或者IO鎖阻塞)4、WAITING永久等待狀態(tài)5、TIMED_WAITING等待指定的時(shí)間重新被喚醒的狀態(tài)6、TERMINATED執(zhí)行完成解析:暫無(wú)解析

41.sleep方法和wait方法有什么區(qū)別?正確答案:1、類(lèi)的不同:sleep()來(lái)自Thread,wait()來(lái)自O(shè)bject。2、釋放鎖:sleep()不釋放鎖;wait()釋放鎖。3、用法不同:sleep()時(shí)間到會(huì)自動(dòng)恢復(fù);wait()可以使用notify()/notifyAll()直接喚醒。解析:暫無(wú)解析

42.notify方法和notifyAll方法有什么區(qū)別?正確答案:notifyAll()會(huì)喚醒所有的線(xiàn)程,notify()之后喚醒一個(gè)線(xiàn)程。notifyAll()調(diào)用后,會(huì)將全部線(xiàn)程由等待池移到鎖池,然后參與鎖的競(jìng)爭(zhēng),競(jìng)爭(zhēng)成功則繼續(xù)執(zhí)行,如果不成功則留在鎖池等待鎖被釋放后再次參與競(jìng)爭(zhēng)。而notify()只會(huì)喚醒一個(gè)線(xiàn)程,具體喚醒哪一個(gè)線(xiàn)程由虛擬機(jī)控制。解析:暫無(wú)解析

43.線(xiàn)程的run方法和start方法有什么區(qū)別?正確答案:start()方法用于啟動(dòng)線(xiàn)程,run()方法用于執(zhí)行線(xiàn)程的運(yùn)行時(shí)代碼。run()可以重復(fù)調(diào)用,而start()只能調(diào)用一次。解析:暫無(wú)解析

44.創(chuàng)建線(xiàn)程池有哪幾種方式?正確答案:線(xiàn)程池創(chuàng)建有七種方式,最核心的是最后一種:1、newSingleThreadExecutor():它的特點(diǎn)在于工作線(xiàn)程數(shù)目被限制為1,操作一個(gè)無(wú)界的工作隊(duì)列,所以它保證了所有任務(wù)的都是被順序執(zhí)行,最多會(huì)有一個(gè)任務(wù)處于活動(dòng)狀態(tài),并且不允許使用者改動(dòng)線(xiàn)程池實(shí)例,因此可以避免其改變線(xiàn)程數(shù)目;2、newCachedThreadPool():它是一種用來(lái)處理大量短時(shí)間工作任務(wù)的線(xiàn)程池,具有幾個(gè)鮮明特點(diǎn):它會(huì)試圖緩存線(xiàn)程并重用,當(dāng)無(wú)緩存線(xiàn)程可用時(shí),就會(huì)創(chuàng)建新的工作線(xiàn)程;如果線(xiàn)程閑置的時(shí)間超過(guò)60秒,則被終止并移出緩存;長(zhǎng)時(shí)間閑置時(shí),這種線(xiàn)程池,不會(huì)消耗什么資源。其內(nèi)部使用SynchronousQueue作為工作隊(duì)列;3、newFixedThreadPool(intnThreads):重用指定數(shù)目(nThreads)的線(xiàn)程,其背后使用的是無(wú)界的工作隊(duì)列,任何時(shí)候最多有nThreads個(gè)工作線(xiàn)程是活動(dòng)的。這意味著,如果任務(wù)數(shù)量超過(guò)了活動(dòng)隊(duì)列數(shù)目,將在工作隊(duì)列中等待空閑線(xiàn)程出現(xiàn);如果有工作線(xiàn)程退出,將會(huì)有新的工作線(xiàn)程被創(chuàng)建,以補(bǔ)足指定的數(shù)目nThreads;4、newSingleThreadScheduledExecutor():創(chuàng)建單線(xiàn)程池,返回ScheduledExecutorService,可以進(jìn)行定時(shí)或周期性的工作調(diào)度;5、newScheduledThreadPool(intcorePoolSize):和newSingleThreadScheduledExecutor()類(lèi)似,創(chuàng)建的是個(gè)ScheduledExecutorService,可以進(jìn)行定時(shí)或周期性的工作調(diào)度,區(qū)別在于單一工作線(xiàn)程還是多個(gè)工作線(xiàn)程;6、newWorkStealingPool(intparallelism):這是一個(gè)經(jīng)常被人忽略的線(xiàn)程池,Java8才加入這個(gè)創(chuàng)建方法,其內(nèi)部會(huì)構(gòu)建ForkJoinPool,利用Work-Stealing算法,并行地處理任務(wù),不保證處理順序;7、ThreadPoolExecutor():是最原始的線(xiàn)程池創(chuàng)建,上面1-3創(chuàng)建方式都是對(duì)ThreadPoolExecutor的封裝。解析:暫無(wú)解析

45.線(xiàn)程池都有哪些狀態(tài)?正確答案:1、RUNNING:這是最正常的狀態(tài),接受新的任務(wù),處理等待隊(duì)列中的任務(wù)。2、SHUTDOWN:不接受新的任務(wù)提交,但是會(huì)繼續(xù)處理等待隊(duì)列中的任務(wù)。3、STOP:不接受新的任務(wù)提交,不再處理等待隊(duì)列中的任務(wù),中斷正在執(zhí)行任務(wù)的線(xiàn)程。4、TIDYING:所有的任務(wù)都銷(xiāo)毀了,workCount為0,線(xiàn)程池的狀態(tài)在轉(zhuǎn)換為T(mén)IDYING狀態(tài)時(shí),會(huì)執(zhí)行鉤子方法terminated()。5、TERMINATED:terminated()方法結(jié)束后,線(xiàn)程池的狀態(tài)就會(huì)變成這個(gè)。解析:暫無(wú)解析

46.線(xiàn)程池中submit方法和execute方法有什么區(qū)別?正確答案:execute():只能執(zhí)行Runnable類(lèi)型的任務(wù)。

Submit():可以執(zhí)行Runnable和Callable類(lèi)型的任務(wù)。

Callable類(lèi)型的任務(wù)可以獲取執(zhí)行的返回值,而Runnable執(zhí)行無(wú)返回值。解析:暫無(wú)解析

47.在java程序中怎么保證多線(xiàn)程的運(yùn)行安全?正確答案:方法一:使用安全類(lèi),比如java.util.concurrent下的類(lèi)。

方法二:使用自動(dòng)鎖synchronized。

方法三:使用手動(dòng)鎖Lock。解析:暫無(wú)解析

48.多線(xiàn)程中synchronized鎖升級(jí)的原理是什么?正確答案:synchronized鎖升級(jí)原理:在鎖對(duì)象的對(duì)象頭里面有一個(gè)threadid字段,在第一次訪(fǎng)問(wèn)的時(shí)候threadid為空,jvm讓其持有偏向鎖,并將threadid設(shè)置為其線(xiàn)程id,再次進(jìn)入的時(shí)候會(huì)先判斷threadid是否與其線(xiàn)程id一致,如果一致則可以直接使用此對(duì)象,如果不一致,則升級(jí)偏向鎖為輕量級(jí)鎖,通過(guò)自旋循環(huán)一定次數(shù)來(lái)獲取鎖,執(zhí)行一定次數(shù)之后,如果還沒(méi)有正常獲取到要使用的對(duì)象,此時(shí)就會(huì)把鎖從輕量級(jí)升級(jí)為重量級(jí)鎖,此過(guò)程就構(gòu)成了synchronized鎖的升級(jí)。

鎖的升級(jí)的目的:鎖升級(jí)是為了減低了鎖帶來(lái)的性能消耗。在Java6之后優(yōu)化synchronized的實(shí)現(xiàn)方式,使用了偏向鎖升級(jí)為輕量級(jí)鎖再升級(jí)到重量級(jí)鎖的方式,從而減低了鎖帶來(lái)的性能消耗。解析:暫無(wú)解析

49.什么是死鎖?正確答案:當(dāng)線(xiàn)程A持有獨(dú)占鎖a,并嘗試去獲取獨(dú)占鎖b的同時(shí),線(xiàn)程B持有獨(dú)占鎖b,并嘗試獲取獨(dú)占鎖a的情況下,就會(huì)發(fā)生AB兩個(gè)線(xiàn)程由于互相持有對(duì)方需要的鎖,而發(fā)生的阻塞現(xiàn)象,我們稱(chēng)為死鎖。解析:死鎖的必要條件通常包括四個(gè)部分,它們是:A、互斥條件:一個(gè)資源每次只能被一個(gè)進(jìn)程使用。B、請(qǐng)求與保持條件:一個(gè)進(jìn)程因請(qǐng)求資源而阻塞時(shí),對(duì)已獲得的資源保持不放。C、不剝奪條件:進(jìn)程已獲得的資源,在末使用完之前,不能強(qiáng)行剝奪。D、循環(huán)等待條件:若干進(jìn)程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系。這四個(gè)條件同時(shí)滿(mǎn)足時(shí),便會(huì)發(fā)生死鎖。因此,答案應(yīng)為A、B、C、D。

50.怎么防止死鎖?正確答案:盡量使用tryLock(longtimeout,TimeUnitunit)的方法(ReentrantLock、ReentrantReadWriteLock),設(shè)置超時(shí)時(shí)間,超時(shí)可以退出防止死鎖。

盡量使用java.util.concurrent并發(fā)類(lèi)代替自己手寫(xiě)鎖。

盡量降低鎖的使用粒度,盡量不要幾個(gè)功能用同一把鎖。

盡量減少同步的代碼塊。解析:1.考察對(duì)死鎖防止方法的掌握。2.互斥條件的破壞是關(guān)鍵之一,理解其在死鎖中的作用。3.占有并等待條件的處理,明確其與死鎖的關(guān)系。4.加鎖順序一致的保持,是防止死鎖的重要措施。

51.ThreadLocal是什么?有哪些使用場(chǎng)景?正確答案:1、ThreadLocal為每個(gè)使用該變量的線(xiàn)程提供獨(dú)立的變量副本,所以每一個(gè)線(xiàn)程都可以獨(dú)立地改變自己的副本,而不會(huì)影響其它線(xiàn)程所對(duì)應(yīng)的副本。2、ThreadLocal的經(jīng)典使用場(chǎng)景是數(shù)據(jù)庫(kù)連接和session管理等。解析:這道題考察的是MongoDB的應(yīng)用場(chǎng)景。答案重復(fù)提到了“大數(shù)據(jù)、內(nèi)容管理系統(tǒng)、移動(dòng)端Apps、數(shù)據(jù)管理”,表明MongoDB在這些領(lǐng)域有廣泛應(yīng)用,特別是處理大量數(shù)據(jù)、內(nèi)容管理、移動(dòng)端應(yīng)用的數(shù)據(jù)存儲(chǔ)和管理。

52.說(shuō)一下synchronized底層實(shí)現(xiàn)原理?正確答案:synchronized是由一對(duì)monitorenter/monitorexit指令實(shí)現(xiàn)的,monitor對(duì)象是同步的基本實(shí)現(xiàn)單元。在java6之前,monitor的實(shí)現(xiàn)完全是依靠操作系統(tǒng)內(nèi)部的互斥鎖,因?yàn)樾枰M(jìn)行用戶(hù)態(tài)到內(nèi)核態(tài)的切換,所以同步操作是一個(gè)無(wú)差別的重量級(jí)操作,性能也很低。但在java6的時(shí)候,java虛擬機(jī)對(duì)此進(jìn)行了大刀闊斧地改進(jìn),提供了三種不同的monitor實(shí)現(xiàn),也就是常說(shuō)的三種不同的鎖:偏向鎖(BiasedLocking)、輕量級(jí)鎖和重量級(jí)鎖,大大改進(jìn)了其性能。解析:暫無(wú)解析

53.synchronized和volatile的區(qū)別是什么?正確答案:1、volatile是變量修飾符;synchronized是修飾類(lèi)、方法、代碼段。2、volatile僅能實(shí)現(xiàn)變量的修改可見(jiàn)性,不能保證原子性;而synchronized則可以保證變量的修改可見(jiàn)性和原子性。3、volatile不會(huì)造成線(xiàn)程的阻塞;synchronized可能會(huì)造成線(xiàn)程的阻塞。解析:Class是面向?qū)ο缶幊陶Z(yǔ)言中的一種數(shù)據(jù)類(lèi)型,它表示一個(gè)對(duì)象,可以被實(shí)例化,即創(chuàng)建其自身的副本。它主要用于封裝數(shù)據(jù)和操作數(shù)據(jù)的代碼。而Struct在大多數(shù)編程語(yǔ)言中是值類(lèi)型,它自身存儲(chǔ)數(shù)據(jù),并且自身復(fù)制傳遞。因此,Class為引用類(lèi)型,可以被實(shí)例化,存儲(chǔ)實(shí)際的引用;Struct為值類(lèi)型,自身存儲(chǔ)數(shù)據(jù)數(shù)據(jù)。這個(gè)答案符合C++、Java等面向?qū)ο缶幊陶Z(yǔ)言中的概念。

54.synchronized和Lock有什么區(qū)別?正確答案:1、synchronized可以給類(lèi)、方法、代碼塊加鎖;而lock只能給代碼塊加鎖。2、synchronized不需要手動(dòng)獲取鎖和釋放鎖,使用簡(jiǎn)單,發(fā)生異常會(huì)自動(dòng)釋放鎖,不會(huì)造成死鎖;而lock需要自己加鎖和釋放鎖,如果使用不當(dāng)沒(méi)有unLock()去釋放鎖就會(huì)造成死鎖。3、通過(guò)Lock可以知道有沒(méi)有成功獲取鎖,而synchronized卻無(wú)法辦到。解析:Class是面向?qū)ο缶幊陶Z(yǔ)言中的一種數(shù)據(jù)類(lèi)型,它表示一個(gè)對(duì)象,可以被實(shí)例化,即創(chuàng)建其自身的副本。它主要用于封裝數(shù)據(jù)和操作數(shù)據(jù)的代碼。而Struct在大多數(shù)編程語(yǔ)言中是值類(lèi)型,它自身存儲(chǔ)數(shù)據(jù),并且自身復(fù)制傳遞。因此,Class為引用類(lèi)型,可以被實(shí)例化,存儲(chǔ)實(shí)際的引用;Struct為值類(lèi)型,自身存儲(chǔ)數(shù)據(jù)數(shù)據(jù)。這個(gè)答案符合C++、Java等面向?qū)ο缶幊陶Z(yǔ)言中的概念。

55.synchronized和ReentrantLock區(qū)別是什么?正確答案:synchronized早期的實(shí)現(xiàn)比較低效,對(duì)比ReentrantLock,大多數(shù)場(chǎng)景性能都相差較大,但是在java6中對(duì)synchronized進(jìn)行了非常多的改進(jìn)。

主要區(qū)別如下:1、ReentrantLock使用起來(lái)比較靈活,但是必須有釋放鎖的配合動(dòng)作;2、ReentrantLock必須手動(dòng)獲取與釋放鎖,而synchronized不需要手動(dòng)釋放和開(kāi)啟鎖;3、ReentrantLock只適用于代碼塊鎖,而synchronized可用于修飾方法、代碼塊等。4、volatile標(biāo)記的變量不會(huì)被編譯器優(yōu)化;synchronized標(biāo)記的變量可以被編譯器優(yōu)化。解析:Class是面向?qū)ο缶幊陶Z(yǔ)言中的一種數(shù)據(jù)類(lèi)型,它表示一個(gè)對(duì)象,可以被實(shí)例化,即創(chuàng)建其自身的副本。它主要用于封裝數(shù)據(jù)和操作數(shù)據(jù)的代碼。而Struct在大多數(shù)編程語(yǔ)言中是值類(lèi)型,它自身存儲(chǔ)數(shù)據(jù),并且自身復(fù)制傳遞。因此,Class為引用類(lèi)型,可以被實(shí)例化,存儲(chǔ)實(shí)際的引用;Struct為值類(lèi)型,自身存儲(chǔ)數(shù)據(jù)數(shù)據(jù)。這個(gè)答案符合C++、Java等面向?qū)ο缶幊陶Z(yǔ)言中的概念。

56.說(shuō)一下atomic的原理?正確答案:atomic主要利用CAS(CompareAndWwap)和volatile和native方法來(lái)保證原子操作,從而避免synchronized的高開(kāi)銷(xiāo),執(zhí)行效率大為提升。解析:暫無(wú)解析

57.什么是反射?正確答案:反射是在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類(lèi),都能夠知道這個(gè)類(lèi)的所有屬性和方法;對(duì)于任意一個(gè)對(duì)象,都能夠調(diào)用它的任意一個(gè)方法和屬性;這種動(dòng)態(tài)獲取的信息以及動(dòng)態(tài)調(diào)用對(duì)象的方法的功能稱(chēng)為java語(yǔ)言的反射機(jī)制。解析:這道題核心考察對(duì)反射相關(guān)概念的理解。填空“反射弧”,意義在于強(qiáng)調(diào)反射實(shí)現(xiàn)的結(jié)構(gòu)基礎(chǔ),是理解反射機(jī)制的關(guān)鍵要點(diǎn),能準(zhǔn)確反映出這一重要知識(shí)點(diǎn)。

58.什么是java序列化?什么情況下需要序列化?正確答案:java序列化是為了保存各種對(duì)象在內(nèi)存中的狀態(tài),并且可以把保存的對(duì)象狀態(tài)再讀出來(lái)。

以下情況需要使用java序列化:1、想把的內(nèi)存中的對(duì)象狀態(tài)保存到一個(gè)文件中或者數(shù)據(jù)庫(kù)中時(shí)候;2、想用套接字在網(wǎng)絡(luò)上傳送對(duì)象的時(shí)候;3、想通過(guò)RMI(遠(yuǎn)程方法調(diào)用)傳輸對(duì)象的時(shí)候。解析:暫無(wú)解析

59.動(dòng)態(tài)代理是什么?有哪些應(yīng)用?正確答案:動(dòng)態(tài)代理是運(yùn)行時(shí)動(dòng)態(tài)生成代理類(lèi)。

動(dòng)態(tài)代理的應(yīng)用有springaop、hibernate數(shù)據(jù)查詢(xún)、測(cè)試框架的后端mock、rpc,java注解對(duì)象獲取等。解析:暫無(wú)解析

60.怎么實(shí)現(xiàn)動(dòng)態(tài)代理?正確答案:jdk原生動(dòng)態(tài)代理和cglib動(dòng)態(tài)代理。jdk原生動(dòng)態(tài)代理是基于接口實(shí)現(xiàn)的,而cglib是基于繼承當(dāng)前類(lèi)的子類(lèi)實(shí)現(xiàn)的。解析:暫無(wú)解析

61.為什么要使用克???正確答案:克隆的對(duì)象可能包含一些已經(jīng)修改過(guò)的屬性,而new出來(lái)的對(duì)象的屬性都還是初始化時(shí)候的值,所以當(dāng)需要一個(gè)新的對(duì)象來(lái)保存當(dāng)前對(duì)象的“狀態(tài)”就靠克隆方法了。解析:暫無(wú)解析

62.如何實(shí)現(xiàn)對(duì)象克?。空_答案:1、實(shí)現(xiàn)Cloneable接口并重寫(xiě)Object類(lèi)中的clone()方法。2、實(shí)現(xiàn)Serializable接口,通過(guò)對(duì)象的序列化和反序列化實(shí)現(xiàn)克隆,可以實(shí)現(xiàn)真正的深度克隆。解析:暫無(wú)解析

63.深拷貝和淺拷貝區(qū)別是什么?正確答案:1、淺克?。寒?dāng)對(duì)象被復(fù)制時(shí)只復(fù)制它本身和其中包含的值類(lèi)型的成員變量,而引用類(lèi)型的成員對(duì)象并沒(méi)有復(fù)制。2、深克?。撼藢?duì)象本身被復(fù)制外,對(duì)象所包含的所有成員變量也將復(fù)制。解析:暫無(wú)解析

64.jsp和servlet有什么區(qū)別?正確答案:jsp是servlet技術(shù)的擴(kuò)展,本質(zhì)上就是servlet的簡(jiǎn)易方式。servlet和jsp最主要的不同點(diǎn)在于,servlet的應(yīng)用邏輯是在java文件中,并且完全從表示層中的html里分離開(kāi)來(lái),而jsp的情況是java和html可以組合成一個(gè)擴(kuò)展名為jsp的文件。jsp側(cè)重于視圖,servlet主要用于控制邏輯。解析:Class是面向?qū)ο缶幊陶Z(yǔ)言中的一種數(shù)據(jù)類(lèi)型,它表示一個(gè)對(duì)象,可以被實(shí)例化,即創(chuàng)建其自身的副本。它主要用于封裝數(shù)據(jù)和操作數(shù)據(jù)的代碼。而Struct在大多數(shù)編程語(yǔ)言中是值類(lèi)型,它自身存儲(chǔ)數(shù)據(jù),并且自身復(fù)制傳遞。因此,Class為引用類(lèi)型,可以被實(shí)例化,存儲(chǔ)實(shí)際的引用;Struct為值類(lèi)型,自身存儲(chǔ)數(shù)據(jù)數(shù)據(jù)。這個(gè)答案符合C++、Java等面向?qū)ο缶幊陶Z(yǔ)言中的概念。

65.jsp有哪些內(nèi)置對(duì)象?作用分別是什么?正確答案:jsp有9大內(nèi)置對(duì)象:

Request:封裝客戶(hù)端的請(qǐng)求,其中包含來(lái)自get或post請(qǐng)求的參數(shù);

Response:封裝服務(wù)器對(duì)客戶(hù)端的響應(yīng);

PageContext:通過(guò)該對(duì)象可以獲取其他對(duì)象;

Session:封裝用戶(hù)會(huì)話(huà)的對(duì)象;

Application:封裝服務(wù)器運(yùn)行環(huán)境的對(duì)象;

Out:輸出服務(wù)器響應(yīng)的輸出流對(duì)象;

Config:web應(yīng)用的配置對(duì)象;

Page:jsp頁(yè)面本身(相當(dāng)于java程序中的this);

Exception:封裝頁(yè)面拋出異常的對(duì)象。解析:暫無(wú)解析

66.說(shuō)一下jsp的4種作用域?正確答案:1、page:代表與一個(gè)頁(yè)面相關(guān)的對(duì)象和屬性。2、request:代表與客戶(hù)端發(fā)出的一個(gè)請(qǐng)求相關(guān)的對(duì)象和屬性。一個(gè)請(qǐng)求可能跨越多個(gè)頁(yè)面,涉及多個(gè)web組件;需要在頁(yè)面顯示的臨時(shí)數(shù)據(jù)可以置于此作用域。3、session:代表與某個(gè)用戶(hù)與服務(wù)器建立的一次會(huì)話(huà)相關(guān)的對(duì)象和屬性。跟某個(gè)用戶(hù)相關(guān)的數(shù)據(jù)應(yīng)該放在用戶(hù)自己的session中。4、application:代表與整個(gè)web應(yīng)用程序相關(guān)的對(duì)象和屬性,它實(shí)質(zhì)上是跨越整個(gè)web應(yīng)用程序,包括多個(gè)頁(yè)面、請(qǐng)求和會(huì)話(huà)的一個(gè)全局作用域。解析:暫無(wú)解析

67.session和cookie有什么區(qū)別?正確答案:1、存儲(chǔ)位置不同:session存儲(chǔ)在服務(wù)器端;cookie存儲(chǔ)在瀏覽器端。2、安全性不同:cookie安全性一般,在瀏覽器存儲(chǔ),可以被偽造和修改。3、容量和個(gè)數(shù)限制:cookie有容量限制,每個(gè)站點(diǎn)下的cookie也有個(gè)數(shù)限制。4、存儲(chǔ)的多樣性:session可以存儲(chǔ)在redis中、數(shù)據(jù)庫(kù)中、應(yīng)用程序中;而cookie只能存儲(chǔ)在瀏覽器中。解析:Class是面向?qū)ο缶幊陶Z(yǔ)言中的一種數(shù)據(jù)類(lèi)型,它表示一個(gè)對(duì)象,可以被實(shí)例化,即創(chuàng)建其自身的副本。它主要用于封裝數(shù)據(jù)和操作數(shù)據(jù)的代碼。而Struct在大多數(shù)編程語(yǔ)言中是值類(lèi)型,它自身存儲(chǔ)數(shù)據(jù),并且自身復(fù)制傳遞。因此,Class為引用類(lèi)型,可以被實(shí)例化,存儲(chǔ)實(shí)際的引用;Struct為值類(lèi)型,自身存儲(chǔ)數(shù)據(jù)數(shù)據(jù)。這個(gè)答案符合C++、Java等面向?qū)ο缶幊陶Z(yǔ)言中的概念。

68.說(shuō)一下session的工作原理?正確答案:session的工作原理是客戶(hù)端登錄完成之后,服務(wù)器會(huì)創(chuàng)建對(duì)應(yīng)的session,session創(chuàng)建完之后,會(huì)把session的id發(fā)送給客戶(hù)端,客戶(hù)端再存儲(chǔ)到瀏覽器中。這樣客戶(hù)端每次訪(fǎng)問(wèn)服務(wù)器時(shí),都會(huì)帶著sessionid,服務(wù)器拿到sessionid之后,在內(nèi)存找到與之對(duì)應(yīng)的session這樣就可以正常工作了。解析:暫無(wú)解析

69.如果客戶(hù)端禁止cookie能實(shí)現(xiàn)session還能用嗎?正確答案:可以用,session只是依賴(lài)cookie存儲(chǔ)sessionid,如果cookie被禁用了,可以使用url中添加sessionid的方式保證session能正常使用。‘解析:暫無(wú)解析

70.springmvc和struts的區(qū)別是什么?正確答案:1、攔截級(jí)別:struts2是類(lèi)級(jí)別的攔截;springmvc是方法級(jí)別的攔截。2、數(shù)據(jù)獨(dú)立性:springmvc的方法之間基本上獨(dú)立的,獨(dú)享request和response數(shù)據(jù),請(qǐng)求數(shù)據(jù)通過(guò)參數(shù)獲取,處理結(jié)果通過(guò)ModelMap交回給框架,方法之間不共享變量;而struts2雖然方法之間也是獨(dú)立的,但其所有action變量是共享的,這不會(huì)影響程序運(yùn)行,卻給我們編碼和讀程序時(shí)帶來(lái)了一定的麻煩。3、攔截機(jī)制:struts2有以自己的interceptor機(jī)制,springmvc用的是獨(dú)立的aop方式,這樣導(dǎo)致struts2的配置文件量比springmvc大。4、對(duì)ajax的支持:springmvc集成了ajax,所有ajax使用很方便,只需要一個(gè)注解@ResponseBody就可以實(shí)現(xiàn)了;而struts2一般需要安裝插件或者自己寫(xiě)代碼才行。解析:Class是面向?qū)ο缶幊陶Z(yǔ)言中的一種數(shù)據(jù)類(lèi)型,它表示一個(gè)對(duì)象,可以被實(shí)例化,即創(chuàng)建其自身的副本。它主要用于封裝數(shù)據(jù)和操作數(shù)據(jù)的代碼。而Struct在大多數(shù)編程語(yǔ)言中是值類(lèi)型,它自身存儲(chǔ)數(shù)據(jù),并且自身復(fù)制傳遞。因此,Class為引用類(lèi)型,可以被實(shí)例化,存儲(chǔ)實(shí)際的引用;Struct為值類(lèi)型,自身存儲(chǔ)數(shù)據(jù)數(shù)據(jù)。這個(gè)答案符合C++、Java等面向?qū)ο缶幊陶Z(yǔ)言中的概念。

71.如何避免sql注入?正確答案:1、使用預(yù)處理PreparedStatement。2、使用正則表達(dá)式過(guò)濾掉字符中的特殊字符。解析:暫無(wú)解析

72.什么是XSS攻擊,如何避免?正確答案:XSS攻擊:即跨站腳本攻擊,它是web程序中常見(jiàn)的漏洞。原理是攻擊者往web頁(yè)面里插入惡意的腳本代碼(css代碼、javascript代碼等),當(dāng)用戶(hù)瀏覽該頁(yè)面時(shí),嵌入其中的腳本代碼會(huì)被執(zhí)行,從而達(dá)到惡意攻擊用戶(hù)的目的,如盜取用戶(hù)cookie、破壞頁(yè)面結(jié)構(gòu)、重定向到其他網(wǎng)站等。

預(yù)防XSS的核心是必須對(duì)輸入的數(shù)據(jù)做過(guò)濾處理。解析:暫無(wú)解析

73.什么是CSRF攻擊,如何避免?正確答案:CSRF:Cross-SiteRequestForgery(中文:跨站請(qǐng)求偽造),可以理解為攻擊者盜用了你的身份,以你的名義發(fā)送惡意請(qǐng)求,比如:以你名義發(fā)送郵件、發(fā)消息、購(gòu)買(mǎi)商品,虛擬貨幣轉(zhuǎn)賬等。

防御手段:1、驗(yàn)證請(qǐng)求來(lái)源地址;2、關(guān)鍵操作添加驗(yàn)證碼;3、在請(qǐng)求地址添加token并驗(yàn)證。解析:暫無(wú)解析

74.throw和throws的區(qū)別?正確答案:1、throw:是真實(shí)拋出一個(gè)異常。2、throws:是聲明可能會(huì)拋出一個(gè)異常。解析:Class是面向?qū)ο缶幊陶Z(yǔ)言中的一種數(shù)據(jù)類(lèi)型,它表示一個(gè)對(duì)象,可以被實(shí)例化,即創(chuàng)建其自身的副本。它主要用于封裝數(shù)據(jù)和操作數(shù)據(jù)的代碼。而Struct在大多數(shù)編程語(yǔ)言中是值類(lèi)型,它自身存儲(chǔ)數(shù)據(jù),并且自身復(fù)制傳遞。因此,Class為引用類(lèi)型,可以被實(shí)例化,存儲(chǔ)實(shí)際的引用;Struct為值類(lèi)型,自身存儲(chǔ)數(shù)據(jù)數(shù)據(jù)。這個(gè)答案符合C++、Java等面向?qū)ο缶幊陶Z(yǔ)言中的概念。

75.final、finally、finalize有什么區(qū)別?正確答案:final:是修飾符,如果修飾類(lèi),此類(lèi)不能被繼承;如果修飾方法和變量,則表示此方法和此變量不能在被改變,只能使用。

Finally:是try{}catch{}finally{}最后一部分,表示不論發(fā)生任何情況都會(huì)執(zhí)行,finally部分可以省略,但如果finally部分存在,則一定會(huì)執(zhí)行finally里面的代碼。

Finalize:是Object類(lèi)的一個(gè)方法,在垃圾收集器執(zhí)行的時(shí)候會(huì)調(diào)用被回收對(duì)象的此方法。解析:Class是面向?qū)ο缶幊陶Z(yǔ)言中的一種數(shù)據(jù)類(lèi)型,它表示一個(gè)對(duì)象,可以被實(shí)例化,即創(chuàng)建其自身的副本。它主要用于封裝數(shù)據(jù)和操作數(shù)據(jù)的代碼。而Struct在大多數(shù)編程語(yǔ)言中是值類(lèi)型,它自身存儲(chǔ)數(shù)據(jù),并且自身復(fù)制傳遞。因此,Class為引用類(lèi)型,可以被實(shí)例化,存儲(chǔ)實(shí)際的引用;Struct為值類(lèi)型,自身存儲(chǔ)數(shù)據(jù)數(shù)據(jù)。這個(gè)答案符合C++、Java等面向?qū)ο缶幊陶Z(yǔ)言中的概念。

76.try-catch-finally中哪個(gè)部分可以省略?正確答案:try-catch-finally其中catch和finally都可以被省略,但是不能同時(shí)省略,也就是說(shuō)有try的時(shí)候,必須后面跟一個(gè)catch或者finally。解析:暫無(wú)解析

77.try-catch-finally中,如果catch中return了,finally還會(huì)執(zhí)行嗎?正確答案:finally一定會(huì)執(zhí)行,即使是catch中return了,catch中的return會(huì)等f(wàn)inally中的代碼執(zhí)行完之后,才會(huì)執(zhí)行。解析:這道題考察行政訴訟后的執(zhí)行知識(shí)點(diǎn)。填空一考執(zhí)行依據(jù),即法院的裁判和調(diào)解協(xié)議;填空二考執(zhí)行主體,即第一審法院;填空三考執(zhí)行措施,包括直接劃撥款項(xiàng)和向被告上一級(jí)機(jī)關(guān)或監(jiān)察機(jī)關(guān)提出司法建議。

78.常見(jiàn)的異常類(lèi)有哪些?正確答案:1、NullPointerException空指針異常2、ClassNotFoundException指定類(lèi)不存在3、NumberFormatException字符串轉(zhuǎn)換為數(shù)字異常4、IndexOutOfBoundsException數(shù)組下標(biāo)越界異常5、ClassCastException數(shù)據(jù)類(lèi)型轉(zhuǎn)換異常6、FileNotFoundException文件未找到異常7、NoSuchMethodException方法不存在異常8、IOExceptionIO異常9、SocketExceptionSocket異常解析:暫無(wú)解析

79.http響應(yīng)碼301和302代表的是什么?有什么區(qū)別?正確答案:301:永久重定向。

302:暫時(shí)重定向。

它們的區(qū)別是,301對(duì)搜索引擎優(yōu)化(SEO)更加有利;302有被提示為網(wǎng)絡(luò)攔截的風(fēng)險(xiǎn)。解析:暫無(wú)解析

80.forward和redirect的區(qū)別?正確答案:forward是轉(zhuǎn)發(fā)和redirect是重定向:1、地址欄url顯示:fowardurl不會(huì)發(fā)生改變,redirecturl會(huì)發(fā)生改變;2、數(shù)據(jù)共享:forward可以共享request里的數(shù)據(jù),redirect不能共享;3、效率:forward比redirect效率高。解析:Class是面向?qū)ο缶幊陶Z(yǔ)言中的一種數(shù)據(jù)類(lèi)型,它表示一個(gè)對(duì)象,可以被實(shí)例化,即創(chuàng)建其自身的副本。它主要用于封裝數(shù)據(jù)和操作數(shù)據(jù)的代碼。而Struct在大多數(shù)編程語(yǔ)言中是值類(lèi)型,它自身存儲(chǔ)數(shù)據(jù),并且自身復(fù)制傳遞。因此,Class為引用類(lèi)型,可以被實(shí)例化,存儲(chǔ)實(shí)際的引用;Struct為值類(lèi)型,自身存儲(chǔ)數(shù)據(jù)數(shù)據(jù)。這個(gè)答案符合C++、Java等面向?qū)ο缶幊陶Z(yǔ)言中的概念。

81.簡(jiǎn)述tcp和udp的區(qū)別?正確答案:tcp和udp是OSI模型中的運(yùn)輸層中的協(xié)議。tcp提供可靠的通信傳輸,而udp則常被用于讓廣播和細(xì)節(jié)控制交給應(yīng)用的通信傳輸。兩者的區(qū)別大致如下:1、tcp面向連接,udp面向非連接即發(fā)送數(shù)據(jù)前不需要建立鏈接;2、tcp提供可靠的服務(wù)(數(shù)據(jù)傳輸),udp無(wú)法保證;3、tcp面向字節(jié)流,udp面向報(bào)文;4、tcp數(shù)據(jù)傳輸慢,udp數(shù)據(jù)傳輸快;解析:暫無(wú)解析

82.tcp為什么要三次握手,兩次不行嗎?為什么?正確答案:如果采用兩次握手,那么只要服務(wù)器發(fā)出確認(rèn)數(shù)據(jù)包就會(huì)建立連接,但由于客戶(hù)端此時(shí)并未響應(yīng)服務(wù)器端的請(qǐng)求,那此時(shí)服務(wù)器端就會(huì)一直在等待客戶(hù)端,這樣服務(wù)器端就白白浪費(fèi)了一定的資源。若采用三次握手,服務(wù)器端沒(méi)有收到來(lái)自客戶(hù)端的再此確認(rèn),則就會(huì)知道客戶(hù)端并沒(méi)有要求建立請(qǐng)求,就不會(huì)浪費(fèi)服務(wù)器的資源。解析:暫無(wú)解析

83.說(shuō)一下tcp粘包是怎么產(chǎn)生的?正確答案:tcp粘包可能發(fā)生在發(fā)送端或者接收端,分別來(lái)看兩端各種產(chǎn)生粘包的原因:1、發(fā)送端粘包:發(fā)送端需要等緩沖區(qū)滿(mǎn)才發(fā)送出去,造成粘包;2、接收方粘包:接收方不及時(shí)接收緩沖區(qū)的包,造成多個(gè)包接收。解析:暫無(wú)解析

84.OSI的七層模型都有哪些?正確答案:1、物理層:利用傳輸介質(zhì)為數(shù)據(jù)鏈路層提供物理連接,實(shí)現(xiàn)比特流的透明傳輸。2、數(shù)據(jù)鏈路層:負(fù)責(zé)建立和管理節(jié)點(diǎn)間的鏈路。3、網(wǎng)絡(luò)層:通過(guò)路由選擇算法,為報(bào)文或分組通過(guò)通信子網(wǎng)選擇最適當(dāng)?shù)穆窂健?、傳輸層:向用戶(hù)提供可靠的端到端的差錯(cuò)和流量控制,保證報(bào)文的正確傳輸。5、會(huì)話(huà)層:向兩個(gè)實(shí)體的表示層提供建立和使用連接的方法。6、表示層:處理用戶(hù)信息的表示問(wèn)題,如編碼、數(shù)據(jù)格式轉(zhuǎn)換和加密解密等。7、應(yīng)用層:直接向用戶(hù)提供服務(wù),完成用戶(hù)希望在網(wǎng)絡(luò)上完成的各種工作。解析:這道題考察的是OSI七層模型的基本知識(shí)。每個(gè)填空對(duì)應(yīng)模型的一層,依次是:物理層負(fù)責(zé)物理連接;數(shù)據(jù)鏈路層處理節(jié)點(diǎn)間數(shù)據(jù)傳輸;網(wǎng)絡(luò)層負(fù)責(zé)數(shù)據(jù)包的路由;傳輸層確保數(shù)據(jù)傳輸?shù)目煽啃?;?huì)話(huà)層管理用戶(hù)會(huì)話(huà);表示層處理數(shù)據(jù)的表示方式;應(yīng)用層為應(yīng)用程序提供網(wǎng)絡(luò)服務(wù)。

85.get和post請(qǐng)求有哪些區(qū)別?正確答案:1、get請(qǐng)求會(huì)被瀏覽器主動(dòng)緩存,而post不會(huì)。2、get傳遞參數(shù)有大小限制,而post沒(méi)有。3、post參數(shù)傳輸更安全,get的參數(shù)會(huì)明文限制在url上,post不會(huì)。解析:1.考察對(duì)兩種請(qǐng)求獲取和傳送數(shù)據(jù)方式的理解。2.關(guān)注參數(shù)顯示位置及可見(jiàn)性的差異。3.強(qiáng)調(diào)安全性方面的不同,綜合評(píng)判對(duì)Get和Post請(qǐng)求的掌握。

86.如何實(shí)現(xiàn)跨域?正確答案:實(shí)現(xiàn)跨域有以下幾種方案:1、服務(wù)器端運(yùn)行跨域設(shè)置CORS等于*;2、在單個(gè)接口使用注解@CrossOrigin運(yùn)行跨域;3、使用jsonp跨域;解析:暫無(wú)解析

87.說(shuō)一下JSONP實(shí)現(xiàn)原理?正確答案:jsonp:JSONwithPadding,它是利用<script>標(biāo)簽的src連接可以訪(fǎng)問(wèn)不同源的特性,加載遠(yuǎn)程返回的“JS函數(shù)”來(lái)執(zhí)行的。解析:暫無(wú)解析

88.說(shuō)一下你熟悉的設(shè)計(jì)模式?正確答案:單例模式:保證被創(chuàng)建一次,節(jié)省系統(tǒng)開(kāi)銷(xiāo)。

工廠(chǎng)模式(簡(jiǎn)單工廠(chǎng)、抽象工廠(chǎng)):解耦代碼。

觀(guān)察者模式:定義了對(duì)象之間的一對(duì)多的依賴(lài),這樣一來(lái),當(dāng)一個(gè)對(duì)象改變時(shí),它的所有的依賴(lài)者都會(huì)收到通知并自動(dòng)更新。

外觀(guān)模式:提供一個(gè)統(tǒng)一的接口,用來(lái)訪(fǎng)問(wèn)子系統(tǒng)中的一群接口,外觀(guān)定義了一個(gè)高層的接口,讓子系統(tǒng)更容易使用。

模版方法模式:定義了一個(gè)算法的骨架,而將一些步驟延遲到子類(lèi)中,模版方法使得子類(lèi)可以在不改變算法結(jié)構(gòu)的情況下,重新定義算法的步驟。

狀態(tài)模式:允許對(duì)象在內(nèi)部狀態(tài)改變時(shí)改變它的行為,對(duì)象看起來(lái)好像修改了它的類(lèi)。解析:暫無(wú)解析

89.簡(jiǎn)單工廠(chǎng)和抽象工廠(chǎng)有什么區(qū)別?正確答案:簡(jiǎn)單工廠(chǎng):用來(lái)生產(chǎn)同一等級(jí)結(jié)構(gòu)中的任意產(chǎn)品,對(duì)于增加新的產(chǎn)品,無(wú)能為力。

工廠(chǎng)方法:用來(lái)生產(chǎn)同一等級(jí)結(jié)構(gòu)中的固定產(chǎn)品,支持增加任意產(chǎn)品。

抽象工廠(chǎng):用來(lái)生產(chǎn)不同產(chǎn)品族的全部產(chǎn)品,對(duì)于增加新的產(chǎn)品,無(wú)能為力;支持增加產(chǎn)品族。解析:暫無(wú)解析

90.為什么要使用spring?正確答案:spring提供ioc技術(shù),容器會(huì)幫你管理依賴(lài)的對(duì)象,從而不需要自己創(chuàng)建和管理依賴(lài)對(duì)象了,更輕松的實(shí)現(xiàn)了程序的解耦。

Spring提供了事務(wù)支持,使得事務(wù)操作變的更加方便。

Spring提供了面向切片編程,這樣可以更方便的處理某一類(lèi)的問(wèn)題。

更方便的框架集成,spring可以很方便的集成其他框架,比如mybatis、hibernate等。解析:此題考察的是對(duì)某具體知識(shí)點(diǎn)或概念的應(yīng)用。雖然題干信息有限,但'C'作為答案,通常指向特定的選擇或操作,如編程語(yǔ)言中的某個(gè)關(guān)鍵字、數(shù)學(xué)中的常數(shù)等。具體意義需結(jié)合上下文或相關(guān)領(lǐng)域知識(shí)解析。

91.解釋一下什么是aop?正確答案:aop是面向切面編程,通過(guò)預(yù)編譯方式和運(yùn)行期動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù)。

簡(jiǎn)單來(lái)說(shuō)就是統(tǒng)一處理某一“切面”(類(lèi))的問(wèn)題的編程思想,比如統(tǒng)一處理日志、異常等。解析:暫無(wú)解析

92.解釋一下什么是ioc?正確答案:ioc:InversionofControl(中文:控制反轉(zhuǎn))是spring的核心,對(duì)于spring框架來(lái)說(shuō),就是由spring來(lái)負(fù)責(zé)控制對(duì)象的生命周期和對(duì)象間的關(guān)系。

簡(jiǎn)單來(lái)說(shuō),控制指的是當(dāng)前對(duì)象對(duì)內(nèi)部成員的控制權(quán);控制反轉(zhuǎn)指的是,這種控制權(quán)不由當(dāng)前對(duì)象管理了,由其他(類(lèi),第三方容器)來(lái)管理。解析:暫無(wú)解析

93.spring有哪些主要模塊?正確答案:springcore:框架的最基礎(chǔ)部分,提供ioc和依賴(lài)注入特性。

Springcontext:構(gòu)建于core封裝包基礎(chǔ)上的context封裝包,提供了一種框架式的對(duì)象訪(fǎng)問(wèn)方法。

Springdao:DataAccessObject提供了JDBC的抽象層。

Springaop:提供了面向切面的編程實(shí)現(xiàn),讓你可以自定義攔截器、切點(diǎn)等。

Springweb:提供了針對(duì)web開(kāi)發(fā)的集成特性,例如文件上傳,利用servletlisteners進(jìn)行ioc容器初始化和針對(duì)web的ApplicationContext。

Springwebmvc:spring中的mvc封裝包提供了web應(yīng)用的Model-View-Controller(MVC)的實(shí)現(xiàn)。解析:Arc模塊ArcInfo的主要程序環(huán)境,它不但提供了啟動(dòng)其他子模塊的命令,還可進(jìn)行工作區(qū)管理、數(shù)據(jù)管理(如Coverage、TIN、GRID、LATTICE、INFO等)、數(shù)據(jù)轉(zhuǎn)換、投影轉(zhuǎn)換、坐標(biāo)轉(zhuǎn)換、建立拓?fù)潢P(guān)系、修改屬性表結(jié)構(gòu)以及進(jìn)行地理分析等。(2)ArcEdit模塊)交互式的圖形編輯環(huán)境。(3)ArcPlot模塊交互式圖形顯示和制圖環(huán)境,負(fù)責(zé)空間數(shù)據(jù)的顯示、查詢(xún)、分析、制圖等。(4)Tables模塊進(jìn)行INFO數(shù)據(jù)文件的管理和維護(hù)。(5)Librarian模塊地圖數(shù)據(jù)庫(kù)管理系統(tǒng)。

94.spring常用的注入方式有哪些?正確答案:1、setter屬性注入2、構(gòu)造方法注入3、注解方式注入解析:暫無(wú)解析

95.spring中的bean是線(xiàn)程安全的嗎?正確答案:spring中的bean默認(rèn)是單例模式,spring框架并沒(méi)有對(duì)單例bean進(jìn)行多線(xiàn)程的封裝處理。

實(shí)際上大部分時(shí)候springbean無(wú)狀態(tài)的(比如dao類(lèi)),所有某種程度上來(lái)說(shuō)bean也是安全的,但如果bean有狀態(tài)的話(huà)(比如viewmodel對(duì)象),那就要開(kāi)發(fā)者自己去保證線(xiàn)程安全了,最簡(jiǎn)單的就是改變bean的作用域,把“singleton”變更為“prototype”,這樣請(qǐng)求bean相當(dāng)于newBean()了,所以就可以保證線(xiàn)程安全了。1、有狀態(tài)就是有數(shù)據(jù)存儲(chǔ)功能。2、無(wú)狀態(tài)就是不會(huì)保存數(shù)據(jù)。解析:在Java中,線(xiàn)程的優(yōu)先級(jí)范圍是1到10。其中1為最低優(yōu)先級(jí),10為最高優(yōu)先級(jí)。所以線(xiàn)程優(yōu)先級(jí)中,最高是10級(jí)。

96.spring支持幾種bean的作用域?正確答案:spring支持5種作用域,如下:1、singleton:?jiǎn)卫J?,springioc容器中只存在一個(gè)bean實(shí)例,bean以單例模式存在,是系統(tǒng)默認(rèn)值;2、prototype:原型模式,每次從容器調(diào)用bean時(shí)都會(huì)創(chuàng)建一個(gè)新的示例,既每次getBean()相當(dāng)于執(zhí)行newBean()操作;Web環(huán)境下的作用域:(1)request:每次http請(qǐng)求都會(huì)創(chuàng)建一個(gè)bean;3、session:同一個(gè)httpsession共享一個(gè)bean實(shí)例;4、global-session:用于portlet容器,因?yàn)槊總€(gè)portlet有單獨(dú)的session,5、globalsession提供一個(gè)全局性的httpsession。注意:使用prototype作用域需要慎重的思考,因?yàn)轭l繁創(chuàng)建和銷(xiāo)毀bean會(huì)帶來(lái)很大的性能開(kāi)銷(xiāo)。解析:暫無(wú)解析

97.spring自動(dòng)裝配bean有哪些方式?正確答案:1、no:默認(rèn)值,表示沒(méi)有自動(dòng)裝配,應(yīng)使用顯式bean引用進(jìn)行裝配。2、byName:它根據(jù)bean的名稱(chēng)注入對(duì)象依賴(lài)項(xiàng)。3、byType:它根據(jù)類(lèi)型注入對(duì)象依賴(lài)項(xiàng)。4、構(gòu)造函數(shù):通過(guò)構(gòu)造函數(shù)來(lái)注入依賴(lài)項(xiàng),需要設(shè)置大量的參數(shù)。5、autodetect:容器首先通過(guò)構(gòu)造函數(shù)使用autowire裝配,如果不能,則通過(guò)byType自動(dòng)裝配。解析:暫無(wú)解析

98.spring事務(wù)實(shí)現(xiàn)方式有哪些?正確答案:1、聲明式事務(wù):聲明式事務(wù)也有兩種實(shí)現(xiàn)方式,基于xml配置文件的方式和注解方式(在類(lèi)上添加@Transaction注解)。2、編碼方式:提供編碼的形式管理和維護(hù)事務(wù)。解析:暫無(wú)解析

99.說(shuō)一下spring的事務(wù)隔離?正確答案:spring有五大隔離級(jí)別,1、默認(rèn)值為ISOLATION_DEFAULT(使用數(shù)據(jù)庫(kù)的設(shè)置),其他四個(gè)隔離級(jí)別和數(shù)據(jù)庫(kù)的隔離級(jí)別一致:ISOLATION_DEFAULT:用底層數(shù)據(jù)庫(kù)的設(shè)置隔離級(jí)別,數(shù)據(jù)庫(kù)設(shè)置的是什么我就用什么;2、ISOLATION_READ_UNCOMMITTED:未提交讀,最低隔離級(jí)別、事務(wù)未提交前,就可被其他事務(wù)讀?。〞?huì)出現(xiàn)幻讀、臟讀、不可重復(fù)讀);3、ISOLATION_READ_COMMITTED:提交讀,一個(gè)事務(wù)提交后才能被其他事務(wù)讀取到(會(huì)造成幻讀、不可重復(fù)讀),sqlserver的默認(rèn)級(jí)別4、ISOLATION_REPEATABLE_READ:可重復(fù)讀,保證多次讀取同一個(gè)數(shù)據(jù)時(shí),其值都和事務(wù)開(kāi)始時(shí)候的內(nèi)容是一致,禁止讀取到別的事務(wù)未提交的數(shù)據(jù)(會(huì)造成幻讀),mysql的默認(rèn)級(jí)別;5、ISOLATION_SERIALIZABLE:序列化,代價(jià)最高最可靠的隔離級(jí)別,該隔離級(jí)別能防止臟讀、不可重復(fù)讀、幻讀。

臟讀:表示一個(gè)事務(wù)能夠讀取另一個(gè)事務(wù)中還未提交的數(shù)據(jù)。比如,某個(gè)事務(wù)嘗試插入記錄

A,此時(shí)該事務(wù)還未提交,然后另一個(gè)事務(wù)嘗試讀取到了記錄A。

不可重復(fù)讀:是指在一個(gè)事務(wù)內(nèi),多次讀同一數(shù)據(jù)。

幻讀:指同一個(gè)事務(wù)內(nèi)多次查詢(xún)返回的結(jié)果集不一樣。比如同一個(gè)事務(wù)A第一次查詢(xún)時(shí)候有n條記錄,但是第二次同等條件下查詢(xún)卻有n+1條記錄,這就好像產(chǎn)生了幻覺(jué)。發(fā)生幻讀的原因也是另外一個(gè)事務(wù)新增或者刪除或者修改了第一個(gè)事務(wù)結(jié)果集里面的數(shù)據(jù),同一個(gè)記錄的數(shù)據(jù)內(nèi)容被修改了,所有數(shù)據(jù)行的記錄就變多或者變少了。解析:暫無(wú)解析

100.說(shuō)一下springmvc運(yùn)行流程?正確答案:1、springmvc先將請(qǐng)求發(fā)送給DispatcherServlet。2、DispatcherServlet查詢(xún)一個(gè)或多個(gè)HandlerMapping,找到處理請(qǐng)求的Controller。3、DispatcherServlet再把請(qǐng)求提交到對(duì)應(yīng)的Controller。

Controller進(jìn)行業(yè)務(wù)邏輯處理后,會(huì)返回一個(gè)ModelAndView。4、Dispathcher查詢(xún)一個(gè)或多個(gè)ViewResolver視圖解析器,找到ModelAndView對(duì)象指定的視圖對(duì)象。5、視圖對(duì)象負(fù)責(zé)渲染返回給客戶(hù)端。解析:暫無(wú)解析

101.springmvc有哪些組件?正確答案:1、前置控制器DispatcherServlet。2、映射控制器HandlerMapping。2、處理器Controller。4、模型和視圖ModelAndView。5、視圖解析器ViewResolver。解析:IPSAN(IP存儲(chǔ)區(qū)域網(wǎng)絡(luò))是一種基于IP網(wǎng)絡(luò)的存儲(chǔ)架構(gòu)。其組件包括:以太網(wǎng)網(wǎng)線(xiàn)用于傳輸數(shù)據(jù);以太網(wǎng)卡和iSCSIinitiator軟件使主機(jī)能夠與存儲(chǔ)設(shè)備進(jìn)行通信;以太網(wǎng)交換機(jī)用于連接各個(gè)設(shè)備,構(gòu)建網(wǎng)絡(luò)環(huán)境;iSCSI存儲(chǔ)設(shè)備則是實(shí)際提供存儲(chǔ)資源的核心組件。綜上所述,答案為以太網(wǎng)網(wǎng)線(xiàn)、以太網(wǎng)卡和iSCSIinitiator軟件、以太網(wǎng)交換機(jī)、iSCSI存儲(chǔ)設(shè)備。

102.@RequestMapping的作用是什么?正確答案:將http請(qǐng)求映射到相應(yīng)的類(lèi)/方法上。解析:本題暫不支持生成解析

103.@Autowired的作用是什么?正確答案:@Autowired它可以對(duì)類(lèi)成員變量、方法及構(gòu)造函數(shù)進(jìn)行標(biāo)注,完成自動(dòng)裝配的工作,通過(guò)@Autowired的使用來(lái)消除set/get方法。解析:本題暫不支持生成解析

104.什么是springboot?正確答案:springboot是為spring服務(wù)的,是用來(lái)簡(jiǎn)化新spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程的。解析:暫無(wú)解析

105.為什么要用springboot?正確答案:1、配置簡(jiǎn)單2、獨(dú)立運(yùn)行3、自動(dòng)裝配4、無(wú)代碼生成和xml配置5、提供應(yīng)用監(jiān)控6、易上手7、提升開(kāi)發(fā)效率解析:暫無(wú)解析

106.springboot核心配置文件是什么?正確答案:springboot核心的兩個(gè)配置文件:1、bootstrap(.yml或者.properties):boostrap由父ApplicationContext加載的,比applicaton優(yōu)先加載,且boostrap里面的屬性不能被覆蓋;2、application(.yml或者.properties):用于springboot項(xiàng)目的自動(dòng)化配置。解析:MyBatis是一個(gè)優(yōu)秀的持久層框架,它支持定制化SQL、存儲(chǔ)過(guò)程以及高級(jí)映射。MyBatis的核心配置文件用于配置MyBatis的運(yùn)行環(huán)境,包括數(shù)據(jù)庫(kù)連接信息、映射文件位置等關(guān)鍵信息。這個(gè)文件在MyBatis中被稱(chēng)為`mybatis-config.xml`,是MyBatis啟動(dòng)和運(yùn)行的基礎(chǔ)。因此,填空題的正確答案是`mybatis-config.xml`。

107.springboot配置文件有哪幾種類(lèi)型?它們有什么區(qū)別?正確答案:1、配置文件有.properties格式和.yml格式,它們主要的區(qū)別是書(shū)法風(fēng)格不同。2、.yml格式不支持@PropertySource注解導(dǎo)入。解析:.properties配置如下:Spring.rabbitmq.port=5672.yml配置如下:Spring: rabbitmq: port:5672

108.springboot有哪些方式可以實(shí)現(xiàn)熱部署?正確答案:1、使用devtools啟動(dòng)熱部署,添加devtools庫(kù),在配置文件中把spring.devtools.restart.enabled設(shè)置為true;2、使用IntellijIdea編輯器,勾上自動(dòng)編譯或手動(dòng)重新編譯。解析:暫無(wú)解析

109.jpa和hibernate有什么區(qū)別?正確答案:jpa全稱(chēng)JavaPersistenceAPI,是java持久化接口規(guī)范,hibernate屬于jpa的具體實(shí)現(xiàn)。解析:Class是面向?qū)ο缶幊陶Z(yǔ)言中的一種數(shù)據(jù)類(lèi)型,它表示一個(gè)對(duì)象,可以被實(shí)例化,即創(chuàng)建其自身的副本。它主要用于封裝數(shù)據(jù)和操作數(shù)據(jù)的代碼。而Struct在大多數(shù)編程語(yǔ)言中是值類(lèi)型,它自身存儲(chǔ)數(shù)據(jù),并且自身復(fù)制傳遞。因此,Class為引用類(lèi)型,可以被實(shí)例化,存儲(chǔ)實(shí)際的引用;Struct為值類(lèi)型,自身存儲(chǔ)數(shù)據(jù)數(shù)據(jù)。這個(gè)答案符合C++、Java等面向?qū)ο缶幊陶Z(yǔ)言中的概念。

110.什么是springcloud?正確答案:springcloud是一系列框架的有序集合。它利用springboot的開(kāi)發(fā)便利性巧妙地簡(jiǎn)化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開(kāi)發(fā),如服務(wù)發(fā)現(xiàn)注冊(cè)、配置中心、消息總線(xiàn)、負(fù)載均衡、斷路器、數(shù)據(jù)監(jiān)控等,都可以用springboot的開(kāi)發(fā)風(fēng)格做到一鍵啟動(dòng)和部署。解析:暫無(wú)解析

111.springcloud斷路器的作用是什么?正確答案:在分布式架構(gòu)中,斷路器模式的作用也是類(lèi)似的,當(dāng)某個(gè)服務(wù)單元發(fā)生故障(類(lèi)似用電器發(fā)生短路)之后,通過(guò)斷路器的故障監(jiān)控(類(lèi)似熔斷保險(xiǎn)絲),向調(diào)用方返回一個(gè)錯(cuò)誤響應(yīng),而不是長(zhǎng)時(shí)間的等待。這樣就不會(huì)使得線(xiàn)程因調(diào)用故障服務(wù)被長(zhǎng)時(shí)間占用不釋放,避免了故障在分布式系統(tǒng)中的蔓延。解析:核心考點(diǎn)是斷路器的功能?!氨Wo(hù)”體現(xiàn)其對(duì)電路和設(shè)備的安全防護(hù);“控制”表明能對(duì)電路運(yùn)行進(jìn)行管理,這兩個(gè)詞準(zhǔn)確概括了斷路器的主要作用。

112.springcloud的核心組件有哪些?正確答案:1、Eureka:服務(wù)注冊(cè)于發(fā)現(xiàn)。2、Feign:基于動(dòng)態(tài)代理機(jī)制,根據(jù)注解和選擇的機(jī)器,拼接請(qǐng)求url地址,發(fā)起請(qǐng)求。3、Ribbon:實(shí)現(xiàn)負(fù)載均衡,從一個(gè)服務(wù)的多臺(tái)機(jī)器中選擇一臺(tái)。4、Hy

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論