Java日常練習(xí)題,每天進(jìn)步一點點(51)
承蒙各位厚愛,我們一起每天進(jìn)步一點點?。ㄊ髽?biāo)選中空白處查看答案)
1、一個抽象類并不需要其中所有的方法都是抽象的。( )
正確答案: A
正確
錯誤
題解:
1)抽象類可以包括抽象方法和非抽象方法
2)如果類里面有抽象方法的話,那么類一定要聲明為抽象的!
2、下列程序的運(yùn)行結(jié)果
public static void main(String args[]) {
Thread t = new Thread() {
public void run() {
pong();
}
};
t.run();
System.out.print("ping");
}
static void pong() {
System.out.print("pong");
}
正確答案: B
pingpong
pongping
pingpong和pongping都有可能
都不輸出
題解:
這里需要注意Thread的start和run方法
用start方法才能真正啟動線程,此時線程會處于就緒狀態(tài),一旦得到時間片,則會調(diào)用線程的run方法進(jìn)入運(yùn)行狀態(tài)。
而run方法只是普通方法,如果直接調(diào)用run方法,程序只會按照順序執(zhí)行主線程這一個線程。
3、在Java中,關(guān)于HashMap類的描述,以下錯誤的是()?
正確答案: A
HashMap能夠保證其中元素的順序
HashMap允許將null用作值
HashMap允許將null用作鍵
HashMap使用鍵/值得形式保存數(shù)據(jù)
題解:
A.HashMap不能保證元素的順序,而LinkedHashMap可以保持?jǐn)?shù)據(jù)的插入順序,TreeMap可以按照鍵值進(jìn)行排序(可自定比較器)
B.HashMap允許存在多條null值
C.HashMap允許且僅允許一條null鍵
D.Map就是通過鍵/值形式保存數(shù)據(jù)的
4、以下程序的運(yùn)行結(jié)果是:( )
TreeSet<Integer> set = new TreeSet<Integer>();
TreeSet<Integer> subSet = new TreeSet<Integer>();
for(int i=606;i<613;i++){
if(i%2==0){
set.add(i);
}
}
subSet = (TreeSet)set.subSet(608,true,611,true);
set.add(629);
System.out.println(set+" "+subSet);
正確答案: C
編譯失敗
發(fā)生運(yùn)行時異常
[606, 608, 610, 612, 629] [608, 610]
[606, 608, 610, 612, 629] [608, 610,629]
題解:
subset(form,true,to,true)是Treeset的非靜態(tài)方法,該方法返回從form元素到to元素的一個set集合,兩個boolean類型是確認(rèn)是否包含邊境值用的。
subset方法是求set的范圍內(nèi)的子集,兩個true是表示是否包含端點(608和611),故subSet的值為[608,610]
5、下列關(guān)于Java并發(fā)的說法中正確的是()
正確答案: B
CopyOnWriteArrayList適用于寫多讀少的并發(fā)場景
ReadWriteLock適用于讀多寫少的并發(fā)場景
ConcurrentHashMap的寫操作不需要加鎖,讀操作需要加鎖
只要在定義int類型的成員變量i的時候加上volatile關(guān)鍵字,那么多線程并發(fā)執(zhí)行i++這樣的操作的時候就是線程安全的了
題解:
A,CopyOnWriteArrayList適用于寫少讀多的并發(fā)場景
B,ReadWriteLock即為讀寫鎖,他要求寫與寫之間互斥,讀與寫之間互斥,
讀與讀之間可以并發(fā)執(zhí)行。在讀多寫少的情況下可以提高效率
C,ConcurrentHashMap是同步的HashMap,讀寫都加鎖
D,volatile只保證多線程操作的可見性,不保證原子性
6、下面有關(guān)struts1和struts2的區(qū)別,描述錯誤的是?
正確答案: B
Struts1要求Action類繼承一個抽象基類。Struts 2 Action類可以實現(xiàn)一個Action接口
Struts1 Action對象為每一個請求產(chǎn)生一個實例。Struts2 Action是單例模式并且必須是線程安全的
Struts1 Action 依賴于Servlet API,Struts 2 Action不依賴于容器,允許Action脫離容器單獨被測試
Struts1 整合了JSTL,Struts2可以使用JSTL,但是也支持OGNL
題解:
Struts1和Struts2的區(qū)別和對比:
Action 類:
• Struts1要求Action類繼承一個抽象基類。Struts1的一個普遍問題是使用抽象類編程而不是接口,而struts2的Action是接口。
• Struts 2 Action類可以實現(xiàn)一個Action接口,也可實現(xiàn)其他接口,使可選和定制的服務(wù)成為可能。Struts2提供一個ActionSupport基類去 實現(xiàn) 常用的接口。Action接口不是必須的,任何有execute標(biāo)識的POJO對象都可以用作Struts2的Action對象。
線程模式:
• Struts1 Action是單例模式并且必須是線程安全的,因為僅有Action的一個實例來處理所有的請求。單例策略限制了Struts1 Action能作的事,并且要在開發(fā)時特別小心。Action資源必須是線程安全的或同步的。
• Struts2 Action對象為每一個請求產(chǎn)生一個實例,因此沒有線程安全問題。(實際上,servlet容器給每個請求產(chǎn)生許多可丟棄的對象,并且不會導(dǎo)致性能和垃圾回收問題)
Servlet 依賴:
• Struts1 Action 依賴于Servlet API ,因為當(dāng)一個Action被調(diào)用時HttpServletRequest 和 HttpServletResponse 被傳遞給execute方法。
• Struts 2 Action不依賴于容器,允許Action脫離容器單獨被測試。如果需要,Struts2 Action仍然可以訪問初始的request和response。但是,其他的元素減少或者消除了直接訪問HttpServetRequest 和 HttpServletResponse的必要性。
可測性:
• 測試Struts1 Action的一個主要問題是execute方法暴露了servlet API(這使得測試要依賴于容器)。一個第三方擴(kuò)展--Struts TestCase--提供了一套Struts1的模擬對象(來進(jìn)行測試)。
• Struts 2 Action可以通過初始化、設(shè)置屬性、調(diào)用方法來測試,“依賴注入”支持也使測試更容易。
捕獲輸入:
• Struts1 使用ActionForm對象捕獲輸入。所有的ActionForm必須繼承一個基類。因為其他JavaBean不能用作ActionForm,開發(fā)者經(jīng)常創(chuàng)建多余的類捕獲輸入。動態(tài)Bean(DynaBeans)可以作為創(chuàng)建傳統(tǒng)ActionForm的選擇,但是,開發(fā)者可能是在重新描述(創(chuàng)建)已經(jīng)存 在的JavaBean(仍然會導(dǎo)致有冗余的javabean)。
• Struts 2直接使用Action屬性作為輸入屬性,消除了對第二個輸入對象的需求。輸入屬性可能是有自己(子)屬性的rich對象類型。Action屬性能夠通過 web頁面上的taglibs訪問。Struts2也支持ActionForm模式。rich對象類型,包括業(yè)務(wù)對象,能夠用作輸入/輸出對象。這種 ModelDriven 特性簡化了taglib對POJO輸入對象的引用。
表達(dá)式語言:
• Struts1 整合了JSTL,因此使用JSTL EL。這種EL有基本對象圖遍歷,但是對集合和索引屬性的支持很弱。
• Struts2可以使用JSTL,但是也支持一個更強(qiáng)大和靈活的表達(dá)式語言--“Object Graph Notation Language” (OGNL).
Struts2是多例的
7、以下哪一個正則表達(dá)式不能與字符串“https://www.tensorflow.org/”(不含引號)匹配?()
正確答案: B
[a-z]+://[a-z.]+/
https[://]www[.]tensorflow[.]org[/]
[htps]+://www.tensorflow.org/
[a-zA-Z.:/]+
題解:
[]只能匹配一個既定字符,://只能匹配一個。
8、多態(tài)的作用()
正確答案: B C
隱藏細(xì)節(jié)
提高可重用性
擴(kuò)展代碼模塊
提高編譯可靠性
題解:
c++里面也有多態(tài),題目說的多態(tài)并不只限于java中里面的多態(tài),這題不用深究,理解多態(tài)的概念就行。
9、關(guān)于struts項目中的類與MVC模式的對應(yīng)關(guān)系,說法錯誤的是
正確答案: C D
Jsp文件實現(xiàn)視圖View的功能
ActionServlet這一個類是整個struts項目的控制器
ActionForm、Action都屬于Model部分
一個struts項目只能有一個Servlet
題解:
Action是不屬于Model部分的。
不只是有一個
這題有點老了
10、下列哪些方法是針對循環(huán)優(yōu)化進(jìn)行的
正確答案: A B D
強(qiáng)度削弱
刪除歸納變量
刪除多余運(yùn)算
代碼外提
題解:
多余運(yùn)算在編譯期就會自動優(yōu)化
答案匯總:
1、正確答案: A
2、正確答案: B
3、正確答案: A
4、正確答案: C
5、正確答案: B
6、正確答案: B
7、正確答案: B
8、正確答案: B C
9、正確答案: C D
10、正確答案: A B D
總結(jié)
本篇文章就到這里了,希望能給你帶來幫助,也希望你能給多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Mybatis-Plus開發(fā)提速器mybatis-plus-generator-ui詳解
這篇文章主要介紹了Mybatis-Plus開發(fā)提速器mybatis-plus-generator-ui,本文簡要介紹一款基于Mybatis-Plus的代碼自助生成器,文章通過實例集成的方式來詳細(xì)講解mybatis-plus-generator-ui,從相關(guān)概念到實際集成案例,以及具體的擴(kuò)展開發(fā)介紹,需要的朋友可以參考下2022-11-11
Spring Cloud 如何保證微服務(wù)內(nèi)安全
這篇文章主要介紹了Spring Cloud 如何保證微服務(wù)內(nèi)安全的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
Java中Spring使用Quartz任務(wù)調(diào)度定時器
本篇文章主要介紹了Java中Spring使用Quartz任務(wù)調(diào)度定時器,具有一定的參考價值,有興趣的可以了解一下。2017-02-02
IntelliJ IDEA 創(chuàng)建spring boot 的Hello World 項目(圖解)
這篇文章主要介紹了IntelliJ IDEA 創(chuàng)建spring boot 的Hello World 項目的步驟詳解,需要的朋友可以參考下2018-01-01
Java 讀取、獲取配置文件.properties中的數(shù)據(jù)
這篇文章主要介紹了Java 讀取、獲取配置文件.properties中的數(shù)據(jù),本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2018-09-09
mybatis-plus IdWorker生成的Id和返回給前臺的不一致的解決
這篇文章主要介紹了mybatis-plus IdWorker生成的Id和返回給前臺的不一致的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03

